ich brauche Hilfe beim Sortieren.

Ich möchte gerne in der linken Tabelle die Anzahl an Kreise, Quadrate und Dreiecke den Kostenstelle aus der Quelle (rechten Tabelle) zuordnen. Bitte um Hilfe.
https://www.herber.de/bbs/user/116776.xls
=ZÄHLENWENNS($G$3:$G$15;$B3;$H$3:$H$15;LINKS($C$2;LÄNGE($C$2)-1))
B | C | D | E | |
2 | Kostenstelle | Kreis/e | Quadrat/e | Dreieck/e |
3 | 10 | 1 | 1 | 1 |
4 | 11 | 1 | 1 | 0 |
5 | 12 | 0 | 1 | 1 |
6 | 13 | 0 | 0 | 1 |
7 | 14 | 1 | 0 | 1 |
8 | 15 | 1 | 1 | 1 |
verwendete Formeln | |||
Zelle | Formel | Bereich | N/A |
C3:E8 | =SUMMENPRODUKT(($G$3:$G$15=$B3)*($H$3:$H$15=C$2)) |
Zahlenformate | ||
Zelle | Format | Wert |
C2 | '@"/e" | Kreis |
D2 | '@"/e" | Quadrat |
E2 | '@"/e" | Dreieck |
http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip |
http://Hajo-Excel.de/tools.htm |
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007 |
Add-In-Version 21.10 einschl. 64 Bit |
'
' diese Version bildet auch doppelte Einträge ab
Public Sub Nach_Kostenstelle_I()
Dim Mydict_Kreise As Object ' das Dictionary der Kreise
Dim Mydict_Quadrate As Object ' das Dictionary der Quadrate
Dim Mydict_Dreiecke As Object ' das Dictionary der Dreiecke
Dim vTemp As Variant ' das temporäre Array der Eingabewerte
Dim vItems As Variant ' das temporäre Array für die Bezeichnung
Dim lZeile As Long ' die Zeile im Array der Eingabewerte
Dim Kostst As Variant ' die Kostenstelle
Set Mydict_Kreise = CreateObject("Scripting.Dictionary") ' die Dictionary Variable _
benennen
Set Mydict_Quadrate = CreateObject("Scripting.Dictionary") ' die Dictionary Variable _
benennen
Set Mydict_Dreiecke = CreateObject("Scripting.Dictionary") ' die Dictionary Variable _
benennen
Application.ScreenUpdating = False ' kein Bildschirm Update zulassen
With ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf. anpassen!
vTemp = .Range("G3:H" & .Cells(.Rows.Count, 7).End(xlUp).Row) ' die Eingabe als Array _
speichern
For lZeile = LBound(vTemp, 1) To UBound(vTemp, 1) ' den Array abarbeiten
If vTemp(lZeile, 2) "" Then ' ist die kostenstelle nicht leer?
Select Case LCase(vTemp(lZeile, 2)) ' die Bezeichnung als Kennzeichen verwenden
Case "kreis"
Mydict_Kreise(vTemp(lZeile, 1) & "##" & vTemp(lZeile, 2)) = _
Mydict_Kreise(vTemp(lZeile, 1) & "##" & vTemp(lZeile, 2)) + 1 ' _
Kostenstelle Werte Kreise ermitteln
Case "quadrat"
Mydict_Quadrate(vTemp(lZeile, 1) & "##" & vTemp(lZeile, 2)) = _
Mydict_Quadrate(vTemp(lZeile, 1) & "##" & vTemp(lZeile, 2)) + 1 ' _
Kostenstelle Werte Quadrate ermitteln
Case "dreieck"
Mydict_Dreiecke(vTemp(lZeile, 1) & "##" & vTemp(lZeile, 2)) = _
Mydict_Dreiecke(vTemp(lZeile, 1) & "##" & vTemp(lZeile, 2)) + 1 ' _
Kostenstelle Werte Dreiecke ermitteln
End Select
End If
Next lZeile ' die nächste Zeile verarbeiten
Range("C3:E8").ClearContents ' die Ausgabespalten löschen
vTemp = Mydict_Kreise.keys ' den Dictionary Array an einen allgemeinen Array übergeben
vItems = Mydict_Kreise.items ' den Dictionary Array an einen allgemeinen Array übergeben
For lZeile = LBound(vTemp) To UBound(vTemp) ' den allgemeinen Array abarbeiten
Kostst = Split(vTemp(lZeile), "##") ' am Wert "##" aufteilen/splitten
Select Case Kostst(0) ' die Kostenstelle abfragen
Case "10": Range("C3").Value = vItems(lZeile) ' den Inhalt des allgemeinen Arrays _
ausgeben
Case "11": Range("C4").Value = vItems(lZeile)
Case "12": Range("C5").Value = vItems(lZeile)
Case "13": Range("C6").Value = vItems(lZeile)
Case "14": Range("C7").Value = vItems(lZeile)
Case "15": Range("C8").Value = vItems(lZeile)
End Select
Next lZeile
vTemp = Mydict_Quadrate.keys
vItems = Mydict_Quadrate.items
For lZeile = LBound(vTemp) To UBound(vTemp)
Kostst = Split(vTemp(lZeile), "##")
Select Case Kostst(0)
Case "10": Range("D3").Value = vItems(lZeile)
Case "11": Range("D4").Value = vItems(lZeile)
Case "12": Range("D5").Value = vItems(lZeile)
Case "13": Range("D6").Value = vItems(lZeile)
Case "14": Range("D7").Value = vItems(lZeile)
Case "15": Range("D8").Value = vItems(lZeile)
End Select
Next lZeile
vTemp = Mydict_Dreiecke.keys
vItems = Mydict_Dreiecke.items
For lZeile = LBound(vTemp) To UBound(vTemp)
Kostst = Split(vTemp(lZeile), "##")
Select Case Kostst(0)
Case "10": Range("E3").Value = vItems(lZeile)
Case "11": Range("E4").Value = vItems(lZeile)
Case "12": Range("E5").Value = vItems(lZeile)
Case "13": Range("E6").Value = vItems(lZeile)
Case "14": Range("E7").Value = vItems(lZeile)
Case "15": Range("E8").Value = vItems(lZeile)
End Select
Next lZeile
End With
Set Mydict_Kreise = Nothing ' die Ressourcen freigeben
Set Mydict_Quadrate = Nothing
Set Mydict_Dreiecke = Nothing
End Sub
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen