removeDuplicates():移除重複資料

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

之前在三招移除重複資料的教學,介紹了用三種方式來把工作表上的重複資料移除,各自有各自適合的場景,其實還有一招是 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 欄位是否有重複資料。

以這圖來說,目前勾選的就是指定分析 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,我們下個教學見!



avatar-img
14.0K會員
147內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
本篇參與的主題活動
先前麥克買了在預算及性能方面都十分複合需求的NXTPAPER 11平板,但拿到辦公室使用後便發現因為時不時有簡報需求,主機本身不支援有線視訊輸出實在是非常不方便,因又開始尋找新歡。最終麥克選擇了算是還滿熟悉的品牌小米旗下的小米平板6,以下為麥克這一個月下來的使用心得。
從預計的十月底出貨經過重重波折,Pubu自家開發的10寸彩色閱讀器Pubook Pro終於是送到第一批集資者手中了。究竟這台閱讀器有沒有本事撼動目前的電子紙閱讀器市場?有達到集資時承諾的各項功能嗎?且讓身為首批集資者之一的麥克跟大家談談收到主機後使用數天的感想。
Steam Deck 迎來大改版,最重要的更新就是換成 OLED 螢幕。使用 OLED 螢幕帶來更好看的顏色,大小還小幅提升到 7.4 吋。關係續航力的電池也從 40 瓦小時升級到 50 瓦小時, 3A 大作都可以多玩一小時呢!這麼香的更新,怎麼不給他買下去呢 😄
先前麥克買了在預算及性能方面都十分複合需求的NXTPAPER 11平板,但拿到辦公室使用後便發現因為時不時有簡報需求,主機本身不支援有線視訊輸出實在是非常不方便,因又開始尋找新歡。最終麥克選擇了算是還滿熟悉的品牌小米旗下的小米平板6,以下為麥克這一個月下來的使用心得。
從預計的十月底出貨經過重重波折,Pubu自家開發的10寸彩色閱讀器Pubook Pro終於是送到第一批集資者手中了。究竟這台閱讀器有沒有本事撼動目前的電子紙閱讀器市場?有達到集資時承諾的各項功能嗎?且讓身為首批集資者之一的麥克跟大家談談收到主機後使用數天的感想。
Steam Deck 迎來大改版,最重要的更新就是換成 OLED 螢幕。使用 OLED 螢幕帶來更好看的顏色,大小還小幅提升到 7.4 吋。關係續航力的電池也從 40 瓦小時升級到 50 瓦小時, 3A 大作都可以多玩一小時呢!這麼香的更新,怎麼不給他買下去呢 😄
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
#小倉鼠 #社畜逃脫筆記 #自我成長 #財務自由 #PODCASTS #說書 #思考 #筆記#從未來寫回來的逆算手帳#小堀純子#采實文化#目標#計劃 #習慣#感覺管理#願景#計畫#行動#失焦 #煩燥 #拖延#逆算#順利#感覺管理#被動#安心感#自我實現#人生願景#100件願望清單#被動#安心感#自我
Thumbnail
台灣零售媒體第一品牌 TenMax,帶你即時掌握行業內的最新發展與觀點分析。這週,我們將聚焦在 Walmart 的零售數據策略、美國三星電子的新型智慧螢幕計畫,以及 Meta 逐步移除敏感受眾標籤對產業的可能影響。接下來就讓 TenMax 帶您了解本週零售媒體發展。 
Thumbnail
之前在三招移除重複資料的教學,介紹了用三種方式來把工作表上的重複資料移除,各自有各自適合的場景,其實還有一招是 Apps Script 上可以操作的,就是今天要介紹的 removeDuplicates() 這個方法(method)。
Thumbnail
由於遇到系統不支援歐洲語系的重音符號或變音符號因此有了這篇文章
Thumbnail
Remove Duplicates from Sorted Array : 將陣列中的重複值移除,並回傳陣列裡的元素總數。
Thumbnail
總是有那麼一個 moment,你就是希望某個人和物憑空消失 😛。 在拍照或攝影時,相信大家都會遇到的痛點—那就是在照片或圖像中出現了一些不需要的人或物。不過這個不如人意的「驚喜」,在 AI 時代是很好解決的。運用AI 運算和模擬,在彈指之間我們就能讓不需要的物件消失。
Thumbnail
正好家裡種了5年以上的仙人掌有一顆得了「軟腐病」,必須做手術,防止繼續惡化,影片紀錄如何判別感染區塊,與移除,以及側芽分株及如何重新種植。
Thumbnail
在 UiPath 的學習道路上,我們常會對這些各項功能、參數感到混亂,因此 RPAI 數位優化器的系列文章將會對這些功能參數進行解說。這篇文章要介紹的是:Excel 資料處理常使用的 Remove Duplicates Range 功能,協助刪除指定區域中所有重複的列,保留最原始的一列資料!
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
#小倉鼠 #社畜逃脫筆記 #自我成長 #財務自由 #PODCASTS #說書 #思考 #筆記#從未來寫回來的逆算手帳#小堀純子#采實文化#目標#計劃 #習慣#感覺管理#願景#計畫#行動#失焦 #煩燥 #拖延#逆算#順利#感覺管理#被動#安心感#自我實現#人生願景#100件願望清單#被動#安心感#自我
Thumbnail
台灣零售媒體第一品牌 TenMax,帶你即時掌握行業內的最新發展與觀點分析。這週,我們將聚焦在 Walmart 的零售數據策略、美國三星電子的新型智慧螢幕計畫,以及 Meta 逐步移除敏感受眾標籤對產業的可能影響。接下來就讓 TenMax 帶您了解本週零售媒體發展。 
Thumbnail
之前在三招移除重複資料的教學,介紹了用三種方式來把工作表上的重複資料移除,各自有各自適合的場景,其實還有一招是 Apps Script 上可以操作的,就是今天要介紹的 removeDuplicates() 這個方法(method)。
Thumbnail
由於遇到系統不支援歐洲語系的重音符號或變音符號因此有了這篇文章
Thumbnail
Remove Duplicates from Sorted Array : 將陣列中的重複值移除,並回傳陣列裡的元素總數。
Thumbnail
總是有那麼一個 moment,你就是希望某個人和物憑空消失 😛。 在拍照或攝影時,相信大家都會遇到的痛點—那就是在照片或圖像中出現了一些不需要的人或物。不過這個不如人意的「驚喜」,在 AI 時代是很好解決的。運用AI 運算和模擬,在彈指之間我們就能讓不需要的物件消失。
Thumbnail
正好家裡種了5年以上的仙人掌有一顆得了「軟腐病」,必須做手術,防止繼續惡化,影片紀錄如何判別感染區塊,與移除,以及側芽分株及如何重新種植。
Thumbnail
在 UiPath 的學習道路上,我們常會對這些各項功能、參數感到混亂,因此 RPAI 數位優化器的系列文章將會對這些功能參數進行解說。這篇文章要介紹的是:Excel 資料處理常使用的 Remove Duplicates Range 功能,協助刪除指定區域中所有重複的列,保留最原始的一列資料!