Скрипт листа Google - Фильтрация уникальных значений ячеек - Перенос значений 2D-массива в одну ячейку - PullRequest
1 голос
/ 14 апреля 2020

извините, что беспокою снова, но у меня не получается. Я просто хочу отфильтровать уникальные строки, которые находятся в каждой ячейке диапазона (строки разделяются точкой с запятой). Я не могу вывести sh весь массив значения, только один выходит из результатов. Большое спасибо!

Вот пример: https://docs.google.com/spreadsheets/d/12T5K9LovcFvmeBg82IS89p4ygtZ530mzpY9fIsZQa8w/edit?usp=sharing PS: я использую скрипт, потому что в каждой ячейке слишком много строк для разбиения ячейки по формуле

Вот моя кодировка:

function FilterReferences(){

  var classeur = SpreadsheetApp.getActive();
  var feuille = classeur.getSheetByName('Feuille 1');
  var plage = feuille.getRange('A1:A');
  var plageValues = plage.getValues();
  var NbLignesTotal = plage.getLastRow();

  for (var i = 1; i < NbLignesTotal; i++){
    try {
       var valeurCellule = plageValues[i-1][0];
        if (valeurCellule != ""){
          var source = valeurCellule.split(";");
          var dest = [];
          dest.push(source[0]);

          for (var n = 0 ; n < source.length ; n++){
          if (dest.indexOf(source[n]) == -1){  dest.push(source[n])};   }


        var plageDest = feuille.getRange('B1:B');
        plageDest.getCell(i,1).setValue([dest]);

     }
    } catch (e) {   }
 }
}

1 Ответ

3 голосов
/ 14 апреля 2020
  • Вы хотите добиться следующей ситуации. Каждое значение помещается в ячейку.
    • AAA;BBB;AAA;BBB;CCC до AAA;BBB;CCC
    • AAA;CCC;AAA;DDD;ZZZ;CCC до AAA;CCC;DDD;ZZZ

Как насчет этой модификации? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Шаблон 1:

В этом шаблоне ваш сценарий изменен.

Изменен сценарий:

Пожалуйста, измените следующим образом.

С:
plageDest.getCell(i,1).setValue([dest]);
Кому:
plageDest.getCell(i + 1, 1).setValue(dest.join(";"));
  • В вашем скрипте dest - это массив. Таким образом, для преобразования его в строку используется join.
    • При запуске plageDest.getCell(i,1).setValue([dest]); 1-й элемент помещается в setValue. Я думаю, что это является причиной вашей проблемы.
  • Чтобы поместить значение из строки 2, вместо i.
  • В этом Скрипт, значения создаются в l oop. Затем созданные значения помещаются в ячейки с помощью setValues.

Ссылки:

Если я неправильно понял ваш вопрос, и это не то направление, которое вам нужно, Я прошу прощения.

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