Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel:根据字符串匹配从其他工作表复制单元格信息_Excel_Excel Formula - Fatal编程技术网

Excel:根据字符串匹配从其他工作表复制单元格信息

Excel:根据字符串匹配从其他工作表复制单元格信息,excel,excel-formula,Excel,Excel Formula,这是一个措辞复杂的问题,但我已经为我宿舍的校内团队创建了一份报名表,并且在Excel表格中列出了答案,其中包括: 第1页,B单元:全名 第1页,C单元:电子邮件地址 第1页,E单元:他们希望参加的运动(共有四项) 在第二张纸上,我想组织一下每支球队的队员和人数。所以我为每项运动都有一个专栏,在那下面有两个专栏(全名和电子邮件地址) 我想做的是解析表1中每个注册人的E单元格,如果他们有四项运动中的一项(足球、躲避球、排球或保龄球),请在表2中的正确列下添加他们的全名和电子邮件地址 这是第2页的图

这是一个措辞复杂的问题,但我已经为我宿舍的校内团队创建了一份报名表,并且在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))
    将给出
    FALSE
    如果E10中的值具有运动名称(在我们的标题单元格中:
    A$1
    ),则为
    TRUE
  • 我们正在处理单元格数组
    Sheet1,而不是只给出一个值$E$1:$E$500
    (可以根据需要进行扩展)-因此这为我们提供了一组
    TRUE
    FALSE
  • IF(ISERROR(…),9999,ROW(…)
    意味着如果没有运动,我们将得到值9999,否则我们将得到数组中单元格的行号-因此这给了我们一个混合了
    9999
    和行号的数组
  • SMALL(…,ROW()-2)
    让我们从数组中选择其中一个值-在本例中,项目按大小顺序排列,我们使用
    ROW()-2
    作为计数器(即在Sheet2!A3-
    ROW()-2
    为1,我们从数组中获得最小值)。。。
    -2
    处理标题行。。。实际上,我们是通过Sheet1中符合我们条件的排序行号列表进行索引
  • 索引(Sheet1!$B$1:$B$500,…)
    将为我们提供Sheet1中B列中与我们在匹配行列表中的位置相关的值,即名称
  • 有时我们有9999(对于所有不符合条件的单元格-这些单元格用
    SMALL
    排序到列表的末尾),因此
    索引将给我们一个错误。。。索引超出范围。所以我们可以用空白来代替它
在单元格B3中,我们也会这样做,但是使用
=IFERROR(索引)(Sheet1!$C$1:$C$500,
),这样我们就可以收到电子邮件…我们仍然需要引用
A$1
作为运动名称。然后,这两个单元格可以被复制到不同的位置


希望这有点道理!祝你好运!记住用Ctrl+Shift+enter键输入数组公式…

让问题变得更简单,你可能会注册两次(或更多次)…@pnuts注册表是一个谷歌表单,上面有运动复选框。如果我选择足球和躲避球,在表1的单元格E中会显示“足球,躲避球”。@g-boggs为你做了这件事吗?欢迎接受答案!