我有两个电子表格,两个表格上都有许多列,这两个表格之间有一个共同的字段 (ID)。我可以执行多个 vlookup,但不想这样做,因为需要从一张表格复制到另一张表格的列超过 20 列。
还有其他方法可以解决这个问题吗
答案1
可能值得考虑使用索引匹配组合,其中有一列包含匹配公式,然后有多个索引公式引用该匹配列。这应该更有效,因为它每行只搜索一次。
答案2
您可以使用单个公式来完成此操作,无论是使用VLOOKUP()
还是INDEX/MATCH
。在 2013 年,我相信您必须使用{CSE}
它。因此,编写或粘贴您的公式,突出显示所有输出单元格,按 F2-Edit 并{CSE}
填充所有列。
它的工作方式是,您想要用于输出的列可以通过指定Array Constant
(在 2021 年仍然可以,只是不需要处理{CSE}
)。它们看起来像这样: {1,2,3,4,5,6,7,8,9}
。这将为您提供源数据的 1 到 9 列。
您还可以使用数组常量做一些有趣的事情。如果您输入 {1,5,5,5,7,9},则输出中会出现三次第 5 列。而根本不会出现第 2、3、4、6 和第 8 列。您也可以将它们打乱顺序:{5,1,4,7,3} 会出现第 5 列,然后是第 1 列,依此类推。
因此INDEX/MATCH
看起来会像这样:
=INDEX(A1:I10,MATCH(D1,A1:A1,0),{1,2,3,4,5,6,7,8,9})
像VLOOKUP()
这样:
=VLOOKUP($D$1,$A$1:$I$10,{1,2,3,4,5,6,7,8,9},FALSE)
顺便说一句,我的经验VLOOKUP()
是,你可以使用数组常量作为查找值,这样就可以一次进行多次查找(这与使用多个条件查找不同),或者在第三个参数中,但不是同时在两个地方。
此外,直接编写它可以让您对它进行最大程度的控制,但是您可以使用(此处为 2021)SEQUENCE()
函数或 ROW(1:9) 的旧技术来获取序列(我们认为它只是一个序列,但是当 Excel 逐个计算公式时,它使用由序列组成的数组常量,所以它仍然只是一个数组常量。
您甚至可以查看一个包含三列的表格,并且首先必须选择要查看这三列中的哪一列。您不能将公式化的东西放在数组常量里面,但是您可以使用从三个IFS()
可能的选项中选择一个,然后传递出适当的硬编码数组常量。
现在我们已经有了XLOOKUP()
可以从范围的末尾到开头进行查看的功能,这不会引起什么轰动,但是您可以从一个值中减去您生成的序列,以将序列置于相反的顺序,这样您就可以有效地将表格颠倒过来“向上搜索”。
用它你可以做很多事情。