概括:
我需要根據陳述句=VLOOKUP的結果使用不同的列號。=RIGHT我當前的公式按預期執行此操作,但如果我需要添加更多潛在的=RIGHT陳述句結果,則不容易擴展。有沒有辦法有效地擴大規模?
用例:
我有一個公式可以將"Use 1", "Use 2",或"Use 3",插入 Column 。然后Column需要執行 a ,這將根據列中的最后一個字符而有所不同,并回傳不同的列號。例如,如果單元格包含文本,我將需要回傳. 如果單元格包含,我將需要回傳(列號是非線性的)中的第 8 列。"Use 4""Unknown"AB=VLOOKUPAA1"Use 1"=VLOOKUPA2"Use 4"=VLOOKUP
當前代碼:
=IFS(RIGHT(A2,1)="1",VLOOKUP(B2,'Table2'!A:I,2,FALSE),RIGHT(A2,1)="2",VLOOKUP(B2,'Table2'!A:I,4,FALSE),RIGHT(A2,1)="3",VLOOKUP(B2,'Table2'!A:I,5,FALSE),RIGHT(A2,1)="4",VLOOKUP(B2,'Table2'!A:I,8,FALSE),RIGHT(A2,1)="N","NotFound")
使用上述代碼的示例表:
- 代碼表
| 查看 | 找東西 | 代碼輸出 |
|---|---|---|
| 使用 1 | 食品 | 美國廣播公司 |
| 使用 3 | 酒吧 | 012 |
| 使用 4 | 巴茲 | 在 |
| 未知 |
- 表2
| 找東西 | 資料1 | 資料2 | 資料3 | 資料4 | 資料5 | 資料6 | 資料7 | 資料8 |
|---|---|---|---|---|---|---|---|---|
| 食品 | 美國廣播公司 | 國防軍 | 全球健康指數 | JKL | 移動網路運營商 | 二維碼 | STU | 大眾汽車 |
| 酒吧 | 123 | 456 | 789 | 012 | 345 | 678 | 901 | 234 |
| 巴茲 | 一些 | 事物 | 到 | 看 | 向上 | 去 | 在 | 這里 |
結論:
The above example works fine for the previous use case, but I am trying to make this scalable without needing to edit the formula every time the Check column may get new additions (such as "Use 5" or "Use 12". Is there any way of doing this practically? My thought was to use a separate table to =VLOOKUP the column number (so I would only need to edit this table and not the formulas each time), but it appears I am unable to use a different =VLOOKUP for the COL_INDEX_NUM portion of the initial =VLOOKUP. Any help with this would be appreciated. I am using MSO 365.
uj5u.com熱心網友回復:
您的選擇似乎完全是任意的,并且由于“使用”下的選項對那些人來說似乎是線性的,我建議使用CHOOSE():

中的公式C2:
=IFERROR(VLOOKUP(B2,E$2:M$4,CHOOSE(--MID(A2,5,99),2,4,5,8),0),"")
往下拖...
這里的邏輯是:
--MID(A2,5,99)- 用于從 A 列中獲取數字。這些似乎是線性的(或者如果“未知”會導致錯誤)。- 上面的結果是 的第一個引數的輸入
CHOOSE(),由于它們是線性空氣,我們可以將每個值寫入第 2 到第 5 個引數中。如果需要,可以縮放。 - 按預期作業,現在
VLOOKUP()應該按照上面的結果回傳列。 IFERROR()是否可以捕獲“未知”給出的任何錯誤。
由于BYROW()似乎正在生產中,因此添加替代方法來為溢位陣列創建單個公式不會有什么害處。這意味著您只需要調整一個公式:

中的公式C2:
=BYROW(A2:B5,LAMBDA(X,IFERROR(VLOOKUP(INDEX(X,2),E$2:M$4,CHOOSE(--MID(INDEX(X,1),5,99),2,4,5,8),0),"")))
順便說一句,感謝寫得好的問題!
uj5u.com熱心網友回復:
有點臟但效果很好:

在您的 Table2 上方,在您希望提取值的位置添加一個轉置行,其中包含 Use 1, Use 2 ...Use N。然后將 VLOOKUP 與 MATCH 結合起來。
我在 D 列中的公式是:
=VLOOKUP(B3;$A$14:$I$16;MATCH(A3;$A$12:$I$12;0);FALSE)
您可以將此捕獲到選項的 IF.ERROR 或 IF 中Unknown。
這種方法的優點是您可以更Use N輕松地添加/切換,只需更改目標范圍。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/427548.html
標籤:excel if-statement excel-formula formula vlookup
上一篇:多個條件if函式在for回圈中
