請問 A 欄有幾個「喜特先生」?
5 個?我也覺得應該是 5 個。
可是如果我們把這範圍選起來,用
資料透視表抓來一看:
嗯?怎麼會這樣?
我們把儲存格一個個點開來檢查一下,發現 A6 的「喜特先生 」塞了一個隱形的空格,所以資料透視表把「喜特先生」跟「喜特先生 」會被視為兩種不同的資料了。
對不起,可是舉這個例子不是為了存心整大家的!
如果你的試算表是從其他檔案轉檔過來、或是你開放試算表給大家編輯、或是你從網頁複製東西貼到試算表的時候,這種小插曲或許就會發生。
你可以想像一下,如果有這樣含有空白的資料:
- 會不會讓你的 VLOOKUP / XLOOKUP 失敗呢?
- 會不會讓你的統計資料失準呢?
- 會不會讓你苦心寫好的函式莫名其妙地發生錯誤呢?
以上都有可能!
所以,這次會跟大家分享怎麼移除儲存格值裡的空格,讓你的資料更乾淨。
這次要討論的空格是頭尾半形有空格的狀況,例如:
「 喜特先生」、「喜特先生 」、「 喜特先生 」
如果是字跟字的中間有半形空格、或是有全形空格,就可能需要用別的方法來解決(例如使用 REGEXREPLACE、INDEX + SPLIT、REPLACE + FIND/FINDB、尋找與取代等等的),今天先不討論囉!
裁剪空格功能
步驟很簡單,選取要移除空白的範圍,點選工具列的「資料」> 「資料清除」>「裁剪空格」,點下去就做完了。
TRIM 函式
- 動態資料、靜態資料皆可使用
- 使用場合:移除頭尾半形空白
這函式的功能和上面的「裁剪空格」一樣,可以移除頭尾的半形空白。語法也非常單純,寫下 TRIM、把儲存格或文字放進去括號裡面就好了:
=TRIM(儲存格)
=TRIM(文字)
就這麼簡單!
Google Apps Script
這個操作在 Google Apps Script 也有。用 get 選定範圍後,用 trimWhitespace() 這個方法就可以了,也會裁掉儲存格前後的空格。
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
const range = sheet.getRange('A1:A4');
range.trimWhitespace();
寫自動化腳本的時候,我也會連著上次「
三招移除重複資料」中提到的removeDuplicates() 方法一起用,像是這樣:
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
const range = sheet.getRange('A1:A4');
range.trimWhitespace().removeDuplicates();
要把兩個方法分開來寫,也當然沒問題:
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
const range = sheet.getRange('A1:A4');
range.trimWhitespace();
range.removeDuplicates();
這是我在做資料清理的時候,會連著移除重複資料(請參考:
三招移除重複資料)一起完成的步驟。這樣一個小步驟,有機會讓你的資料準確度提升很多喔!
如果你喜歡這篇文章,請幫我按個愛心支持、或把它收藏起來吧!也歡迎你贊助支持我的教學,也可以在 Liker 按鈕幫我拍拍手,很謝謝你的支持!如果有任何問題或鼓勵,也都歡迎留言一下,讓我知道我還可以怎麼幫助你唷。
我是喜特先生,Mr. Sheet,我們下個教學見!