ProblemAlign Reihen Spalte passen
Wie kann man horizontal Werte in separaten Spalten ausrichten, und eine dynamische Formel anwenden? Präventiv danke für jede Hilfe oder Hinweise! Der unten eingefügte Code funktioniert insofern, als er die Hälfte des Endziels erreicht. Aber wie werden die letzten beiden Ziele erreicht?
1) Summe jeder Bereich
2) ausrichten, um die Bereiche horizontal
Ein Probenblech, das Kunden-ID, Position und Preise. Verkauf von Montag auf der linken Seite, Dienstag auf der rechten Seite.
gewünschten Ergebnisse
Align cust id auf Reihen A und E, mit einer zugehörigen Summe. Beachten Sie, wie jede gelbe Zeile die Kundennummer für die Identifizierung sowie die zugehörige Summe enthält.
Bestehende VBA-Code
Sub AlignAndMatch()
'backup sheet
ActiveSheet.Copy after:=Sheets(Sheets.Count)
'Insert rows where current cell <> cell above
Dim i, totalrows As Integer
Dim strRange As String
Dim strRange2 As String
'----------------------------------------
'Monday sort table
Range("A2:C65536").Select
Selection.Sort Key1:=Range("A2:C65536"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'Monday insert loop
totalrows = ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Row
i = 0
Do While i <= totalrows
i = i + 1
strRange = "A" & i
strRange2 = "A" & i + 1
If Range(strRange).Text <> Range(strRange2).Text Then
Range(Cells(i + 1, 1), Cells(i + 2, 3)).Insert xlDown 'think cells ~A1:C2 insert
totalrows = ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Row
i = i + 2 'for insert 2 rows
End If
Loop
'Monday footer row loop
totalrows = ActiveSheet.Range("A65536").End(xlUp).Offset(0, 0).Row
i = 0
Do While i <= totalrows
i = i + 1
If IsEmpty(Range("A" & i).Value) And Not IsEmpty(Range("A" & i + 1).Value) Then
Range("A" & i).Value = Range("A" & i + 1).Value
Range("B" & i).Value = "Sum"
End If
Loop
'----------------------------------------
'Tuesday sort table
Range("E2:G65536").Select
Selection.Sort Key1:=Range("E2:G65536"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'Tuesday insert loop
totalrows = ActiveSheet.Range("E65536").End(xlUp).Offset(0, 0).Row
i = 0
Do While i <= totalrows
i = i + 1
strRange = "E" & i
strRange2 = "E" & i + 1
If Range(strRange).Text <> Range(strRange2).Text Then
Range(Cells(i + 1, 5), Cells(i + 2, 7)).Insert xlDown 'think cells ~A1:C2 insert
totalrows = ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Row
i = i + 2 'for insert 2 rows
End If
Loop
'Tuesday footer row loop
totalrows = ActiveSheet.Range("E65536").End(xlUp).Offset(0, 0).Row
i = 0
Do While i <= totalrows
i = i + 1
If IsEmpty(Range("E" & i).Value) And Not IsEmpty(Range("E" & i + 1).Value) Then
Range("E" & i).Value = Range("E" & i + 1).Value
Range("F" & i).Value = "Sum"
End If
Loop
End Sub
Was haben Sie versucht? Suchen Sie einfach nach einer dynamischen "SUM" Formel, die die folgenden Werte summiert, bis zur ersten leeren Zeile? – BruceWayne
Was ist falsch/wo mit Ihrem bestehenden Code? – pnuts
Der aktuelle Code funktioniert einwandfrei, aber ich habe einfach den einfachen Teil gemacht. Der schwierige Teil besteht darin, die Zeilen so auszurichten, dass alle "cust id" -Werte zwischen den beiden Tabellen sowie diese Summe übereinstimmen. Ich arbeite daran, dynamische SUM, per @BruceWayne Idee zu implementieren. – graphicdezine