1. 概述
1.1 預期效果
使用者有時需要截取欄位中多次出現的某個字元指定位置的字元。
例如使用者有欄位長度不同的字元,需要截取最後一個_後的字元,如下圖所示:
或者使用者需要截取 A|B|C 欄位中 B 欄的值,例如使用者需要截取所有學歷資訊,如下圖所示:
1.2 實現思路
使用 INDEXOF 、FIND、MID、SUBSTITUTE、RIGHT 等函式組合實現截取欄位。
2. 截取最後一個指定字元後的字元
範例資料:截取多次出現的字元後的內容.xlsx
上傳範例資料至 FineBI 中,如下圖所示:
2.1 建立分析主題
建立分析主題,上傳下載的範例資料,預設勾選所有欄位,如下圖所示:
2.2 截取指定字元
2.2.1 方法一
新增「新增欄」,命名為「截取最後一個_後的字元」,輸入公式INDEXOF(SPLIT(欄位,"_"),LEN(SPLIT(欄位,"_"))-1),點選「確定」,如下圖所示:
注:公式框中的函式、欄位都需要點選左側的選擇區域選擇,不能手動輸入。
公式說明:
公式 | 說明 | 結果 |
---|---|---|
SPLIT(欄位,"_") | 將欄位按照_分割成陣列 | 分割前:a_b_c 分割後:a,b,c |
LEN(SPLIT(欄位,"_"))-1 | 計算欄位按照_分割後的陣列數-1 | 例如 a_b_c 的計算結果為 2 |
INDEXOF(SPLIT(欄位,"_"),LEN(SPLIT(欄位,"_"))-1) | 傳回SPLIT()分割後陣列在最後一個_後的字元 | 例如 a_b_c 的計算結果為 c |
2.2.2 方法二
1)新增「新增公式欄」,計算「計算欄位按照_分割後的字元數」,輸入公式:LEN(SPLIT(欄位,"_")),例如 a_b_c 的計算結果為 3 ,如下圖所示:
2)新增「新增公式欄」,計算「將最後一個_更換為-」,輸入公式:SUBSTITUTE(欄位,"_","-",LEN(SPLIT(欄位,"_"))-1),如下圖所示:
3)新增「新增公式欄」,計算「從第一個字元開始尋找-所在的位置」,輸入公式:FIND("-",SUBSTITUTE(欄位,"_","-",LEN(SPLIT(欄位,"_"))-1),1),如下圖所示:
4)新增「新增公式欄」,命名為「計算最後一個_後的字元數」,輸入公式:LEN(欄位)-FIND("-",SUBSTITUTE(欄位,"_","-",LEN(SPLIT(欄位,"_"))-1),1),如下圖所示:
5)新增「新增公式欄」,提取欄位中最後一個_後的字元,命名為「截取指定字元」,輸入公式RIGHT(欄位,LEN(欄位)-FIND("-",SUBSTITUTE(欄位,"_","-",LEN(SPLIT(欄位,"_"))-1),1)),如下圖所示:
2.3 效果展示
詳情參見本文 1.1 節。
3. 截取A|B|C 欄位中 B 列的值
注:B 列每筆資料欄位長度不一致。
範例資料:招聘資訊.xlsx
上傳範例資料至 FineBI 中,如下圖所示:
3. 建立分析主題
建立分析主題,上傳下載的範例資料,預設勾選所有欄位,如下圖所示:
3.2 截取指定字元
新增「新增公式欄」,命名並輸入公式:INDEXOF(SPLIT(地區學歷人數,"|"),1) ,點選「確定」,如下圖所示:
注:公式框中的函式、欄位都需要點選左側的選擇區域選擇,不能手動輸入。
公式說明:
公式 | 說明 |
---|---|
SPLIT(地區學歷人數,"|") | 將地區學歷人數欄位根據 | 字元進行劃分 例如:「深圳|本科|招5人」變成「深圳,本科,招5人」 |
INDEXOF(SPLIT(地區學歷人數,"|"),1) | 傳回劃分結果字串第二個位置上的內容 例如:「深圳,本科,招5人」傳回「本科」 |
3.2 效果展示
詳情參見本文 1.1 節。
更多截取欄位內容詳情參見:欄位分欄