Excel:根据字符串匹配从其他工作表复制单元格信息
这是一个措辞复杂的问题,但我已经为我宿舍的校内团队创建了一份报名表,并且在Excel表格中列出了答案,其中包括: 第1页,B单元:全名 第1页,C单元:电子邮件地址 第1页,E单元:他们希望参加的运动(共有四项) 在第二张纸上,我想组织一下每支球队的队员和人数。所以我为每项运动都有一个专栏,在那下面有两个专栏(全名和电子邮件地址) 我想做的是解析表1中每个注册人的E单元格,如果他们有四项运动中的一项(足球、躲避球、排球或保龄球),请在表2中的正确列下添加他们的全名和电子邮件地址 这是第2页的图像Excel:根据字符串匹配从其他工作表复制单元格信息,excel,excel-formula,Excel,Excel Formula,这是一个措辞复杂的问题,但我已经为我宿舍的校内团队创建了一份报名表,并且在Excel表格中列出了答案,其中包括: 第1页,B单元:全名 第1页,C单元:电子邮件地址 第1页,E单元:他们希望参加的运动(共有四项) 在第二张纸上,我想组织一下每支球队的队员和人数。所以我为每项运动都有一个专栏,在那下面有两个专栏(全名和电子邮件地址) 我想做的是解析表1中每个注册人的E单元格,如果他们有四项运动中的一项(足球、躲避球、排球或保龄球),请在表2中的正确列下添加他们的全名和电子邮件地址 这是第2页的图
有什么方法/公式可以做到这一点吗?此外,如果该人报名参加多项运动,则应将其列在每项运动下。他们想玩的所有运动都将列在一个单元格下(第1页,单元格E)。有一种方法,使用数组公式(使用Ctrl+Shift+Enter输入)。。。在单元格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)),"")
让我从里到外解释
将给出ISERROR(搜索(A$1,Sheet1!E10))
如果E10中的值具有运动名称(在我们的标题单元格中:FALSE
),则为A$1
TRUE
- 我们正在处理单元格数组
(可以根据需要进行扩展)-因此这为我们提供了一组Sheet1,而不是只给出一个值$E$1:$E$500
和TRUE
值FALSE
意味着如果没有运动,我们将得到值9999,否则我们将得到数组中单元格的行号-因此这给了我们一个混合了IF(ISERROR(…),9999,ROW(…)
和行号的数组9999
让我们从数组中选择其中一个值-在本例中,项目按大小顺序排列,我们使用SMALL(…,ROW()-2)
作为计数器(即在Sheet2!A3-ROW()-2
为1,我们从数组中获得最小值)。。。ROW()-2
处理标题行。。。实际上,我们是通过Sheet1中符合我们条件的排序行号列表进行索引-2
将为我们提供Sheet1中B列中与我们在匹配行列表中的位置相关的值,即名称索引(Sheet1!$B$1:$B$500,…)
- 有时我们有9999(对于所有不符合条件的单元格-这些单元格用
排序到列表的末尾),因此SMALL
索引将给我们一个错误。。。索引超出范围。所以我们可以用空白来代替它
=IFERROR(索引)(Sheet1!$C$1:$C$500,
),这样我们就可以收到电子邮件…我们仍然需要引用A$1
作为运动名称。然后,这两个单元格可以被复制到不同的位置
希望这有点道理!祝你好运!记住用Ctrl+Shift+enter键输入数组公式…让问题变得更简单,你可能会注册两次(或更多次)…@pnuts注册表是一个谷歌表单,上面有运动复选框。如果我选择足球和躲避球,在表1的单元格E中会显示“足球,躲避球”。@g-boggs为你做了这件事吗?欢迎接受答案!