Как найти Дубликаты - по ссылке на первый столбец? - PullRequest
0 голосов
/ 05 декабря 2018

Я очень новичок в кодировании, поэтому извиняюсь за очень простой вопрос.Я пытаюсь найти дубликаты на листе, проверив значение в первом столбце.

Если значения совпадают, удаляется не самая последняя строка.

function removeDuplicates() {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TEST")
    var data = sheet.getRange(1, 1, sheet.getLastRow()).getValues();
    var newData = [];

    for(var i=0;i<sheet.getLastRow();i++){
        for(j=0;j<newData.length;j++){
            if (newData[j][0] != data[i][0]){
                var fullrange= sheet.getRange(i,1,1,17); newData.push(fullrange);
            }
        }
    }
    sheet.clearContents(); sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}

------------------------------------------------------------------------

Приведенный выше код сопоставляет всю строку друг с другом.Я пробовал несколько кодов из StackOverflow - но все тщетно.

Я ценю, если кто-нибудь может помочь мне с этим!

1 Ответ

0 голосов
/ 05 декабря 2018

Попробуйте:

function removeDuplicates() { 
  var ss=SpreadsheetApp.getActive();
  var sh=SpreadsheetApp.getActive().getSheetByName("Sheet1") 
  var rg=sh.getDataRange();
  var dA=rg.getValues();
  var col=1;//comparison column
  var nA=[];//unique data 
  var cA=[];//unique array of dA[i][col-1] ie the comparson array

  for(var i=1;i<dA.length;i++){ 
    if(cA.indexOf(dA[i][col-1])<0){//if the first column of the current row is not in the cA array then that's a keeper so we put the first column of this row into the cA array and we put the whole row into the nA array.  If it is in the cA array then it's a duplicate so we don't push the first columns or the whole rows.
      cA.push(dA[i][col-1]);
      nA.push(dA[i]);
    }
  } 
  var sheet=ss.getSheetByName('Sheet18');//I used another sheet so I didn't mess up my data sheet
  sheet.clearContents(); 
//nA is a two dimensional array of rows that have column col unique. 
  sheet.getRange(1, 1, nA.length, nA[0].length).setValues(nA); 
}

Как я сказал в комментариях, я использовал другой лист для вывода, потому что я не хотел испортить свой лист данных.Поэтому вам придется немного изменить это, чтобы оно работало для вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...