我在 Excel 中有两个表格,第一个是包含一些基本信息的完整产品列表,另一个仅包含选定的产品和有关它们的更多信息,但缺少第一个表格中的某些信息。
我想合并或对齐它们,以便每个产品的所有数据都在一个表中。
例如
表格1
ID Price Weight
1 £2 100g
2 £3 250g
3 £3.5 70g
4 £2.75 25g
5 £0.8 50g
.
.
.
表 2
ID Colour Sold Stock ...
3 Red 98 102
4 Blue 50 50
.
.
。
我可以使用 vlookup,但它只会返回一列的值,第二个表有超过 100 列,我想避免写那么多!任何想法都值得赞赏。
答案1
我认为对此使用 VLOOKUP 没有什么坏处;您可以根据 vlookup 索引的实际 COLUMN() 编写一个公式,例如:
假设第一个表格数据从 A1 单元格开始,数据包含在 A:E 列中,而第二个表格包含在名为“Table2”的不同工作表中的 A1 到 ZZ100 单元格中,请在第一行和第一个空闲列上输入以下公式:
=IFERROR(VLOOKUP(A1,Table2!$A$1:$ZZ$100,COLUMN()-4,FALSE),"")
注意我使用“COLUMN()-4”作为 VLOOKUP 的索引,因为表中的最后一列数据是 E,而如果是 D,我会使用“COLUMN()-3”,如果是 F,我会使用“COLUMN()-5”...我希望你理解操作机制。 然后,只需将公式粘贴到 100 个(甚至更多)后续列上即可,而无需为每一列的公式更改 vlookup 索引!
否则你甚至可以查看:数据库或者合并表向导或者强力查询为了这。
答案2
有一个直接的这样做的方法VLOOKUP
(XLOOKUP
当时还没有),尽管使用 Power Query 或 VBA 是黄金标准。尤其是对于如此大的举动。
许多函数可以使用 Excel 中所谓的“数组常量”作为其参数之一。(“一个”……只有一个……Excel 仅从单个函数参数中的任何第二/第三/等数组常量中获取第一个条目。)
数组常量的形式为: {"horse","cow",2,3567,21,"pig",8}
您可以在第一个或第三个参数中使用其中一个,VLOOKUP
其中输出参数(第三个)是最常用的。
要对 K1 中的值执行操作VLOOKUP
,在 A1:F500 的查找范围中找到它,并希望返回 B、E 和 F 列,您可以使用:
=VLOOKUP(K1, A1:F500, {2,5,6}, FALSE)
INDEX
可能是您看到它使用最多的地方。当它出现时,通常是因为人们想要重新排序列和/或重复列。(想象一下一组紧密的列,其中任何一点数据都连续出现一次,所以可能是名字。但您的用户需要向右和向左滚动很多次,导致它离开屏幕,并且他们无法通过使用客户的名字轻松地保持通话“友好”。因此,您希望该列每 10 列左右出现一次。有很多好的理由,但也很古怪。)
如果您想要这样,VLOOKUP
但需要以不同的顺序排列列并且第 2 列出现两次,则您的数组常量可能看起来像这样: {6,2,5,2}
并且VLOOKUP
很乐意返回该值。
因此,您可以使用熟悉的工具来执行此操作,尽管 Power Query 无疑是最好的。