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

这是一个复杂的措辞问题,但我已经为我的宿舍的校内团队创build了一个registry,答复在Excel表格中列出:

表1,单元格B:全名

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

表1,单元格E:他们希望玩的运动(有四个)

在表2中,我想组织谁和多less人想要在每个球队上踢球。 所以我有一个专栏,每栏都有两栏(全名和邮箱地址)。

我想要做的是parsing每张签名人员的表格1,单元格E ,如果他们有上述四种运动之一(足球,躲避球,排球或保龄球)的实例,则添加他们的全名和电子邮件地址在表2中正确的列下。

在这里输入图像描述

这是工作表2的图像。

有没有一种方法可以做到这一点? 另外,如果参加多项运动的人,则应该在每一项下列出。 他们想要玩的所有运动都将在一个单元格中列出(表1,单元格E)。

有一种方法,用数组公式(用Ctrl + Shift + Enterinput )…在单元格A3:

=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中的值有运动的名称(在我们的标题单元中: A$1 ), ISERROR(SEARCH(A$1,Sheet1!E10))会给我们FALSE ,否则为TRUE
  • 我们正在处理单元格Sheet1!$E$1:$E$500 (可根据需要进行扩展)的数组,而不是只给出一个值,所以这给了我们一个TRUEFALSE值的数组
  • IF(ISERROR(...),9999,ROW(...))意味着如果没有运动,我们将得到值9999,否则我们得到arrays中的单元格的行号 – 所以这给了我们9999和行号混合的数组
  • SMALL(...,ROW()-2)让我们从数组中挑选出其中的一个值 – 在这种情况下,大小顺序的项目,我们使用ROW()-2作为我们的计数器(即在Sheet2! A3 – ROW()-2是1,我们从数组中得到最小值)… -2处理标题行…实际上,我们通过Sheet1中符合条件的行号sorting列表进行索引
  • INDEX(Sheet1!$B$1:$B$500,...)会给我们Sheet1中列B的值,这个值与我们在匹配行列表中的位置有关 – 也就是Name
  • 有时我们有9999(对于所有与条件不匹配的单元格 – 这些被sorting到列表的最后),所以INDEX会给我们一个错误…索引超出范围。 所以我们可以用空白来代替它。

在B3单元格中,我们会做同样的事情,但是=IFERROR(INDEX(Sheet1!$C$1:$C$500,...以便我们得到电子邮件…我们仍然需要为体育名称引用A$1 。这两个单元格可以被复制到…

希望这是有道理的! 祝你好运! 并记住用Ctrl + Shift + Enter键input数组公式