VLOOKUP,如果存在則使用其他值

VLOOKUP,如果存在則使用其他值

抱歉,Excel 不太好,但我想要實現的是位於sheet1單元格R7中的vlookup:

=VLOOKUP(F2,config!F2:H20,3,FALSE)

其中顯示房間號,例如1

但是,如果列中已存在房間,我希望它在 VLOOKUP 中查找列中尚不存在的另一個值。

我使用(位於sheet1單元格R8中)檢查它是否存在於列中:

=COUNTIF(E2:E20,R7)>0

因此,如果此查詢為 FALSE,則可以使用上面的 VLOOKUP,但如果傳回 TRUE,則應繼續搜索,直到找到 FALSE。

表1:

在此輸入影像描述

配置表:

在此輸入影像描述

希望這是有道理的

答案1

所以這個想法似乎是你想要一份尚未提交的房間清單。您將根據一些有用的標準從中選擇一個。

我會採取與你嘗試不同的方式。 ID:

  1. 在某處建立所有可用房間的清單。也許是簡單的1-100,也許更複雜。在您隱藏或不隱藏的幫助表上的表格中建立它。將其創建為命名範圍,這樣它既方便又不易被用戶「破壞」。

  2. 取得它並刪除已提交列中的房間(Sheet1 上的「房間」)。

  3. 選擇一種方法來選擇剩餘房間中要提交的房間。

下面,我在 C1:C12 中建立房間 1-12 的清單。已預訂房間清單位於 A1:A4。您可以變更這些範圍以適應:使用您建立的所有房間的清單以及 Sheet1 上的「房間」列。然後,我將「存在」清單中的每個房間與「已提交」清單中的每個房間進行比較。

最內在的層面是IF()進行比較。它有""TRUE(已承諾)房間的結果。我給它的結果為 FALSE,但事實上,這並不重要,如果您想要更新電子表格的一年內缺少的參數不會令人困惑,則可以忽略該結果。許多人會覺得它令人困惑,所以我把它放進去。

無關緊要的原因是測試將為尚未提交的房間產生錯誤並停止,永遠不會得到 FALSE 結果。你實際上想要所有那些給出錯誤的房間。因此,我用 an 來IFERROR()捕獲它們並給它們一些有用的結果:正在測試的任何值。所以這一切都給了你一堆空白和一堆未使用的房間。

我曾經UNIQUE()將空白的數量減少到只有 1 個。如果您沒有UNIQUE()(問題是從 2019 年開始的,發布者可能有也可能沒有,但任何擁有早期版本的人都沒有),您可以執行以下步驟,只是略有不同。

接下來我SORT()對結果進行了編輯以使它們按順序排列。如果這並不重要,則沒有必要;如果您的「現有」房間清單是為了開始,則沒有必要。但它確實把空白放在最後。如果SORT()因為沒有該功能而不能,則空白將是第一個。最後讓我選擇第一個“除一個房間外的所有房間”,INDEX()這樣空白就消失了。這比選擇最後一個“除一個房間外的所有房間”來刪除它更容易。更容易理解。這並不是特別難做到,但更加複雜,一年後就更難遵循。

如果您無法將空白減少到 1,那麼不要像COUNTA()我那樣對結果執行 並從中減去 1,而是對COUNTA()結果執行 並從中減去COUNTA()「已提交」的房間。

由於我只想將單列輸入作為單列結果,因此INDEX()有時並不嚴格需要使用“1”作為列參數。如果使用像我在這裡所做的那樣的形式ROW(1:xxx)(因為...... 2019等等),則不需要。但如果你今天這樣做並使用niceSEQUENCE()函數,那麼它肯定是需要的。無論出於何種原因,如果將其用作 中的值INDEX(),通常必須指定另一個值,無論這是否有意義。

所以無論如何,您現在有了尚未「提交」的房間的有序清單(以一種或另一種方式)。您可以使用行和列來選擇它,並用另一個INDEX()包裹在它周圍,或者使用“1”和一個公式來計算剩餘的未“提交”房間。也許只是選擇編號最低的非「承諾」房間。或者……好吧,你明白了。有很多方法。如果隨機化房間使用很重要,則使用某種適當的方式進行隨機化,如果不重要,則採用簡單的方法。無論什麼想法對你來說都是最好的。您甚至可以透過以某種非順序方式對「現有」房間進行排序來在「現有」房間清單中執行此操作。有很多方法可以做到這一點。,1,1RANDBETWEEN()MIN()RANDBETWEEN()MIN()

答案2

你可以試試這個:

在此輸入影像描述

單元格 J2 中的公式:

=IF(AND(F2="是",I2="是"),"",IF(F2="是",INDEX(H2:H11,MATCH("否",I2:I11,0))," ”))

注意

  • 為了更好地理解我在第一列中添加了值,您可以根據需要修改它們。
  • 根據需要調整公式中的儲存格引用。

相關內容