首先,我对宏没有任何了解,并使用谷歌编译了以下代码。 它正在执行,但我必须多次循环大范围,这很慢。我怎样才能让它快速 代码是
Public Sub getsum()
For a_counter = 1 To 41194
skunow = Sheets(2).Range("A" & a_counter).Value
sumofthissku = 0
For b_counter = 1 To 99944
anothersku = Sheets(1).Range("A" & b_counter).Value
If anothersku = skunow Then
qty = Sheets(1).Range("H" & b_counter).Value
If IsNumeric(qty) Then
sumofthissku = sumofthissku + qty
End If
End If
Next b_counter
Sheets(2).Range("B" & a_counter).Value = sumofthissku
Next a_counter
End Sub
说明 - >我有两张sheet1和sheet2 第1页包含sku及其数量。但是sku重复了多次。 表2仅包含所有sku一次,我必须将表1中的数量相加并将其放入表2中。
值99944和41194我按两张表中的行数进行硬编码。
答案 0 :(得分:2)
无需通过VBA方式。假设您的数据看起来像这样
在第一个单元格中使用Sumproduct公式并使用Autofill
功能。
=SUMPRODUCT(($A$1:$A$8=E3)*($B$1:$B$8))
如果您仍然想要一个VBA解决方案,那么您可以将范围存储在一个数组中,然后在内存中执行计算,然后将数据转储回来。