
這在一定程度上是為了好玩,我希望它不會因為主觀性而被關閉,因為儘管「哪種解決方案是最優雅的」是主觀的,但「當前的解決方案是複雜且醜陋的」是所有人都可以看到的。
不管怎樣,我在sheet1中有一個列表,如下所示:
*Thing* *type of thing*
Apple
Orange
Larceny
Cake
Banana
Murder
在表 2 中是這樣的:
fruit confectionary crime
Apple x
Orange x
Larceny x
Cake x
Banana x
Murder x
我想像這樣返回 Sheet 1 中的 B 列
*Thing* *type of thing*
Apple fruit
Orange fruit
Larceny crime
Cake confectinary
Banana fruit
Murder crime
我將發布我目前的解決方案作為答案。它有效,我會給它...
您將如何解決這個問題?
答案1
這是我的解決方案。索引+匹配可用於以兩種方式查找表中的值。這會調整正常的解決方案,以便它找到 x 並傳回列標題。
=INDEX($E$1:$G$1,MATCH("x",OFFSET($E$1:$G$1,MATCH(A2,$D$2:$D$7,0),),0))
我將所有內容都放在一張紙上,這樣更容易查看,同時也使函數變得更短。
根據巴里下面的評論,更好的選擇是避免使用另一個索引函數進行偏移,因此它不是易失性的。
=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 中內容的行。到目前為止,一切都很好。但是要返回第 2 頁中該行中 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))