Excel多表格查找,可以找到更優雅的解決方案嗎?

Excel多表格查找,可以找到更優雅的解決方案嗎?

這在一定程度上是為了好玩,我希望它不會因為主觀性而被關閉,因為儘管「哪種解決方案是最優雅的」是主觀的,但「當前的解決方案是複雜且醜陋的」是所有人都可以看到的。

不管怎樣,我在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))

相關內容