星期六, 10月 04, 2025

[Sheets] Filter() - 多欄位只存在一個值

突然收到的需求,下述資料欄位一、欄位二、欄位三只能有一個欄位能填入[是],但拿到資料時已經亂掉,存在多個欄位同時填入[是],要找出這些異常資料
解法一:Filter 篩選資料

透過 Filter 來進行篩選,公式如下 

=FILTER(A:D,
    (B:B = "是") + (C:C = "是") + (D:D = "是") >= 2
)

結果如下
解法二:CountIf() + Filter()

先在 E 欄位輸入 =COUNTIF(B2:D2,"是") >=2,判斷三個欄位資料是否正確,之後再使用 Filter 來判斷 =FILTER(A2:E8,E2:E8 = true)
效能問題

(B:B = "是") + (C:C = "是") + (D:D = "是") 語法,很明顯是布林值被隱含轉換為 false => 0、true => 1 相加,涉及隱含轉換就直覺會有效能問題,詢問 AI 是說不會,初學 Sheets 還沒能力識別真偽,倒是偷懶資料範圍直接寫 A:D,在官方文件-將資料參照最佳化以改善試算表的效能 內有說明,要使用封閉式範圍參照 (A2:D8),不要使用開放式範圍參照 (A:D),也就是解法二資料範圍寫法

沒有留言:

張貼留言