我有一张 Excel 工作表,上面有一个非常大且填充很少的矩阵。第一列描述一个项目,后面的列描述该项目是否属于某个组。每个项目只能属于一个组。但是,整个工作表并没有用一列来表示每个项目的组,而是分散到多个虚拟列(每个组一个),其中 x 表示该项目是否属于该组。
我拥有的:
物品 | Group_1 | 组_2 | Group_3 | |
---|---|---|---|---|
1 | X | |||
2 | X | |||
3 | X | |||
4 | X | |||
5 | X |
我想要的是:
物品 | 团体 | Group_1 | 组_2 | Group_3 |
---|---|---|---|---|
1 | Group_1 | X | ||
2 | Group_1 | X | ||
3 | 组_2 | X | ||
4 | Group_3 | X | ||
5 | Group_3 | X |
此外,对于此示例,我将组命名为“group_1”、“group_2”等,但在实际数据框中,它们的名称可以是任何名称。解决这个问题的最佳方法是什么?据我所知,xlookup/vlookup/hlookup 依赖于两个预定的单元格范围,然后进行比较。但在这里,一切都取决于“x”指示的行/列组合。
答案1
INDEX/MATCH
虽然此查找方法是水平查找而不是通常的垂直查找,但这仍然是查找方法的一个经典问题。
使用:
=INDEX( $C$1:$E$1, 1, MATCH("x",C2:E2,0) )
MATCH()
查看整个行而不是整个列,因此其结果是列参数INDEX()
而不是通常的行参数。
然而,XLOOKUP()
也完全能够做到这一点:
=XLOOKUP( "x", C2:E2, $C$1:$E$1 )
并提供了一些有趣的内置选项,其中之一就是如果找不到查找值该怎么办。