Excel:根据另一个工作表中的字符串匹配复制单元格信息

时间:2014-09-25 14:03:46

标签: excel excel-formula

这是一个复杂的措辞问题,但我为宿舍的校内团队创建了一个注册表,并且回复列在Excel表格中:

工作表1,单元格B:全名

工作表1,单元格C:电子邮件地址

第1页,单元格E:他们希望进行的运动(有四种)

在表2中,我想组织每个团队想要参与的人数和人数。所以我为每项运动都有一个专栏,其中有两列(全名和电子邮件地址)。

我想要做的是为每个注册的人解析表1,单元格E ,如果他们有列出的四项运动之一(足球,躲避球,排球)的实例或保龄球),在表2的正确栏目下添加他们的全名和电子邮件地址。

enter image description here

这是表2的图像。

有没有办法/公式能够做到这一点?此外,如果该人报名参加多项运动,则应在每项运动下列出。他们想要参加的所有运动将列在一个单元格下(表1,单元格E)。

1 个答案:

答案 0 :(得分:1)

有一种方法,使用数组公式(使用 Ctrl + Shift + Enter 输入)...在单元格A3中:< / p>

=IFERROR(INDEX(Sheet1!$B$1:$B$500,SMALL(IF(ISERROR(SEARCH(A$1,Sheet1!$E$1:$E$500)),9999,ROW(Sheet1!$A$1:$A$500)),ROW()-2)),"")

让我从内到外解释......

    如果E10中的值具有该运动的名称(在我们的标题单元格中:ISERROR(SEARCH(A$1,Sheet1!E10))),则{li> FALSE会向我们A$1TRUE
  • 我们正在处理单元格数组Sheet1!$E$1:$E$500(可以根据需要进行扩展),而不仅仅是给出一个值 - 所以这给了我们一个TRUE和{{1值}
  • FALSE意味着如果没有这项运动,我们将得到值9999,否则我们得到数组中单元格的行号 - 所以这给了我们一个{{1}混合的数组和行号
  • IF(ISERROR(...),9999,ROW(...))让我们从数组中选出其中一个值 - 在这种情况下是大小顺序的项目,我们使用9999作为我们的计数器(即在Sheet2!A3 - {{ 1}}是1,我们从数组中得到最小的值)... SMALL(...,ROW()-2)处理标题行...实际上,我们通过Sheet1中符合条件的行号的排序列表进行索引< / LI>
  • ROW()-2将向我们提供Sheet1中B列中与我们在匹配行列表中的位置相关的值 - 即名称
  • 有时我们有9999(对于与条件不匹配的所有单元格 - 这些单元格已按ROW()-2排序到列表的末尾),因此-2会给我们一个错误......指数超出范围。所以我们可以用空白替换它。

在单元格B3中,我们也会这样做,但是INDEX(Sheet1!$B$1:$B$500,...)以便我们收到电子邮件...我们仍需要引用SMALL作为运动名称。然后可以跨越和向下复制这两个单元格......

希望这有一定道理!祝好运!并记得使用 Ctrl + Shift + 输入 ...

输入数组公式