这部分是为了好玩,我希望它不会因为主观性而被关闭,因为虽然“哪种解决方案最优雅”是主观的,但“当前的解决方案是复杂和丑陋的”却是显而易见的。
无论如何,我在 sheet1 中有一个列表,如下所示:
*Thing* *type of thing*
Apple
Orange
Larceny
Cake
Banana
Murder
在 Sheet 2 中如下:
fruit confectionary crime
Apple x
Orange x
Larceny x
Cake x
Banana x
Murder x
我想要像这样返回 Sheet 1 中的 col B
*Thing* *type of thing*
Apple fruit
Orange fruit
Larceny crime
Cake confectinary
Banana fruit
Murder crime
我将发布我当前的解决方案作为答案。它有效,我会给它这个...
您将如何解决这个问题?
答案1
这是我的解决方案。Index+match 可用于双向查找表中的值。这会调整正常解决方案,以便找到 x 并返回列标题。
=INDEX($E$1:$G$1,MATCH("x",OFFSET($E$1:$G$1,MATCH(A2,$D$2:$D$7,0),),0))
我把所有内容放在一张纸上,这样更容易看到,也使函数更短一些。
根据 Barry 在下面的评论,更好的选择是避免使用另一个索引函数进行偏移,以使其不至于不稳定。
=INDEX($E$1:$G$1,MATCH("x",INDEX($E$2:$G$7,MATCH(A2,$D$2:$D$7,0),0),0))
答案2
对于我当前的解决方案
=MATCH(A1,Sheet1!A1:A10,0)
在 B 列中,返回 Sheet2 中包含该内容的行。到目前为止一切顺利。但为了返回 Sheet2 中该行中 x 的位置并给出正确的单词,我使用了这个怪异的方法,在间接函数中使用 R1C1 引用连接字符串将行号转换为我可以实际使用的引用:
=IF(INDIRECT("sheet2!R"&B1&"C2",0)="X","fruit",IF(INDIRECT("sheet2!R"&B1&"C3",0)="X","confectionary",IF(INDIRECT("sheet2!R"&B1&"C4",0)="X","crime","ERROR")))
然后,该字符串计算结果为“sheet2R[rownumber]C[column]”,并将其输入到间接引用(转换为正常引用),然后转到 if 语句,将 x 的存在转换为相关单词
答案3
这是我喜欢的解决方案,与 gtwebb 的概念类似(并假设您的数据与他的屏幕截图中一致),但它不使用OFFSET
(我认为只有在没有其他选择时才应该使用,因为它是易挥发的)。
=INDEX($E$1:$G$1,MATCH("x",$E2:$G2,0))