#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, а не добавлять еще один…