我有一個要查詢的 Google Sheets 資料庫。我希望查詢基于 B、C 和 D 列中的資料,并在滿足條件時回傳所有資料。我有這三列的搜索條件的輸入單元格,我希望查詢執行以下操作:
- 忽略在搜索單元格中沒有輸入值的搜索條件
- 在給定單元格中有值的地方使用 AND 邏輯
例如,輸入單元格中的搜索條件:
- 乙 = "1"
- C = 空白
- D 包含“該”
我希望查詢回傳資料,其中 C 是任何東西,B = "1" 并且 D CONTAINS "the"。
另一個例子:
- 乙 = "1"
- C = "E"
- D 包含“該”
我希望查詢回傳滿足所有三個條件的資料
我希望 D 在所有情況下都不為空。
我無法將空條件合并到查詢中。我已經嘗試根據給定的搜索單元格中是否有資料動態使用 AND/OR,但我無法讓它作業。
因此,我創建了一個非常長的查詢來解釋 B、C 和 D 的所有可能組合。這可行,但我想合并更多的搜索條件,并且這個等式在 4、5 或更多搜索條件下變得更加復雜.
這是上面第一個示例的查詢輸入和查詢結果的影像(我不確定為什么 Name 列中的某些值不包含“the”)。 查詢表圖片
這是我正在查詢的資料庫的影像: Image of Database Sheet
這是我正在使用的等式:
=if(and(B4="",C4=""),query(DATABASE!A1:E,"SELECT * WHERE D contains '"&D4&"' and D IS NOT NULL order by D asc",1),
if(and(B4<>"",C4=""),query(DATABASE!A1:E,"SELECT * WHERE D contains '"&D4&"' and B matches '"&B4&"' and D IS NOT NULL",1),
if(and(B4="",C4<>""),query(DATABASE!A1:E,"SELECT * WHERE D contains '"&D4&"' and C matches '"&C4&"' and D IS NOT NULL",1),
if(and(B4<>"",C4<>""),query(DATABASE!A1:E,"SELECT * WHERE D contains '"&D4&"' and B matches '"&B4&"' and C matches '"&C4&"' and D IS NOT NULL",1),
if(D4="",query(DATABASE!A1:E,"SELECT * WHERE B matches '"&B4&"' "&IF(AND(B4<>"",C4<>""),"AND","OR")&" C matches '"&C4&"' and D IS NOT NULL",
1),FALSE)))))
我的問題:我想簡化這個等式,以便它可以擴展到多個搜索條件(超過 3 個)。感謝您的幫助!
uj5u.com熱心網友回復:
嘗試這個:
=QUERY(
DATABASE!A:E,
"WHERE D IS NOT NULL"
& IF(B4 = "",, " AND B = " & B4)
& IF(C4 = "",, " AND C = '" & C4 & "'")
& IF(D4 = "",, " AND D CONTAINS '" & D4 & "'")
& " ORDER BY D",
1
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/335178.html
