Excel VBA Wert in Spalte, und Mathematik
Habe ich
Spalte A mit Namen
Spalte B - mit Mengen
Spalte C - Wo ich will zurückgegebene Wert Menge x Kosten
Spalte E - mit Namen, sondern befindet sich in verschiedenen Zellen
Spalte F - mit Preisen
Was ich versuche zu erreichen ist: Nehmen Sie den Wert aus A1 und finden es in E:E (Können sagen, wir fanden es in E10), wenn gefunden, nehmen Sie den Wert B1 und multiplizieren Sie den Jeweiligen Wert F10 - und stellen alles in Spalte C
Und so weiter für alle Werte in Spalte A
Ich versuche zu tun, es mit Do while und zwei Variablen x und y, aber für einige Grund es nicht finden, alle Werte nur für einige Zeilen.
Vielen Dank im Voraus.
Sub update_button()
'calculates money value for amazon sku
Dim x, y, z As Integer 'x, y, and z variables function as loop counters
'Loop through added SKU/Prices
For x = 4 To 25000
If Worksheets("Sheet1").Range("H" & x) = "" Then
'Blank row found, exit the loop
Exit For
End If
'Loop through Column E to find the first blank row to add the value from H into
For y = 4 To 25000
If Worksheets("Sheet1").Range("E" & y) = "" Then
'Blank row found, Add SKU and Price
Worksheets("Sheet1").Range("E" & y) = Worksheets("Sheet1").Range("H" & x)
Worksheets("Sheet1").Range("F" & y) = Worksheets("Sheet1").Range("I" & x)
'Blank out Columns H and I to prevent need to do it manually
Worksheets("Sheet1").Range("H" & x) = ""
Worksheets("Sheet1").Range("I" & x) = ""
Exit For
End If
Next y
Next x
'---NOW THIS IS WHERE I HAVE THE PROBLEM
'Get Values
Dim intCumulativePrice As Integer
'Loop through report tab and get SKU
x = 4 'initialize x to the first row of data on the Sheet1 tab
Do While Worksheets("Sheet1").Range("A" & x) <> "" 'Loop through valid SKU's to find price of item
y = 4 'initialize y to the first row of SKUs on the Sheet1 tab
Do While Worksheets("Sheet1").Range("E" & y) <> ""
If Worksheets("Sheet1").Range("E" & x) = Worksheets("Sheet1").Range("A" & y) Then 'Check if current SKU on Sheet1 tab matches the current SKU from SKU list
'Calculates the total
intCumulativePrice = intCumulativePrice + (Worksheets("Sheet1").Range("B" & y) * Worksheets("Sheet1").Range("F" & x))
' Puts Quantity X Price in Column B agains every Cell
Worksheets("Sheet1").Range("C" & y) = (Worksheets("Sheet1").Range("B" & y) * Worksheets("Sheet1").Range("F" & x))
Exit Do
End If
y = y + 1
Loop
x = x + 1
Loop
'Puts Grand total in Column L Cell 4
Worksheets("Sheet1").Range("L4") = intCumulativePrice
'Show messagebox to show that report processing has completed
MsgBox "Report processing has been completed successfully", vbInformation, "Processing Complete!"
End Sub
- Können wir eine Spalte E mit den neuen Werten?
- Nicht in diesem Fall
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tun dies mit VBA so kopieren Sie bitte die source-Daten zu Variant-arrays und Schleife über diese. Viel schneller und IMO leichter zu Lesen und zu Debuggen.
Sowas
Können Sie dies mit einer einfachen
VLOOKUP
Formel in Spalte C.Können Sie auch einen benannten Bereich für die Daten in den Spalten E und F, so dass Sie nicht haben, um setzen auf eine Feste Adresse wie
E1:F65000
.Versuchen Sie dies: