=VLOOKUP(VLOOKUP(A7,InventoryLog,5,FALSE),Price_list,IF(Q2InventoryLog!F7="S",2,3),FALSE)
我希望我的函數能夠找到訂單 ID 號,並根據該 ID 號將其與商品名稱進行匹配。如果商品描述較小(「S」),則應返回第 1 列中的價格,如果商品不小,則應傳回第 3 列中的商品。
問題是有時我有一個空白行,所以它會丟棄所有內容。因此,每當出現空白行時,它就會落後一行。
我希望我的公式跳過空白行,並使用下一行中的值。我嘗試調整 IF 函數,但也不起作用。
有3種可能:
IF(Q2InventoryLog!F7="L"...),
IF(Q2InventoryLog!F7="S"...)
IF(Q2InventoryLog!F7=""...)
答案1
我可能離這裡很遠(以前發生過......)但是閱讀你的公式,在我看來你正在尋找的東西並沒有在公式中得到充分的針對。我把它讀為:
=VLOOKUP(VLOOKUP(A7,InventoryLog,5,FALSE),Price_list,IF(Q2InventoryLog!F7="S",2,3),FALSE)
VLOOKUP(A7,InventoryLog,5,FALSE:
A7 有一些訂單 ID 號,找出使用它在 InventoryLog 中找到的記錄的第 5 列中尋找 ItemName。
然後,外部尋找使用該項目名稱在 Price_list 中尋找記錄,並根據 Q2InventoryLog 中的行,傳回 Price_list 中該記錄的第 2 或第 3 列。
從邏輯上講,問題是為什麼 F7 應該是具有 A7 所需記錄的行?顯然,它可能沒有任何關聯:您腦子裡有“7”,只是輸入了“F”和“7”,但是為什麼是“F”,我們如何有效地知道要找到什麼?也許 Q2InventoryLog 應該逐行匹配 InventoryLog 並且做得非常好(或者......在數據被使用,然後更新幾次之後,這將毫無意義!)除了時不時地,空白行會潛入無論什麼原因。
您的問題中沒有解決了解記錄匹配的原因(為什麼 F7 是硬編碼到此的單元格,而不是其他單元格)。您似乎每次都會一次又一次地詢問更多細節,所以也許您會在下一次迭代中解決這個問題。有人可以為您提供更多、更靈活的幫助。不太廣泛。但在那之前,我會給出兩個建議:
您可能想要嘗試以某種方式組織 Q2InventoryLog 數據,其中包括內部查找找到的項目名稱或啟動所有內容的訂單 ID 號碼(第一個在某種程度上是黃金標準,因為它會「更好」) 」數據(尤其是因為它具有更廣泛的用途),但第二種方法將是一種完全有效的方法,因為人們會懷疑這裡的「實地」數據將包括訂單相關信息中的尺寸信息,儘管它不一定在您的問題的更一般版本中工作)。但如果是其中之一,您可以使用第二次內部查找來查找確切的記錄,並選擇 F7 列代表的資料恰好包含並在測試中使用它
IF()
。您可以花點功夫清理空白行的資料。我並不是說傳統的資料清理或追蹤為什麼 Q2InventoryLog 資料會插入空白行。據推測,如果你願意或能夠這樣做,你就會這麼做,問題就會消失(好吧,等待在糟糕的時刻自動出現在你身上)。
我的意思是做一些非常簡單的事情。用於FILTER()
簡單地過濾掉空白行。不要使用 Excel 的過濾功能,因為它會保留行位址,並且仍然需要更多工作來實現此目的。但只是FILTER()
實際的 Q2InventoryLog 資料集具有簡單的「某物 <> 空白」條件,因此它省略了造成困難的空白行。由於 Q2InventoryLog 資料似乎應該一對一匹配,因此就可以解決問題。在查找中,使用FILTER()
產生的表/範圍而不是實際資料。
以這種方式使用的函數的簡單版本FILTER()
可能是:
(假設Q2InventoryLog 中的記錄為C7:F7,整行都是空白,而不僅僅是一行中的某些單元格。因此,如果C12 為空白,則整行都是問題,需要刪除,因為第12 行中所需的資料目前在行中13 且如果第 12 行消失,則會向上移動到右側行。
=FILTER(C3:F27,C3:C27<>"")
顯然,您會對其進行調整以適合您的數據。
上面要講的一點是,有時可以透過不同的概念路徑來處理問題並有一個簡單的解決方案。而不是弄清楚如何使公式知道向下跳一行(第一次是一行,然後在該點以下的所有後續查找中,直到出現另一個空白行,之後所有行都必須知道向下跳,而不僅僅是一行,但現在有兩個,直到...),弄清楚如何使引起問題的行消失。如果您這樣做,並且像這裡一樣,可能只看到麻煩的資料清理或與資料來源的爭論作為唯一的方法,那麼可能會像這裡一樣,還有另一種方法可以做到這一點,而無需這項工作或那些論點。
最後,如果與不幸插入的隨機空白行沒有真正的一對一對應關係,那麼這不會解決問題(嗯......除非事實證明您可以使用 Q2InventoryLog 結構來支援額外的內部查找)。所以你需要再嘗試詢問...
如果是這樣,請嘗試忘記電話公司的技術方法,一次進行一項微小的改進,然後通過多年的盈利,然後添加另一項微小的改進,然後只提供完整的信息。您會發現這對您有更直接的幫助。
答案2
因此,為了讓您的公式能夠容忍空白單元格,我們將使用 ISBLANK():
=IF(ISBLANK(A7), "", VLOOKUP(VLOOKUP(A7,InventoryLog,5,FALSE),Price_list,IF(Q2InventoryLog!F7="S",2,3),FALSE))
如果 A7 為空,這將傳回空白文字。但是,如果您想返回 A8 商品的價格,只需將“”替換為 A8 的公式即可:
=IF(ISBLANK(A7), VLOOKUP(VLOOKUP(A8,InventoryLog,5,FALSE),Price_list,IF(Q2InventoryLog!F8="S",2,3),FALSE), VLOOKUP(VLOOKUP(A7,InventoryLog,5,FALSE),Price_list,IF(Q2InventoryLog!F7="S",2,3),FALSE))