如何计算所有列中仅包含特定值的行的字符串?

如何计算所有列中仅包含特定值的行的字符串?

我是 VBA 新手,我一直在努力寻找可以调整和组合来完成此操作的宏,但却无法做到。

我已将一些示例数据粘贴到本文末尾。我想遍历第 1 列 (ID_Num) 并找到所有具有相同 ID_Num 的行(由于工作表按 ID_Num 排序,因此它们应该在列中彼此相邻)。然后,当在客户列下找到字符串“A”、“B”或“C”时,对于每个具有相同 ID_Num 的行块,为每个客户记下 1 个计数。计数不应大于 1,即,如果字符串“A”或“B”或“C”存在于范围内,则注册 1,否则注册 0。其他可能性是“D”或空白。

我希望在这一步之后每个 ID_Num 只有一行。

最后,我想把每个 ID_Num 的 1 和 0 加起来

我已附加我所拥有的数据以及我想要的最终结果的一个例子。

原始数据样本

ID_Num | 客户 1 客户 2 客户 3 客户 4 客户 5

aaa | AADBD

AAA | BDDBA

aaa | DDDAB

bbb | CADDC

ccc | DAAAD

ccc | ACBDD

ddd | DDDDD

步骤1

ID_Num | 客户 1 客户 2 客户 3 客户 4 客户 5

aaa | 1 1 0 1 1

bbb | 1 1 0 0 1

ccc | 1 1 1 1 0

ddd | 0 0 0 0 0

第二步

ID_Num | 最终计数

aaa | 4
bbb | 3
ccc | 4
ddd | 0

有 100 个客户列。

抱歉格式不对。我已添加一个显示相同信息的图片链接。该网站不允许我上传图片

样本数据

我将非常感激您的帮助。提前致谢!

答案1

如果 Sheet1 包含初始数据,在 Sheet2 中 A 列是 ID_Num,Row1 是客户,则在 B2 中写入:

=IF(OR(COUNTIFS(Sheet1!$A:$A,$A2,Sheet1!B:B,"A")>0,COUNTIFS(Sheet1!$A:$A,$A2,Sheet1!B:B,"B")>0,COUNTIFS(Sheet1!$A:$A,$A2,Sheet1!B:B,"C")>0),1,0)

并将其拖到同一行直到最后一位客户,一直拖到最后一个 ID_Num,它就会自动改变,并且您将获得第一步中的表格。
完成后,您可以在最后一列“最终计数”后创建并使用:

=Sum(B2:ZZ2)
用最后一个客户列替换 ZZ2,并将其向下拖动

如果您只想单独执行第二步,请复制 ID_Num 列并将其粘贴到新工作表中,然后复制 Final Count 列,在新工作表中靠近 ID_Num 列的位置使用粘贴特殊值

相关内容