TL; DR所以我唯一的问题是我需要积累细胞值,可能整个解释都没有必要,但如果你仔细阅读,你会更好地掌握我的情况。
我已经四处寻找并且没有找到任何关于这种特殊情况的信息。 我有这个excel表http://i.imgur.com/kDNvwL3.png,其中写出了第一列/行索引。 (我删除了不必要的东西以避免混淆)
代码可能令人困惑,但我会以书面形式解释代码的工作方式,就像我在运行它时可以查看代码一样。最后会提到这个问题。
首先是代码:
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
以下是用文字写的:
代码执行,它从Cell A41开始。它首先找到“P4250”,因为它是本专栏中的第一个,但是我将专注于“P33-0236”,因为它只出现在EFG14列表中一次(你会明白为什么以后)。因此代码在Cell A44找到“P33-0236”。在具有该值之后,它现在将在EFG14列中搜索它。正如您所怀疑的那样,它会在单元格EFG21中找到它的相同值。然后代码保存写在同一行但不同列的数字,在本例中为单元格D21。使用D21中的数字,代码现在搜索A40列(它开始的位置)以获取检索整数值的值(显然是“P33-0236”)并在A44中找到它,这是因为数字需要放在同一列中在这种情况下,相对于A44的行但不同的列。因此它在A44中找到“P33-0236”并移动到同一行中的不同列(E44)。这里它将粘贴在D列中找到的整数值。
基本上这解释了我的vba代码的试运行。
现在问题
问题是当整数值被复制到Cost列(E40)时,它不会累积值。例如,如果代码用P4250执行,它将在EFG14列中找到“P4250”三次。那么它的等价成本列中的值实际应该是,28440 + 47400 + 47400 = 123240但是它只有47400(因为它是最后一个“P4250”)。
正如标题所示,我希望在将它们放入成本列时添加相同“P”数字的值。
不要专注于如何编写代码 - 它可以工作 - 除非它是主要的东西。唯一重要的是累积代码。
答案 0 :(得分:2)
如果您希望该值是当前值加上新找到的值的总和,则在将新值分配给单元格之前,您的代码需要将它们一起添加。
就像现在一样,看起来你只是将新值分配给单元格。
也许是这样的(假设这是你想要的值加法的地方):
.Cells(BLIrows, 5).Value = .Cells(BLIrows, 5).Value + x