繁体   English   中英

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

[英]Loop through column values from one sheet and paste COUNTIF value from another column into another sheet

我在Excel文件中有两张纸,需要从一张纸执行COUNTIF公式,然后将相应的信息粘贴到另一张纸中。 原始工作表的第一列中只有类型,第二列为空。 我试图遍历工作表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(Sheet1!$ A $ 2:$ A $ 20,Sheet2!A2)

如果您想对列B求和

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

只需几个步骤,您就可以在不使用VBA的情况下完成所需的工作,而只需使用数据透视表。 只需执行以下操作。

  1. 选择您的数据集 ,包括标题。
  2. 单击插入选项卡,然后单击数据透视表。 请参阅Office 365的示例
  3. 由于您需要其他工作表,因此将数据透视表设置为“新工作表”。 请参见示例。
  4. 您需要将TYPE字段拖到行中,并将二进制拖到值中。 CountIF与二进制求和相同,因此可以保留为sum。 参见示例

您将获得与所需的输出几乎相同的输出: 最后结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM