Hallo zusammen,
ich versuche gerade ein Makro zu programmieren für den Fall, dass in Tabelle1 mehrere Nummern mit Monat und Wert stehen. In einem zweiten Tabellenblatt (Tabelle2) stehen ebenfalls Nummern mit Monat und Wert. Sofern Nummer und Datum in beiden Blättern identisch sind soll der Wert aus Tabelle1 um den Wert aus Tabelle2 reduziert werden.
Folgende Tabelle als Beispiel
https://www.herber.de/bbs/user/108238.xlsx
Ich habe versucht das über Zwischenwerte zu lösen. Mir war schon klar, dass das evtl. nicht klappt. Nur nun bin ich so erstaunt, weil ich gar nicht nachvollziehen kann, wie mein Makro zu seinen Aktionen kommt. Es werden nun Spalten geleert, das kann ich anhand des Codes überhaupt nicht nachvollziehen.
Habe es dazu geschrieben, wann welche Spalte gelöscht wird.
Würde mich erstmal freuen, wenn mir jemand erklären kann wieso es zu dem Vorgang kommt. Und ansonsten natürlich auch sehr, wenn jemand weiß, wie ich das Problem lösen kann :)
Anbei der Code:
Sub Test()
Dim Monat1 As Range
Dim Nr1 As Range
Dim Wert1 As Range
Dim Monat2 As Range
Dim Nr2 As Range
Dim Wert2 As Range
lr1 = Worksheets("Tabelle1").Cells(Rows.Count, "A").End(xlUp).Row
lr2 = Worksheets("Tabelle2").Cells(Rows.Count, "A").End(xlUp).Row
Set Monat1 = Worksheets("Tabelle1").Columns("C:C")
Set Nr1 = Worksheets("Tabelle1").Columns("A:A")
Set Monat2 = Worksheets("Tabelle2").Columns("B:B")
Set Nr2 = Worksheets("Tabelle2").Columns("A:A")
Set Wert2 = Worksheets("Tabelle2").Columns("C:C")
Set Wert1 = Worksheets("Tabelle1").Columns("D:D")
For i = 2 To lr1
Monat1(i).Value = Monat 'hier löscht er Spalte D, Tabelle1
Nr1(i).Value = Nr 'hier löscht er Spalte B, Tabelle1
Wert1(i).Value = Wert
For j = 2 To lr2
If Monat2(j).Value = Monat And Nr2(j).Value = Nr Then
Wert = Wert - Wert2(j).Value
End If
Next j
Wert1(i).Value = Wert
Next i
End Sub
Danke und Grüße
Taipan