我想要一個谷歌應用腳本,可以洗掉電子表格中某一特定列(例如第一列是唯一的ID)有重復值的行。現在,我想讓它特別保留最底層的重復行,并洗掉上面所有的重復行。
在下面的圖片中,你可以看到突出顯示的ID是重復的,因為他們的郵編已經被改變。我想保留最底層的重復行并洗掉上面的行。例如,對于Lydia和Lizzy,我想保留第9行和第10行,它們有最新的郵政編碼,我想洗掉第2、5和8行。
是否有一個谷歌應用程式腳本可以做到這一點?
uj5u.com熱心網友回復:
不清楚你為什么要在這里使用一個腳本,因為一個范圍可以通過一個普通的電子表格公式來過濾,就像這樣:
=arrayformula(
iferror(
vlookup(
unique(A2: A),
sort(A2:D, row(A2:D), false) 。
column(A2:D)。
false
)
)
)
要用唯一的結果替換你的原始資料,使用ControlC來復制,ControlShiftV來粘貼數值即可。在Mac上,使用?C和?ShiftV。
問題中提到了Apps Script,所以這里有一個自定義函式來做同樣的事情,同時還有一個簡單的函式,用它來過濾電子表格中的一個硬編碼范圍。
/***
* 洗掉'Sheet1!A2:D'中的重復內容。
* 保留每一個最后出現的鍵的行。
*其他行被清除。
*/
function removePriorDuplicates() {
const range = SpreadsheetApp. getActive().getRange('Sheet1! A2:D')。
const uniques = getLastUniques(range.getValues), 0)。
范圍
.clearContent()
.offset(0, 0, uniques。 length, uniques[0].length)
.setValues(uniques)。
}
/**。
* 在鍵列中每一個唯一的鍵都準確地獲得一條記錄。
* 保留每個最后出現的鍵的行。
* 其他行被過濾掉。
* @param {Object[][]} array2D 要過濾的陣列。
* @param {Number} columnIndex 出現鍵值的零指數列號。
* @return {Object[][]} 一個二維陣列,其中只有一個鍵。一個二維陣列,每個鍵只有一個副本。
* @customfunction */ */ 一個二維陣列,每個鍵只有一個副本。
*/
function getLastUniques(array2D, columnIndex) {
// version 1.0, written by --Hyde, 16 September 2021
// - 見https://stackoverflow.com/a/69204946/13045193。
const keys = array2D.map(row =>row[columnIndex])。
return array2D.filter((row, index) =>/span> keys。 lastIndexOf(row[columnIndex]) ==index)。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/319347.html
標籤:
