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

时间:2018-07-24 17:10:00

标签: excel vba excel-vba

我在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。

从中提取信息的表格
Sheet to extract information from

在其中粘贴信息的表格
Main Sheet to paste information in

目标工作表中所需的结果
Desired Outcome in main sheet

2 个答案:

答案 0 :(得分:0)

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

这是公式

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

如果您想对列B求和

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

答案 1 :(得分:0)

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

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

您将得到与您要寻找的输出几乎相同的输出: Final Result