Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何快速循环单元范围或以下代码的任何其他替代方案_Excel_Vba - Fatal编程技术网

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

Excel 如何快速循环单元范围或以下代码的任何其他替代方案,excel,vba,Excel,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).

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

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

无需通过VBA方式。假设您的数据如下所示

在第一个单元格中使用Sumproduct公式,并使用自动填充功能

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

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

什么不使用sumproduct公式?不要硬编码行号,您可以使用Sheets(“Sheet1”).Range(“a”&Rows.count”).end(xlup).row获取最后一行,这是动态的,比硬编码好得多。出于好奇,Siddharth,为什么是sumproduct而不是sumif?