=IF(B12<>"",(IF(U12="訂閱","訂閱",IF(U12="TEH","訂閱",IF(U12="ESA","訂閱",IF(U12= "永久","買入",IF(U12="","")))))))
當 U12 中的值不是選項之一時,我在帶有此公式的單元格中得到一個“假”值,我想得到一個空白感謝任何幫助謝謝
uj5u.com熱心網友回復:
IF(U12=" ", " ")把這個:改成這個:IF(U12=" ", " ", "")。這是 Google 表格中的演示,但公式相同。
https://docs.google.com/spreadsheets/d/10iFqq0PNt9VhGKMPLCxsI1df0x4nDSxCaCGSdEEktO8/edit#gid=0
但是,我認為這并不完全正確。一方面,它看起來像這個子句:
IF(U12=" ", " ")
只是為了嘗試生成您正在尋找的空白。如果是這種情況,則將其更改為:
IF(U12=" ", " ", "")
但是,我想我可能會使用一些陣列常量,如下所示:
=IF(B12<>"", CHOOSE(SUM(--(U12={"Subscription","T.E.H","ESA"})) IF(U12="Perpetual", 2) 1, "", "Subscribe", "Buy"))
為了稍微分解一下,讓我重新格式化以便更容易看到:
=IF(
B12 <> "",
CHOOSE(
SUM(--(U12={"Subscription","T.E.H","ESA"}))
IF(U12="Perpetual", 2) 1
"", "Subscribe", "Buy"
)
)
我將使用 CHOOSE,它接受一個索引號 N 和一個選項串列,它回傳選項串列中的第 N 個元素。為了生成索引,我將使用幾種技術。首先看這個:
U12 = {"Subscription", "T.E.H", "ESA"})
這將針對串列中的所有選項測驗 U12,并回傳一組 TRUE/FALSE 值。如果 U12 匹配陣列常量中的任何元素,則這些值之一將為 TRUE。我們使用 -- 將該陣列從 TRUE/FALSE 強制轉換為 0/1,然后我們使用 SUM 將陣列轉換為單個值。如果 U12 不匹配任何選項,則為 0,如果匹配則為 1。
然后我將使用標準 IF 來檢查 U12 = Perpetual,如果是,則回傳 2。將該結果與之前的總和相加將得到一個最終數字,即 0、1 或 2。
CHOOSE 是 1 索引的,這意味著它期望索引為 1 或更大,因此我們將 1 添加到我們剛剛生成的數字并將其與選項串列一起傳遞給 CHOOSE。
這里的優點是,如果訂閱選項發生變化,您只需更改串列即可,而不必更改一堆嵌套的 IF。此外,如果您需要支持多個購買選項,您可以使用類似的結構來實作:
SUM(--(U12 = {"Subscription", "T.E.H", "ESA"}))
IF(SUM(--(U12 = {"Perpetual", "Buy Now"})), 2) 1
如果您需要添加回傳值,請繼續擴展:
CHOOSE(
SUM(--(U12 = {"Subscription", "T.E.H", "ESA"}))
IF(SUM(--(U12 = {"Perpetual", "Buy Now"})), 2)
IF(SUM(--(U12 = {"Release", "Dropping"})), 3) 1,
"", "Subscribe", "Buy", "Sell"
)
如果您認為這可能需要維護或選項可能會更改,我會像這樣設定它,而不是嵌套的 IF。
uj5u.com熱心網友回復:
這是不是更清楚了一點?
=IF(B12=""," ",IfError(VLookup(U12,{"ESA","Subscribe";"Perpetual","Buy";"Subscription",Subscribe";"T.E.H.","Subscribe"},2,false)," "))
這實際上只是一個表查找,因此使用了 VLookup。查找陣列是大括號中的二維陣列 - 逗號和分號對于為 VLookup 定義 2x4 陣列非常重要。IFError 函式告訴如果查找失敗,如何回傳您想要的“”結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/352394.html
上一篇:帶變數的VBA獨特公式
下一篇:使用動態陣列公式轉換和過濾表格
