Hallo Community!
Ich habe zum nachstehend beschriebenen Problem bereits einen Thread eröffnet. (http://www.clever-excel-forum.de/thread-9230.html)
Ich eröffne nun einen komplett neuen, da sich die Struktur und die Anforderung teils geändert haben.
Am Ende poste ich jedoch zwei Codes, die hilfreich sein könnten.
Ziel ist es, Kombinationen aus zwei bzw. drei Spalten/ Zahlen in einer Matrix aufzusummieren.
Hier ist einmal die Tabelle.
[url=
Dateiupload bitte im Forum! So geht es: Klick mich!
]
In die erste Matrix, soll die Kombination aus Spalte G und I eingetragen werden, in der zweiten Matrix die Kombination aus Spalte A und Q.
[url=
Dateiupload bitte im Forum! So geht es: Klick mich!
]
Pro Klasse (Spalte E), soll jeweils nur eine Kombination aus A und B1 und A und B2 in die entsprechende Matrix aufsummiert werden.
Folgendes ist hierbei zu beachten:
Besitzt eine Klasse, mehr als eine Zeile, so soll nur jeweils die höchste Kombination eingetragen werden.
Besitzt eine Zeile keine Einträge in J:S, so soll diese überhaupt nicht beachtet werden.
Hier einmal die Vorschläge von snb und atilla:
Beste Grüße
Joshua
	
Ich habe zum nachstehend beschriebenen Problem bereits einen Thread eröffnet. (http://www.clever-excel-forum.de/thread-9230.html)
Ich eröffne nun einen komplett neuen, da sich die Struktur und die Anforderung teils geändert haben.
Am Ende poste ich jedoch zwei Codes, die hilfreich sein könnten.
Ziel ist es, Kombinationen aus zwei bzw. drei Spalten/ Zahlen in einer Matrix aufzusummieren.
Hier ist einmal die Tabelle.
[url=
Dateiupload bitte im Forum! So geht es: Klick mich!
]
In die erste Matrix, soll die Kombination aus Spalte G und I eingetragen werden, in der zweiten Matrix die Kombination aus Spalte A und Q.
[url=
Dateiupload bitte im Forum! So geht es: Klick mich!
]
Pro Klasse (Spalte E), soll jeweils nur eine Kombination aus A und B1 und A und B2 in die entsprechende Matrix aufsummiert werden.
Folgendes ist hierbei zu beachten:
Besitzt eine Klasse, mehr als eine Zeile, so soll nur jeweils die höchste Kombination eingetragen werden.
Besitzt eine Zeile keine Einträge in J:S, so soll diese überhaupt nicht beachtet werden.
Hier einmal die Vorschläge von snb und atilla:
Code:
Sub M_snb()
    sn = Sheet1.Cells(1, 2).CurrentRegion.Resize(, 10)
    Sheet2.Range("C4:G8").ClearContents
    sp = Sheet2.Range("C4:G8")
    sq = sp
    
    For j = 2 To UBound(sn)
       If sn(j, 1) <> sn(1, 2) Then
          If sn(1, 5) <> "" Then
            sp(sn(1, 5), sn(1, 6)) = sp(sn(1, 5), sn(1, 6))+1
            sq(sn(1, 5), sn(1, 7)) = sq(sn(1, 5), sn(1, 7))+1
          End If
          sn(1, 2) = sn(j, 1)
          sn(1, 5) = sn(j, 3)
          sn(1, 6) = sn(j, 4)
          sn(1, 7) = sn(j, 9)
       Else
          If sn(j, 4) > sn(1, 6) Then sn(1, 6) = sn(j, 4)
          If sn(j, 9) > sn(1, 7) Then sn(1, 7) = sn(j, 9)
       End If
    Next
    sp(sn(1, 5), sn(1, 6)) =  sp(sn(1, 5), sn(1, 6))+1
    sq(sn(1, 5), sn(1, 7)) = sq(sn(1, 5), sn(1, 7))+1
    
    Sheet2.Range("C4:G8") = sp
    Sheet2.Range("J4:N8") = sq
End SubCode:
Sub ati_mach()
  Dim i As Long
  Dim gesBereich, b1Bereich, b2Bereich
  Dim b1vonD1, b2vonD2
  Dim varKA
  Dim D1 As Object, D1A As Object
  Dim D2 As Object, D2A As Object
  
  Set D1 = CreateObject("Scripting.Dictionary")
  Set D1A = CreateObject("Scripting.Dictionary")
  Set D2 = CreateObject("Scripting.Dictionary")
  Set D2A = CreateObject("Scripting.Dictionary")
  gesBereich = Sheets("Tabelle1").Range("B2:J30")
  For i = 1 To UBound(gesBereich)
    varKA = gesBereich(i, 1)
    If gesBereich(i, 1) = varKA Then
      If CDbl(gesBereich(i, 3) & gesBereich(i, 4)) > D1(varKA) Then
        D1(varKA) = CDbl(gesBereich(i, 3) & gesBereich(i, 4))
        D1A(varKA) = gesBereich(i, 3) & " " & gesBereich(i, 4)
      End If
    
      If CDbl(gesBereich(i, 3) & gesBereich(i, 9)) > D2(varKA) Then
        D2(varKA) = CDbl(gesBereich(i, 3) & gesBereich(i, 9))
        D2A(varKA) = gesBereich(i, 3) & " " & gesBereich(i, 9)
      End If
    End If
  Next i
    
  With Sheets("Tabelle2").Range("C4:G8")
    .ClearContents
     b1Bereich = .Value
    For Each varKA In D2A.keys
       b1Bereich(Split(D1A(varKA))(0), Split(D1A(varKA))(1)) = b1Bereich(Split(D1A(varKA))(0), Split(D1A(varKA))(1)) + 1
    Next
    .Value = b1Bereich
  End With
  
  If Application.Count(Application.Index(Application.Transpose(gesBereich), 9)) > 0 Then
    With Sheets("Tabelle2").Range("J4:N8")
      .ClearContents
       b2Bereich = .Value
      For Each varKA In D2A.keys
         b2Bereich(Split(D2A(varKA))(0), Split(D2A(varKA))(1)) = b2Bereich(Split(D2A(varKA))(0), Split(D2A(varKA))(1)) + 1
      Next
      .Value = b2Bereich
    End With
  End If
End SubBeste Grüße
Joshua

![[-]](https://www.clever-excel-forum.de/images/collapse.png)