我是 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 列的位置使用粘贴特殊值