![Excel,在不同的 Sheet2 中搜索数据并根据其列将其放回到 Sheet1 中](https://linux22.com/image/1635324/Excel%EF%BC%8C%E5%9C%A8%E4%B8%8D%E5%90%8C%E7%9A%84%20Sheet2%20%E4%B8%AD%E6%90%9C%E7%B4%A2%E6%95%B0%E6%8D%AE%E5%B9%B6%E6%A0%B9%E6%8D%AE%E5%85%B6%E5%88%97%E5%B0%86%E5%85%B6%E6%94%BE%E5%9B%9E%E5%88%B0%20Sheet1%20%E4%B8%AD.png)
这是 Sheet1
这是 Sheet2
我想在 Sheet2 中搜索水果,确定它们的组,然后将其放回到 Sheet1 中的 B 列(组)下
期望输出
做这个的最好方式是什么?
顺便说一句,如果你想复制这个(复制粘贴),这里是类似的数据
答案1
我确信有一个更简单的方法可以做到这一点,但我不记得它是什么!
无论如何,这会起作用:
=IFERROR(XLOOKUP(SUM(IFERROR(FIND(A2,Sheet2!$A$2:$C$7),0)*{1,2,3}),{1,2,3},{"A","B","C"}),"-")
首先,我们使用 FIND 创建一个数组,如果找到水果则返回 1,如果未找到则返回 0。此数组的大小与 Sheet 2 上的数据相同,找到 Grape 一词时返回 1。将此数组乘以 {1,2,3},找到 Grape 一词时返回 2(这很有用,因此我们可以知道它是第二列)。通过对该数组求和,结果将为 2。然后我们将值 2 传递给 XLOOKUP,返回返回数组中第二个位置的值,即 B。
当然,如果 Sheet2 中的多个单元格中出现单词 Grape,则此方法无效。
编辑:
我意识到这种方式虽然更长,但可能更好:
=XLOOKUP(SUM(($A10=Sheet2!$A$2:$C$7)*COLUMN(Sheet2!$A$1:$C$1)),COLUMN(Sheet2!$A$1:$C$1),CHAR(SEQUENCE(1,COLUMNS(Sheet2!$A$1:$C$1),65,1)),"-")
在这种情况下,查找和返回数组的大小由工作表 2 上的组列数决定,这意味着您无需手动输入 1、2、3 或“A”、“B”、“C”。