Как ограничить количество строк в TOROW() и LAMBDA() и получить первые или последние 5 строк

Если вы работаете с большими массивами данных в Google Таблицах, иногда нужно выводить только определённое количество строк — например, первые или последние пять. Это особенно полезно при создании сводок или дашбордов. Давайте разберём несколько способов решения этой задачи, которые подойдут даже новичкам.

Обратите внимание: все примеры ниже предполагают, что данные находятся на листе «Requests» в столбце H (ячейки H2:H). Если у вас другой диапазон, просто замените его в формулах.

Пример данных в таблице

Способ 1: Используем MAP и SEQUENCE для точного контроля

Для извлечения первых пяти уникальных значений из столбца H подойдёт комбинация функций MAP и SEQUENCE. Вот как это работает:

=MAP(SEQUENCE(5), LAMBDA(seq, INDEX(UNIQUE(TOCOL(Requests!H2:H,1)), seq))

Разберём формулу по шагам:

  1. TOCOL(Requests!H2:H,1) — преобразует диапазон в один столбец, игнорируя пустые ячейки (цифра 1 в аргументе отвечает за это.
  2. UNIQUE() — оставляет только уникальные значения.
  3. SEQUENCE(5) — создаёт последовательность чисел от 1 до 5.
  4. MAP() — применяет функцию LAMBDA к каждому числу из SEQUENCE.
  5. INDEX(…, seq) — извлекает элемент из списка по номеру (seq).

Для получения последних пяти строк нужно немного изменить подход. Добавьте сортировку в обратном порядке:

=MAP(SEQUENCE(5), LAMBDA(seq, INDEX(UNIQUE(TOCOL(SORT(Requests!H2:H, ROW(Requests!H2:H), ),1)), seq))

Здесь SORT(Requests!H2:H, ROW(Requests!H2:H), ) сортирует данные по номеру строки в обратном порядке (от больших к меньшим), что позволяет начать выборку с конца.

Способ 2: Простой запрос через QUERY

Если вы знакомы с SQL-подобным синтаксисом, функция QUERY может стать вашим лучшим помощником.

Для первых пяти строк:

=QUERY(UNIQUE(Requests!H2:H), "Where Col1 is not Null Limit 5", 0)
  • Where Col1 is not Null — исключает пустые ячейки.
  • Limit 5 — ограничивает результат пятью строками.

Для последних пяти используйте OFFSET:

=QUERY(UNIQUE(Requests!H2:H), "Where Col1 is not Null OFFSET "& COUNTA(UNIQUE(Requests!H2:H))-5, 0)

Здесь COUNTA(UNIQUE(…))-5 вычисляет, сколько строк нужно пропустить. Например, если всего 12 уникальных значений, OFFSET 7 покажет строки 8–12.

Способ 3: CHOOSEROWS и LET для удобства

Функция CHOOSEROWS позволяет выбирать строки по номерам. Для первых пяти:

=CHOOSEROWS(UNIQUE(TOCOL(Requests!H2:H,1)), SEQUENCE(5))

Для последних пяти понадобится дополнительно вычислить позиции. Тут пригодится LET, чтобы не повторять формулы:

=LET(arr, UNIQUE(TOCOL(Requests!H2:H,1)), CHOOSEROWS(arr, SEQUENCE(1,5,COUNTA(arr)-4)))

Пояснение:

  • LET(arr, …) — сохраняет результат вычислений в переменную arr.
  • COUNTA(arr)-4 — определяет начальную позицию (например, для 10 элементов это 10-4=6, значит, будут выбраны строки 6–10).
  • SEQUENCE(1,5,…) — создаёт последовательность из пяти чисел, начиная с вычисленной позиции.

Совет: Если вы часто работаете с динамическими данными, используйте LET — это упростит редактирование формул и повысит читаемость.

Дополнительные рекомендации

  • Если в данных есть пустые ячейки, добавьте FILTER перед UNIQUE: UNIQUE(FILTER(Requests!H2:H, Requests!H2:H"")).
  • Для вставки гиперссылок (как в исходном примере) используйте HYPERLINK внутри FILTER. Например:
    =TOROW(FILTER(HYPERLINK(ссылки, "🖼️"), условия))

Готово! Теперь вы можете гибко управлять количеством строк в выводах Google Таблиц. Если что-то не работает, проверьте:

  1. Совпадают ли имена листов и диапазонов.
  2. Нет ли лишних пробелов в формулах.
  3. Верно ли указаны аргументы функций (например, TOCOL с параметром 1 игнорирует пустоты).

Буду рад, если вы поделитесь своим опытом в комментариях — возможно, ваши дополнения помогут другим читателям.

Добавить комментарий

Все поля обязательны к заполнению. Ваш адрес email не будет виден никому.

Новое
Интересное