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
(可根据需要进行扩展)的数组,而不是只给出一个值,所以这给了我们一个TRUE
和FALSE
值的数组 -
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数组公式