如果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行有标题)。
  • 没有人超过两个种族。

现在,步骤如下:

  1. 放一个filter,按姓名sorting。 这提供了任何人的名字分开。 (即如果顶部有一个“Sally Smith”,那么在不同的人之后就不会再有'Sally Smith'了)。
  2. 在D列中,公式=if(and(A2=A3,B2=B3),C2&"/"&C3,"")
  3. 将filter扩展到D列,并过滤掉所有空白。

这是否是名单元格A2和A3是否相同(名称相同)以及单元格B2和B3是否相同(姓氏相同)。

如果两者都是真的,那是同一个人,所以我们连接(使用&是另一种连接方式,除了使用concatenate() )这两个种族。

否则,如果名称或用户名或两者不同,请保留空白。

要一起删除冗余行,请复制/粘贴D列上的值,过滤D列中的空白单元格并删除。 之后sorting。

编辑:根据编辑的问题:

新的步骤:

  1. 放一个filter,按姓名sorting。 (已经在上面解释过)
  2. 在E栏中,公式=IF(AND(A1=A2,B1=B2),E1&"/"&C2,C2) (我改变了公式以适应新的方法)
  3. 在F列中,公式=if(and(A1=A2,B1=B2),F1+1,1)
  4. 在G列,把公式=if(F3<F2,1,0)
  5. 在列H中,把公式=if(and(D2="",A1=A2,B1=B2),H1,D2) (无论它走到哪里,这都需要ID)。

把公式从第2行。第3步做的是为同名人员增加一个数字。

第4步要做的是检查列F何时回到1.这将确定你的'最后一行将被保留'。

这是我从这些公式的输出: 在这里输入图像说明

绿色的行是你保留的(注意G列中有1可以让你快速find它们),列A,B,C,E和H是你保留在最后一张表格中的列。 不要忘了在完成公式之后和删除行之前复制/粘贴值!

如果第一个SallyA1则酌情复制=IF(AND(A1=A2,B1=B2),C1&"/"&C2,"") 。 假定不同的空白(“”)比重复C值更好。