概括:
我需要根據陳述句=VLOOKUP
的結果使用不同的列號。=RIGHT
我當前的公式按預期執行此操作,但如果我需要添加更多潛在的=RIGHT
陳述句結果,則不容易擴展。有沒有辦法有效地擴大規模?
用例:
我有一個公式可以將"Use 1"
, "Use 2"
,或"Use 3"
,插入 Column 。然后Column需要執行 a ,這將根據列中的最后一個字符而有所不同,并回傳不同的列號。例如,如果單元格包含文本,我將需要回傳. 如果單元格包含,我將需要回傳(列號是非線性的)中的第 8 列。"Use 4"
"Unknown"
A
B
=VLOOKUP
A
A1
"Use 1"
=VLOOKUP
A2
"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回圈中