更新於 2024/10/22閱讀時間約 5 分鐘

removeDuplicates():移除重複資料

之前在三招移除重複資料的教學,介紹了用三種方式來把工作表上的重複資料移除,各自有各自適合的場景,其實還有一招是 Apps Script 上可以操作的,就是今天要介紹的 removeDuplicates() 這個方法(method)。

removeDuplicates() 就是「移除重複內容功能」的 Apps Script 版,會刪除指定範圍內,任何跟前一列重複的列,隱藏列、或是篩選器篩出來的值如果有重複也會被移除。至於怎樣算是重複,Apps Script 官方文件的定義是「就算大小寫不同、格式不同、算式或函式不同,只要值相同就算是重複」。

所以按照這個定義,我來舉一些會被視為重複值的例子給你參考:

  • Abc、abc、aBc
  • 3 + 3 < 6、4 + 4 < 8、10 + 10 > 20(因為結果都是 FALSE
  • 紅底黑字的 123 、綠底白字的 123




使用場景

當然就是清理數據的時候了!我喜歡在這種腳本的開頭、或是末端加入 removeDuplicates(),大概像是這樣:

function dataCleaning() {

// 宣告變數;
​range.removeDuplicates();
// 清理步驟一;
// 清理步驟二;
// 清理步驟三;
​range.removeDuplicates();

}

以上面的例子來看,腳本會先在進入清理步驟之前把眼前的範圍清理重複資料,然後跑完所有的清理步驟後、再移除重複資料,這麼一來就可以確保每筆資料都是不重複的了。

我也喜歡把它跟可以裁切多餘空白的 trimWhitespace() 方法一起用,像這樣:

function dataCleaning() {

// 宣告變數;
range.trimWhitespace();
​range.removeDuplicates();
// 後續步驟...

}

最後要注意 removeDuplicates() 只能移除靜態的資料,沒辦法移除某些函式輸出的動態資料,像是 QUERYIMPORTRANGEGOOGLEFINANCE 等函式,這時會建議搭配 UNIQUE 或是其他可以整理陣列的函式。

如果你需要複習上面的這些函式,傳送門這邊請:




語法講解

removeDuplicates()

這個方法(method)是在 range 的類別(class)底下,要先定義範圍才可以用這個方法來去除重複資料。語法相當簡單,在範圍後面寫 removeDuplicates() 就可以了。舉例:

function dataCleaning() {

const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
const range = sheet.getRange("A:E");

range.removeDuplicates();

}

這個就會對目前正在編輯的工作表中,A 欄到 E 欄的範圍裡移除重複的資料了。


removeDuplicates([要分析的第 N 欄位])

就像「移除重複內容」功能,你還可以指定要分析的欄是什麼:

以這圖來說,目前勾選的就是指定分析 A、C 跟 E 欄位是否有重複資料。

語法也很簡單,只要在方法的括號裡面輸入方括號與欄位的索引數字就可以,像是這樣:

function dataCleaning() {

const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
const range = sheet.getRange("A:E");

// 分析指定範圍的第一個欄位
range.removeDuplicates([1]);

}

我在這邊寫的是 [1],代表要讓 removeDuplicates() 方法分析指定範圍(A:E)內的第一欄,也就是 A 欄了。

如果你有兩個以上的欄位要分析,也當然沒問題,輸入的數字用逗號隔開就可以了。像是這樣:


function dataCleaning() {

const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
const range = sheet.getRange("A:E");

// 分析指定範圍的第一個、第三個、第五個欄位
range.removeDuplicates([1, 3, 5]);

}

這邊寫的是 [1, 3, 5],就是指定範圍的第一個、第三個跟第五個欄位,也就是對應到指定範圍的 A 欄、C 欄跟 E 欄了。

如果你的指定範圍不是從 A 欄開始,記得小心算一下,免得分析到錯的欄位喔。




移除重複資料的 Apps Script 是不是沒有你想像中來得那麼難呢?希望經過我的解釋,有讓你覺得比較安心。


如果你喜歡這次的文章,歡迎你透過這些方法支持我:

  • 按下愛心、按下儲存
  • 留言告訴我你的想法
  • 加入喜特先生的官方沙龍,即時看到我發布的教學
  • 付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
  • 追蹤喜特先生的 Facebook
  • 這邊小額贊助我的創作!

想要看更多文章的話,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!

我是喜特先生,Mr. Sheet,我們下個教學見!



分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.