如果2个单元格对于2行相同,则将单元格字符串添加到另一个单元格

时间:2013-05-01 15:45:12

标签: excel excel-vba vba

我正在尝试创建一个将通过电子表格的宏,并根据2行的名字和姓氏相同,将种族列的内容添加到第一行。

例如

FirstN|LastN |Ethnicity                                       |ID      |

Sally |Smith |Caucasian                                       |55555   |
Sally |Smith |Native American                                 |        |
Sally |Smith |Black/African American                          |        | 

(宏运行后)

Sally |Smith |Caucasian/Native American/Black/African American|55555   |

有关如何执行此操作的任何建议?我为VBA阅读了几种不同的方法,但是对于创建这个宏的工作方式感到困惑。

EDIT 可能需要组合多于2行,并且需要删除或删除较低的行。

2 个答案:

答案 0 :(得分:2)

如果您可以使用公式,那么您可以这样做:

我正在做的几个假设:

  • Sally位于单元格A2中(第1行中有标题)。
  • 没有人超过2个种族。

现在,对于步骤:

  1. 放置过滤器并按名称和姓氏排序。这规定了任何人的名字分开。 (即如果顶部有一个'莎莉史密斯',那么在不同的人之后不再有'莎莉史密斯'在表格中的某个地方。)
  2. 在D栏中,输入公式=if(and(A2=A3,B2=B3),C2&"/"&C3,"")
  3. 将过滤器扩展到D列并过滤掉所有空白。
  4. 可以看出名称单元格A2和A3是否相等(名称是否相同),以及单元格B2和B3是否相等(姓氏是否相同)。

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

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

    要完全删除冗余行,请在D列上复制/粘贴值,过滤D列中的空白单元格并删除。之后排序。

    编辑:根据问题编辑:

    新步骤:

    1. 放置过滤器并按名称和姓氏排序。 (已经在上面解释过)
    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)。
    6. 将公式放在第2行。第3步的作用是为同名人员添加增量编号。

      第4步的作用是检查列F何时返回1.这将识别您要保留的“最后一行”。

      这是我从这些公式输出的: enter image description here

      绿色行是你保留的(注意1G允许你快速发现它们),A,B,C,E和H列是您保留在最终工作表中的列。完成公式之后和删除行之前,不要忘记复制/粘贴值!

答案 1 :(得分:1)

如果Sally中的A1位于=IF(AND(A1=A2,B1=B2),C1&"/"&C2,""),那么C适当地复制可能适用。假设不一样的空白(&#34;&#34;)优先于重复{{1}}值。