使用 Google 試算表產生表格資料,因為匯入的網站要求文字類型資料需要前後加上雙引號。透過CHAR(34) 或「規則運算式」(Regular Expression) 可以快速地批次處理多個欄位值,而不用悲情地逐一手動修改。
1. 選取要替換文字的區域
2. 上方選單 【編輯】--> 【尋找及取代】
3. 尋找輸入「^(.*)$」、取代為輸入「"$1"」,記得勾選「使用規則運算式進行搜尋」後,按「全部取代」完成取代。
(2) * 代表比對前一個文字出現 0 次或多次以上。因此 .* 代表任意一個文字出現 0 次或多次以上
(3) (.*) 欄位值包含多個文字,加上括號編成一群方便後續處理
(4) ^(.*)$ 中的 ^ 符號代表欄位值開始位置、 $ 符號代表欄位值結束位置
一般文字編輯器軟體不需要加上開始位置、結束位置的條件,但是 Google 試算表的取代結果發生錯誤,所以需要再加上這個搜尋條件。
(5) "$1" 中的 $1 代表符合搜尋條件 (.*) 的欄位值。因為目的是欄位值的前後,要加上雙引號,所以 $1 前後加上 " 符號
4. 可以看到欄位值的前後,已經加上雙引號
規則運算式是快速處理文字的工具 |
解決方法
狀況1:儲存格包含公式
因為 Excel 使用雙引號作為公式的開始與結束符號,如果要在公式顯示雙引號,有兩種作法
(1) 輸入兩次的雙引號:
例如下圖 C2 儲存格使用的公式
=""""&A2&""" "&B2
(2) 使用 CHAR(34)
我個人偏好使用 CHAR 函數,可以避免使用重複雙引號,比較方便除錯。
如果要將 A2 儲存格欄位值的前後加上雙引號則是
= CHAR(34) & A2 & CHAR(34)
下圖 C2 儲存格使用的公式
= CHAR(34) & A2 & CHAR(34) & " " &B2
狀況2:儲存格內沒有公式
2. 上方選單 【編輯】--> 【尋找及取代】
3. 尋找輸入「^(.*)$」、取代為輸入「"$1"」,記得勾選「使用規則運算式進行搜尋」後,按「全部取代」完成取代。
語法說明
(1) . 代表任意一個文字 (character),通常不包含換行符號,但是 Google 試算表支援(2) * 代表比對前一個文字出現 0 次或多次以上。因此 .* 代表任意一個文字出現 0 次或多次以上
(3) (.*) 欄位值包含多個文字,加上括號編成一群方便後續處理
(4) ^(.*)$ 中的 ^ 符號代表欄位值開始位置、 $ 符號代表欄位值結束位置
一般文字編輯器軟體不需要加上開始位置、結束位置的條件,但是 Google 試算表的取代結果發生錯誤,所以需要再加上這個搜尋條件。
(5) "$1" 中的 $1 代表符合搜尋條件 (.*) 的欄位值。因為目的是欄位值的前後,要加上雙引號,所以 $1 前後加上 " 符號
4. 可以看到欄位值的前後,已經加上雙引號
其他的解決方法
如果確定欄位值不會有英文,則可以尋找輸入「([^a-zA-Z]+)」、取代為輸入「"$1"」,記得勾選「使用規則運算式進行搜尋」後,按「全部取代」完成取代。
無效的嘗試
夥伴輸入「[[:word:]]」卻沒有作用。RE2 regular expression syntax reference 文件說明[[:word:]] word characters (== [0-9A-Za-z_])意思是語法 [[:word:]] 對應到數字 0 ~ 9、大寫英文 A ~ Z、小寫英文 a ~ z 以及底線 _ 等文字。所以在以中文為主的文字資料,搜尋語法並不適用。
相關資料
- 搜尋及使用尋找與取代功能 - 電腦 - 文件編輯器說明
- 正規表示式 - 维基百科,自由的百科全书
- Regular Expressions Reference: Basic Features
- [實用] 用 Regular Expression 做字串比對 · Larry
- Regular Expression Reference: Capturing Groups and Backreferences
- Regular expression - LemonWiki共筆
- CHAR 函數 - Microsoft 支援服務
相關工具
圖片素材
- 規則運算式語法的說明圖片使用 Regexper 產生,創用 CC 姓名標示授權
- 相片來源 Free Photo of space, rocket, liftoff - StockSnap.io (Thanks, SpaceX!)
留言
張貼留言