如果2行的单元格相同,则将单元格string添加到另一个单元格
我试图做一个macros将通过电子表格,并基于第一个和最后一个名字相同的2行,添加种族列的内容到第一行。
例如。
FirstN|LastN |Ethnicity |ID | Sally |Smith |Caucasian |55555 | Sally |Smith |Native American | | Sally |Smith |Black/African American | |
(在macros运行之后)
Sally |Smith |Caucasian/Native American/Black/African American|55555 |
任何build议如何做到这一点? 我读了VBA的几种不同的方法,但已经弄糊涂了什么样的方式来创build这个macros。
编辑可能有超过2行需要组合,而下面的行需要删除或删除一些如何。
如果你可以使用一个公式,那么你可以做到这一点:
我正在做的一些假设:
- 莎莉在单元格
A2
(第1行有标题)。 - 没有人超过两个种族。
现在,步骤如下:
- 放一个filter,按姓名sorting。 这提供了任何人的名字分开。 (即如果顶部有一个“Sally Smith”,那么在不同的人之后就不会再有'Sally Smith'了)。
- 在D列中,公式
=if(and(A2=A3,B2=B3),C2&"/"&C3,"")
- 将filter扩展到D列,并过滤掉所有空白。
这是否是名单元格A2和A3是否相同(名称相同)以及单元格B2和B3是否相同(姓氏相同)。
如果两者都是真的,那是同一个人,所以我们连接(使用&
是另一种连接方式,除了使用concatenate()
)这两个种族。
否则,如果名称或用户名或两者不同,请保留空白。
要一起删除冗余行,请复制/粘贴D列上的值,过滤D列中的空白单元格并删除。 之后sorting。
编辑:根据编辑的问题:
新的步骤:
- 放一个filter,按姓名sorting。 (已经在上面解释过)
- 在E栏中,公式
=IF(AND(A1=A2,B1=B2),E1&"/"&C2,C2)
(我改变了公式以适应新的方法) - 在F列中,公式
=if(and(A1=A2,B1=B2),F1+1,1)
- 在G列,把公式
=if(F3<F2,1,0)
- 在列H中,把公式
=if(and(D2="",A1=A2,B1=B2),H1,D2)
(无论它走到哪里,这都需要ID)。
把公式从第2行。第3步做的是为同名人员增加一个数字。
第4步要做的是检查列F何时回到1.这将确定你的'最后一行将被保留'。
这是我从这些公式的输出:
绿色的行是你保留的(注意G
列中有1
可以让你快速find它们),列A,B,C,E和H是你保留在最后一张表格中的列。 不要忘了在完成公式之后和删除行之前复制/粘贴值!
如果第一个Sally
在A1
则酌情复制=IF(AND(A1=A2,B1=B2),C1&"/"&C2,"")
。 假定不同的空白(“”)比重复C
值更好。