Vba 循环浏览一个工作表中的列值,并将另一列中的COUNTIF值粘贴到另一个工作表中

Vba 循环浏览一个工作表中的列值,并将另一列中的COUNTIF值粘贴到另一个工作表中,vba,excel,Vba,Excel,我在Excel文件中有两张表格,需要从一张表格中执行COUNTIF公式,并将相应的信息粘贴到另一张表格中。原始工作表只有第1列中的类型,第2列为空。我试图循环处理来自工作表1的类型,在每个增量循环中循环处理来自工作表2的类型,并通过工作表2的第2列的计数进入工作表1的第2列 我当前的VBA代码如下: Sub TestOE() 'For loop to go until end of filled cells in 1st column of each sheet a = Work

我在Excel文件中有两张表格,需要从一张表格中执行COUNTIF公式,并将相应的信息粘贴到另一张表格中。原始工作表只有第1列中的类型,第2列为空。我试图循环处理来自工作表1的类型,在每个增量循环中循环处理来自工作表2的类型,并通过工作表2的第2列的计数进入工作表1的第2列

我当前的VBA代码如下:

Sub TestOE()
    'For loop to go until end of filled cells in 1st column of each sheet
    a = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
    b = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row

    'Loop
    For i = 2 To a
        For j = 2 To b
            If Worksheets("Sheet1").Cells(i, 1).Value = Worksheets("Sheet2").Cells(j, 1).Value Then
                Worksheets("Sheet1").Cells(i, 2).Value = Application.WorksheetFunction.CountIf(Range("B:B"), 1)
            End If
        Next j
    Next i
End Sub
此代码仅在工作表1的所需结果中粘贴0

从中提取信息的工作表

要在中粘贴信息的工作表

目的地表中的预期结果

您可以简单地使用sumif函数根据条件对值求和

这是公式

=COUNTIF(第1张!$A$2:$A$20,第2张!A2)

如果你想求B列的和,那么


=SUMIF(Sheet1!$A$2:$A$20,Sheet2!A2,Sheet1!$B$2:$B$20)

只需几个步骤,就可以在没有VBA的情况下完成所需的任务,只需使用数据透视表即可。只需按照以下步骤操作

  • 选择您的标题,包括标题
  • 单击“插入”选项卡,然后单击“数据透视表”
  • 由于需要不同的工作表,请将数据透视表设置为“新工作表”
  • 您需要将TYPE字段拖到行中,并将binary拖到值中。CountIF与二进制求和相同,因此可以将其保留为sum 您将获得与所需内容几乎相同的输出:

    我还有一个以前版本的代码,它将为所有类型生成相同的COUNTIF结果,因为它将对所有二进制值进行计数。但是,我只想计算特定类型的值。为什么不使用透视表?@Ryan如果其中一个解决方案满足您的需要,请接受答案。。如果所有答案都不适合你,请发表评论,分享你所面临的困难。。。