Представьте, что у вас есть две строки с числами в Excel – например, 512 значений в каждой. Вам нужно переформатировать их в квадратную таблицу 32 на 32. Звучит как задача для программиста, но на самом деле это решается стандартными функциями Excel, пусть и неочевидным способом. Давайте разберёмся, как это сделать без макросов и надстроек.
Шаг за шагом: собираем «пазл» из формул
Основная идея – разбить исходные данные на блоки по 32 элемента и собрать их в матрицу. Вот как это работает:
1. Подготовка данных:
Если ваши данные расположены в двух строках (например, A1:SR2), сначала транспонируйте их. Это превратит строки в столбцы, что упростит дальнейшую работу:
=TRANSPOSE(A1:SR2)
Кстати, если у вас числа хранятся как текст с апострофом (например, 'C1
), Excel автоматически обработает их как числа после транспонирования.
2. Создание групп:
Определите, сколько блоков по 32 элемента вам понадобится. Для 512 значений это 16 групп (512 / 32). Используйте функцию SEQUENCE
:
=SEQUENCE(ROUNDUP(512 / 32, 0), , 0)
Здесь ROUNDUP округляет вверх — на случай, если количество элементов не кратно 32.
3. Сборка матрицы:
Теперь объедините всё в одну формулу с REDUCE
и HSTACK
. Первый блок берётся через CHOOSEROWS
, остальные добавляются последовательно:
=LET(
array, TRANSPOSE(A1:SR2),
wrapcount, 32,
totalRows, ROWS(array),
groups, SEQUENCE(ROUNDUP(totalRows / wrapcount, 0), , 0),
first, CHOOSEROWS(array, SEQUENCE(wrapcount)),
TRANSPOSE(REDUCE(
first,
DROP(groups, 1),
LAMBDA(a, b, HSTACK(a, CHOOSEROWS(array, SEQUENCE(
MIN(wrapcount, totalRows - b * wrapcount),
,
b * wrapcount + 1
))))))
Обратите внимание на двойное TRANSPOSE
– оно нужно, чтобы вернуть исходную ориентацию данных.
Тонкости и частые ошибки
Даже с готовой формулой можно столкнуться с проблемами. Вот что чаще всего упускают:
- Неправильный
wrapcount
: Если указать 31 вместо 32, матрица «съедет». Всегда проверяйте, что это число равно желаемому количеству столбцов. - Лишние пробелы в данных: Значения вроде
'C1
(с пробелом после апострофа) Excel может интерпретировать как текст, что сломает вычисления. - Ошибки с
SEQUENCE
: В старых версиях Excel 365 эта функциия может работать иначе. Обновитесь до последней версии через меню «Учетная запись».
Совет: Если формула возвращает
#VALUE!
, проверьте размерность исходного диапазона. Убедитесь, что в A1:SR2 ровно 2 строки и 512 столбцов (SR — это столбец 510, считая с A=1).
А если нужно изменить размер матрицы?
Допустим, вам требуется таблица 16×64 вместо 32×32. Просто замените wrapcount
на 16 и убедитесь, что общее количество элементов кратно новому размеру. Формула автоматически пересчитает группы. Например, для 1024 элементов и wrapcount=64
вы получите матрицу 64×16.

Важно: Если исходные данные не помещаются точно в матрицу, последние ячейки могут заполниться нулями или ошибками. Чтобы этого избежать, добавьте проверку через
IF(ISNUMBER(...))
внутриSEQUENCE
.
Теперь вы можете работать с двумерными структурами данных, как в профессиональных СУБД. Этот метод пригодится для визуализации бинарных кодов, обработки результатов экспериментов или даже создания игровых карт в Excel – было бы желание экспериментировать.