Таблицы Google: настройте строки в столбце B так, чтобы они располагались перед теми же строками столбца A (сценарий)

#google-apps-script #google-sheets

#google-apps-script #google-sheets

Вопрос:

В моем листе есть столбец A и столбец B со следующим набором записей:

 COLUMN A   COLUMN B
value1     value1
value2     value4
value3     value6
value4
value5
value6
...
  

Таким образом, некоторые записи отсутствуют в столбце B.
Используя script, мне нужно обновить столбец B, чтобы он выглядел так:

 COLUMN A   COLUMN B
value1     value1
value2     
value3     
value4     value4
value5
value6     value6
...        ...
  

Комментарии:

1. У вас есть строка заголовка?

Ответ №1:

Попробуйте следующий код

 function myFunction() {
  let colB = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("B:B");
  let colBValues = colB.getValues().filter(val => val[0].length > 0);
  let colAValues = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A:A").getValues();
  colB.clear();
  colBValues.forEach(valB => {
    let r = colAValues.findIndex(valA => valA[0] == valB[0]);
    if(r !== -1) {
      r = r   1; //because js array index begins at 0 but gSheet begins at 1
      SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(r, 2).setValue(valB[0]);
    }
  })
}

  

Ответ №2:

Я использую script только в том случае, если что-то невозможно с помощью формулы. В этом случае вы могли бы получить желаемый результат в столбце C, введя следующую формулу в C1. =ArrayFormula(IFERROR(if(len(A:A),VLOOKUP(A:A,B:B,1,false),),))

Комментарии:

1. Дело в том, что мои данные в столбцах A и B уже предварительно заполнены с помощью довольно сложного скрипта, поэтому мне нужно настроить существующий столбец B, а не добавлять еще один…