У меня есть длинная таблица (50 тыс. Строк и 15 столбцов), где разные пользователи сообщают о состоянии с помощью Google-формы (таблица всегда сортируется в хронологическом порядке), и я хочу получить последний отчет о каждом пользователе.Мне удалось это сделать, но для перезагрузки требуется слишком много времени, я знаю, что используемые мной формулы слишком тяжелы для электронной таблицы, но я не могу найти лучшего способа сделать это.
Для упрощенияПейзаж, кейс можно применить к следующему входу и желаемому выходу:
Вход:
| Timestamp | User | Status |
|:-------------------:|:----:|:--------:|
| 2019-01-03 10:00:30 | A | Started |
| 2019-01-03 10:01:41 | B | Started |
| 2019-01-03 10:02:00 | B | Finished |
| 2019-01-03 10:02:14 | C | Started |
| 2019-01-03 10:03:22 | A | Failed |
| 2019-01-03 10:00:04 | C | Finished |
Выход:
| Timestamp | User | Status |
|:-------------------:|:----:|:--------:|
| 2019-01-03 10:02:00 | B | Finished |
| 2019-01-03 10:03:22 | A | Failed |
| 2019-01-03 10:00:04 | C | Finished |
Мне удалось сделать это комбинируясводная таблица с пользователь в качестве строки и макс (метка времени) в качестве значения, а затем передает эту информацию в формулу (возможно, INDEX и MATCH были бы лучшим подходом ):
OFFSET('Sheet1'!$A$1,ArrayFormula(max(if('Sheet1'!$B:$B=$A3, Row('Sheet1'!$B:$B))))-1,column()-1)
Я также пытался использовать следующий подход для каждого уникального результата.
| Unique users | Query |
|:----------------------:|:-----------------------------------------------------------------------------:|
| =UNIQUE('Sheet1'!$A:$A) | =QUERY('Sheet1'!$A:$C, "SELECT A, C WHERE B='"&B2&"' ORDER BY A DESC LIMIT 1",0) |
Из того, что я прочиталСочетание ARRAYFORMULA и QUERY может улучшить производительность, но мне не удалось это осуществить.