循环遍历一张表中的列值并将另一列中的 COUNTIF 值粘贴到另一张表中

Posted

技术标签:

【中文标题】循环遍历一张表中的列值并将另一列中的 COUNTIF 值粘贴到另一张表中【英文标题】:Loop through column values from one sheet and paste COUNTIF value from another column into another sheet 【发布时间】:2019-01-01 09:41:45 【问题描述】:

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

此代码仅将 0 粘贴到工作表 1 上的所需结果中。

从提取信息的工作表

用于将信息粘贴到的工作表

目标工作表中的期望结果

【问题讨论】:

我还有一个以前版本的代码,它会为所有类型产生相同的 COUNTIF 结果,因为它会计算所有二进制值。但是,我只希望它计算该特定类型的值。 为什么不使用数据透视表? @Ryan 如果其中一种解决方案满足您的需求,请接受答案。如果所有答案都不适合您,请发表评论以分享您遇到的困难。 . 【参考方案1】:

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

这是公式

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

如果你想对col B求和

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

【讨论】:

【参考方案2】:

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

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

您将获得与您正在寻找的几乎相同的输出:

【讨论】:

以上是关于循环遍历一张表中的列值并将另一列中的 COUNTIF 值粘贴到另一张表中的主要内容,如果未能解决你的问题,请参考以下文章

将数据库中的某一表中的某一列或者多列添加到另一张表的某一列中——猎八哥FLY

如何将一列的列值组合到 MySQL 中的另一列中?

在oracle中怎么对一张表中的列进行循环,比如说,我执行第一个字段,再执行第二个。。。一直到N

CodeIgniter 查询:如何将列值移动到同一行中的另一列并将当前时间保存在原始列中?

SQL - 计算一个列值在另一列中的出现

遍历列中的每个类别并将另一列中的值添加为单独的 df