TL; DR Also mein einziges Problem ist, dass ich die Zellwerte akkumulieren muss, wahrscheinlich die ganze Erklärung wan't notwendig, aber Sie werden ein besseres Verständnis meiner Situation bekommen, wenn Sie es durchlesen .Akkumulieren Sie Zellenwerte in Excel mit VBA
Ich habe gesucht und habe nichts über dieses spezielle Szenario gefunden. Ich habe dieses Excel-Blatt http://i.imgur.com/kDNvwL3.png mit den ersten Spalten/Zeilen-Indizes ausgeschrieben. (ich entfernte unnötige Sachen, um Verwirrung zu vermeiden)
Der Code kann verwirrend sein, aber ich werde schriftlich erklären, wie der Code funktioniert, als ob ich es ausführen würde, während Sie den Code überprüfen können. Das Problem wird am Ende erwähnt.
Also zuerst der Code:
ws1.Activate
Dim BLIrows As Integer, A As Range
Dim newRow As Integer
For BLIrows = 41 To 52
For newRow = 14 To 30
With ws1
If .Cells(BLIrows, 1).Value > 1 Then 'Make sure to only do this for non empty cells
Dim x As Long '(they will be longer than 1 char)
Dim y As String
Dim element As Variant
For Each element In .Cells(BLIrows, 1)
y = .Cells(BLIrows, 1).Value 'Save it's value for the search in the EFG14 list
If y = .Cells(newRow, 5).Value Then 'The search in the EFG14 list
x = .Cells(newRow, 4).Value 'Save the number when found an identical value
'<-- MISSING CODE/PROBLEM
If y = .Cells(BLIrows, 1).Value Then 'Make sure to put the number in the correct row
.Cells(BLIrows, 5).Value = x 'Putting the number
End If
End If
Next element
End If
If Not .Cells(BLIrows, 5).Value > 0 Then 'If anything (like Auto-pilot site) isn't in the EFG14 column
.Cells(BLIrows, 5).Value = 0 'then give it a 0
End If
End With
Next
Next
Und hier ist, wie es in Text geschrieben funktioniert:
Der Code ausführt und es beginnt in Zelle A41. Es findet zuerst "P4250", da es das erste in dieser Spalte ist, aber ich werde mich auf "P33-0236" konzentrieren, da es nur einmal in der EFG14-Liste erscheint (Sie werden später verstehen, warum). Also findet der Code "P33-0236" in Zelle A44. Nachdem es diesen Wert hat, sucht es jetzt in der EFG14-Spalte danach. Wie Sie vermuten, wird es in der Zelle EFG21 denselben Wert finden. Der Code speichert dann die Nummer, die in derselben Zeile, aber in einer anderen Spalte geschrieben ist, in diesem Fall Zelle D21. Mit der Nummer in D21 durchsucht der Code nun die A40-Spalte (wo er begonnen hat) nach dem Wert, der den ganzzahligen Wert (offensichtlich "P33-0236") gefunden hat und findet ihn in A44, weil die Zahl gleich gesetzt werden muss Reihe, aber unterschiedliche Spalte relativ zu A44 in diesem Fall. So findet es in A44 "P33-0236" und bewegt sich zu einer anderen Spalte in derselben Zeile (E44). Hier wird der ganzzahlige Wert in der Spalte D eingefügt.
Grundsätzlich erklärt dies einen Probelauf meines VBA-Codes.
Nun ist die PROBLEM
Das Problem ist, dass, wenn die ganzzahlige Werte in die Spalte Kosten kopiert werden (E40) nicht die Werte ansammelt. Wenn der Code beispielsweise mit P4250 ausgeführt wird, wird in der Spalte "EFG14" dreimal "P4250" gefunden. Der Wert, der dann in seiner äquivalenten Spalte Cost ist, sollte eigentlich 28440 + 47400 + 47400 = 123240 sein, aber es sind nur 47400 (weil es das letzte "P4250" ist).
Wie der Titel vorschlagen, möchte ich die Werte der gleichen "P" -Zahlen hinzufügen, wenn Sie sie in die Kostenspalte setzen.
Konzentriere dich nicht darauf, wie der Code geschrieben ist - es funktioniert - es sei denn, es ist etwas Wichtiges. Das einzige, was wichtig ist, ist der Akkumulationscode.
Können Sie SUMIF verwenden? –