如何以快速方式循环单元格范围或以下代码的任何其他替代方法

时间:2014-01-09 08:09:16

标签: excel excel-vba vba

首先,我对宏没有任何了解,并使用谷歌编译了以下代码。  它正在执行,但我必须多次循环大范围,这很慢。我怎样才能让它快速  代码是

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我按两张表中的行数进行硬编码。

1 个答案:

答案 0 :(得分:2)

无需通过VBA方式。假设您的数据看起来像这样

enter image description here

在第一个单元格中使用Sumproduct公式并使用Autofill功能。

=SUMPRODUCT(($A$1:$A$8=E3)*($B$1:$B$8))

如果您仍然想要一个VBA解决方案,那么您可以将范围存储在一个数组中,然后在内存中执行计算,然后将数据转储回来。