Объединение ячеек с одинаковым значением
Имею таблицу вида
| Дата | Действие |
|---|---|
| 31.05.22 | вверх |
| 31.05.22 | низ |
| 31.05.22 | низ |
| 01.06.22 | низ |
| 01.06.22 | вверх |
| 01.06.22 | низ |
Подскажите пожалуйста. Как сделать что бы ячейки с одинаковой датой объединялись в одну ячейку, а данные из второго столбца были не изменны
Ответы (1 шт):
Автор решения: contributorpw
→ Ссылка
Можно попробовать в первом приближении что-то такое:
function run() {
const book = SpreadsheetApp.getActiveSpreadsheet();
const sheet = book.getSheetByName('Решение');
sheet.getRange('A:A').breakApart();
const values = sheet.getDataRange().getValues();
let buffer = { start: 0, value: String(values[0][0]) };
values.forEach((row, i, arr) => {
const cell = row[0] === '' ? buffer.value : String(row[0]);
if ((buffer.value !== cell || i == arr.length - 1) && buffer.start !== i) {
let lrx = 0;
if (i == arr.length - 1) lrx = 1;
if (i == arr.length - 1 && buffer.value !== cell) lrx = 0;
sheet.getRange(buffer.start + 1, 1, i - buffer.start + lrx).merge();
buffer.start = i;
buffer.value = cell;
}
});
}
К сожалению, с пустыми ячейками в обхединении такое работать не будет, т.е. нужно либо предзаполнять данные, либо обрабатывать breakApart через внешнее хранение.
Пример в Таблице https://docs.google.com/spreadsheets/d/1SPtNpvRKbGNnHzkOEN_APXrErTNJsCQLsLNTrCfveUI/edit?usp=sharing
