ich versuche aktuell folgende Problemstellung zu lösen und komme leider einfach nicht weiter.
Meine Datenquelle 1 ist wie folgt aufgebaut:
2
2 3
2 4 3
1 2 2 2
2 4 4 2 3
2 4 4 2 4 3
Diese soll mit der Datenquelle 2 abgeglichen werden:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dabei ist eine Summe zu bilden basierend auf der Quelle 1 als Kriterium (1,2,3,4) und darauf aufbauend wird eine Summe alle Werte aus Quelle 2 erzeugt.
Die Ergebnisse sind in separate Zellen auszugeben.
Dafür habe ich mir folgendes überlegt:
Sub SummWenn2()
'Deklarieren Sie die Variablen
Dim Startpunkt As Range 'Der Startpunkt der Daten
Dim Bereich As Range 'Der Bereich, in dem die SummWenn-Funktion angewendet wird
Dim Summe(1 To 4) As Double 'Die Summen der korrespondierenden Werte für jede Zahl von 1 bis 4
Dim Wert As Variant 'Der Wert, der in einem Feld enthalten sein kann
Dim Zeile As Long 'Die aktuelle Zeile
Dim Spalte As Long 'Die aktuelle Spalte
Dim Ergebnis As Range 'Der Bereich, in dem die Ergebnisse angezeigt werden
Dim LetzteZeile As Long 'Die letzte Zeile der Daten
'Initialisieren Sie die Variablen
Set Startpunkt = Range("B2") 'Ändern Sie dies nach Bedarf
Set Bereich = Range("I2:I22") 'Ändern Sie dies nach Bedarf
Set Ergebnis = Range("K2:N2") 'Ändern Sie dies nach Bedarf, so dass es eine Zeile und vier Spalten hat
Zeile = Startpunkt.Row
Spalte = Startpunkt.Column
'Schleife durch die Daten, bis der Startpunkt eine Leerzelle ist
Do While Not IsEmpty(Startpunkt)
'Finden Sie die letzte Zeile der Daten in der aktuellen Spalte
LetzteZeile = Cells(Rows.Count, Spalte).End(xlUp).Row
'Schleife durch die Spalte, bis eine Leerzelle erreicht wird
Do While Not IsEmpty(Cells(Zeile, Spalte))
'Schleife durch die Zahlen von 1 bis 4
For Wert = 1 To 4
'Wenden Sie die SummWenn-Funktion an, um zu überprüfen, ob der Wert in der Zelle enthalten ist
'Beschränken Sie den Bereich auf die Zellen, die den Daten entsprechen
If WorksheetFunction.SumIf(Cells(Zeile, Spalte), Wert, Bereich.Cells(Zeile, 1).Resize(LetzteZeile - Zeile + 1)) > 0 Then
'Merken Sie sich die Zelle und addieren Sie die Summe aus dem korrespondierenden Bereich
Summe(Wert) = Summe(Wert) + WorksheetFunction.SumIf(Cells(Zeile, Spalte), Wert, Bereich.Cells(Zeile, 1).Resize(LetzteZeile - Zeile + 1))
End If
Next Wert
'Gehen Sie zur nächsten Zeile in der Spalte
Zeile = Zeile + 1
Loop
'Springen Sie zum Startpunkt zurück und gehen Sie eine Spalte nach rechts und eine Zeile nach unten
Zeile = Startpunkt.Row + 1
Spalte = Startpunkt.Column + 1
Set Startpunkt = Cells(Zeile, Spalte)
Loop
'Schreiben Sie die Summen in den Ergebnisbereich
For Wert = 1 To 4
'Ändern Sie die Zellen im Ergebnisbereich, so dass sie der aktuellen Spalte entsprechen
Ergebnis.Cells(1, Wert) = Summe(Wert)
Next Wert
End Sub
Leider erhalte ich durchgehend eine falsche Summe:
5 50 20 37
112
Hat hier jemand eine Idee, was ich anpassen muss?
Grüße