1. 概述
1.1 應用場景
有時候我們要判斷一個多項字串是否至少有一項被另外個字串包含。
如:有一批貨原本是屬於"A 供貨商,B 供貨商"的,結果卻被"B 供貨商,C 供貨商"拼車拉走了。
這批貨有沒有出問題呢,只要判斷"A 供貨商,B 供貨商"中是否至少有一項在"B 供貨商,C 供貨商"中,如果有就沒問題。
1.2 實現思路
將兩個字串都轉化為陣列,判斷一個陣列的每一項是否存在其中一項在另外個陣列中,如果有,則包含,否則不包含。
2. 解決步驟
1)將字串1分割成陣列:=SPLIT(字串1,",")
2)確定第二個字串轉化為陣列:=IF(FIND(",", 字串2) > 0,SPLIT(字串2,","), ARRAY(字串2))
這是因為字串 2 中如果沒有分隔符,則=SPLIT(字串2,",")的結果還是一個字串。
字串 1 就算沒轉化成功也能參與後面的運算,就不強制。
3)判斷字串1轉化的陣列的每一項是否存在字串 2 陣列中:=GREPARRAY(字串1陣列, INARRAY(item, SPLIT(字串2陣列,",")) > 0)
這裏使用了 INARRAY( ) 函式來判斷是否存在, INARRAY( ) 的第二個參數一定要是陣列,這就是第二步需要強制轉化的原因。
4)判斷上一步結果的項數,項數大於0則包含,否則不包含:=IF(LEN(上一步結果)>0,"包含","不包含")
5)綜合判斷公式為:=IF(LEN(GREPARRAY(SPLIT(字串1,","), INARRAY(item, IF(FIND(",", 字串2) > 0, SPLIT(字串2,","), ARRAY(字串2))) > 0)) > 0, "包含", "不包含")
3. 範例
3.1 範本設計
1)將資料集欄位拖到儲存格 A2、B2 ,如下圖所示:
2)依次選中 C2~G2 儲存格,設定形態公式,如下表所示:
儲存格 | 公式 | 作用 |
C2 | SPLIT(A2,",") | 將字串1分割成陣列 |
D2 | IF(FIND(",", B2) > 0, SPLIT(B2,","), ARRAY(B2)) | 第二個字串轉化為陣列 |
E2 | GREPARRAY(C2, INARRAY(item, SPLIT(D2,",")) > 0) | 判斷字串1轉化的陣列的每一項是否存在字串 2 陣列 |
F2 | IF(LEN(E2)>0,"包含","不包含") | 判斷上一步結果的項數,項數大於0則包含,否則不包含 |
G2 | IF(LEN(GREPARRAY(SPLIT(A2,","), INARRAY(item, IF(FIND(",", B2) > 0, SPLIT(B2,","), ARRAY(B2))) > 0)) > 0, "包含", "不包含") | 整合公式 |
3.2 效果預覽
1)PC端
儲存範本,點選PC端預覽,如下圖所示:
2)行動端
4. 範本下載
點選下載範本:判斷多項字串至少一項被包含.cpt