2017-07-19 1 views
0

Ich bin immer noch sehr neu in VBA und versuche, meine letzte Spalte (die sich monatlich ändert) mit den Werten in der Spalte davor zu multiplizieren. Was dies (für mich) schwierig macht, ist, dass, sobald dies ausgeführt wird, ich eine weitere Spalte hinzufügen und mit derselben Spalte multiplizieren muss, mit der die vorherige multipliziert wurde. Zum Beispiel: Mein Code führt ein Vlookup in der nächsten verfügbaren Spalte durch, sagen wir, das ist Spalte R. Ich muss dann die Werte in Spalte R mit den Werten in Spalte Q multiplizieren (bis zur letzten Zeile in Spalte R). Ich muss dann ein neues vlookup in Spalte S durchführen, aber immer noch mit den Werten in Q multiplizieren. Auch hier ändern sich die Spalten monatlich. Hier ist mein Code so weit, ich habe es geschafft, die vlookups alles, um herauszufinden, und alles, nur Probleme, meine Spalten mit vorherigen Spalte multipliziert:Excel VBA: Wie multipliziert man die letzte Spalte mit Daten mit der Spalte davor?

Sub vlookup5() 
    Dim SourceLastRow As Long 
    Dim OutputLastRow As Long 
    Dim sourceSheet As Worksheet 
    Dim outputSheet As Worksheet 

    Dim NextColumn As Long 

    Set sourceSheet = Worksheets("Data1") 
    Set outputSheet = Worksheets("Pivot") 
    With sourceSheet 
     SourceLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
    End With 
    With outputSheet 
     NextColumn = .Cells(4, Columns.Count).End(xlToLeft).Column + 1 
     OutputLastRow = .Cells(.Rows.Count, "D").End(xlUp).Row - 1 
     .Range(Cells(4, NextColumn), Cells(OutputLastRow, NextColumn)).Formula = _ 
      "=VLOOKUP(D4,'" & sourceSheet.Name & "'!$A$2:$H$" & SourceLastRow & ",6,0)*LastColumn" 
     .Cells(OutputLastRow + 1, NextColumn).Formula = "=SUM(" & Chr(64 + NextColumn) & "4:" & Chr(64 + NextColumn) & OutputLastRow & ")*1000" 
    End With 
    End Sub 

Sub vlookup6() 
     Dim SourceLastRow As Long 
     Dim OutputLastRow As Long 
     Dim sourceSheet As Worksheet 
     Dim outputSheet As Worksheet 

     Dim NextColumn As Long 

    Set sourceSheet = Worksheets("Data1") 
    Set outputSheet = Worksheets("Pivot") 
    With sourceSheet 
     SourceLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
    End With 
    With outputSheet 
     NextColumn = .Cells(4, Columns.Count).End(xlToLeft).Column + 1 
     OutputLastRow = .Cells(.Rows.Count, "D").End(xlUp).Row - 1 
     .Range(Cells(4, NextColumn), Cells(OutputLastRow, NextColumn)).Formula = _ 
      "=VLOOKUP(D4,'" & sourceSheet.Name & "'!$A$2:$H$" & SourceLastRow & ",7,0)" 
     .Cells(OutputLastRow + 1, NextColumn).Formula = "=SUM(" & Chr(64 + NextColumn) & "4:" & Chr(64 + NextColumn) & OutputLastRow & ")*1000" 
    End With 
    End Sub 

Antwort

0

Verwenden Sie diese für die Zeile Werte multipliziert:

outputSheet.Cells(4,1).Activate 
Application.ScreenUpdating = False 
While ActiveCell.Value <> "" 
    ActiveCell.Offset(1, 0).Activate 
Wend 

While ActiveCell.Offset(0, -1).Value <> "" 
    ActiveCell.Value = ActiveCell.Offset(0, -2).Value * ActiveCell.Offset(0, 
    -1).Value 
    ActiveCell.Offset(1, 0).Activate 
Wend 
Application.ScreenUpdating = True 
Verwandte Themen