Excel и Google Workspace / Базовые формулы Excel
VSTACK в Excel: объединить массивы по строкам
VSTACK последовательно ставит массивы один под другим и возвращает единый разливающийся диапазон. При разной ширине недостающие позиции получают #N/A.
Формула
После двух строк первого списка идут три строки второго.
Обозначения
- $A2:B3$
- первый список: две строки и два столбца, не применяется
- $D2:E4$
- второй список: три строки и два столбца, не применяется
Условия применения
Официальная справка указывает Microsoft 365 и Excel 2024 для Windows и Mac. В примерах используется английский синтаксис с запятыми; локализованная установка может требовать другое имя и разделитель. Область результата должна быть свободна, а поля входных таблиц — расположены в согласованном порядке.
Ограничения
Функция объединяет позиции, а не распознаёт названия полей. Дубли и повторные заголовки остаются. При разной ширине более узкие массивы дополняются #N/A. Применение IFERROR может скрыть как эти заполнители, так и настоящие ошибки исходных данных, поэтому причины сначала проверяют.
Подробное объяснение
VSTACK помещает первый массив сверху, второй под ним и продолжает так для остальных аргументов. Число строк результата равно сумме высот входов. Число столбцов равно наибольшей ширине среди них: это прямоугольный массив, даже если исходные части имели разные размеры.
Соответствие столбцов задаётся их положением. Если во втором листе сначала название, а затем код, VSTACK не переставит их по заголовку. Поэтому перед объединением надо привести таблицы к одной структуре, например выбрав нужные столбцы в нужном порядке.
Для недостающих столбцов узкой части появляются #N/A. Такой результат показывает отсутствие позиции, а не обязательно ошибку поиска. Замена на пустую строку удобна для показа, но может скрыть проблему схемы данных, если разные ширины возникли случайно.
Заголовки являются обычными строками. Если включить их в каждый диапазон, они повторятся между блоками. Обычно общий заголовок оставляют один раз, а последующие диапазоны начинают с первой записи. Пустые ячейки внутри диапазона не означают автоматическое исключение всей строки.
Результат разливается из одной формулы. Его нельзя редактировать по отдельным ячейкам как независимые значения: исправляют источники или формулу. Если область занята, возникает ошибка разлива. Сборка списка также не удаляет совпадающие записи и не устанавливает уникальность кодов.
Как пользоваться формулой
- Приведите столбцы всех списков к одинаковому смыслу и порядку, отдельно решив, где останется общий заголовок.
- Выберите точные диапазоны записей и сложите число строк, чтобы заранее определить ожидаемую высоту результата.
- Введите VSTACK с диапазонами в нужном порядке в свободную ячейку вне области исходных данных.
- Сверьте границу между блоками и объясните каждую позицию #N/A до замены ошибок пустыми значениями.
Историческая справка
VSTACK вошла в группу функций обработки текста и массивов, представленную командой Excel в 2022 году. В продуктовой логике она решает отдельную операцию: вертикальное соединение уже сформированных прямоугольных массивов. До появления такой функции пользователи могли собирать списки копированием, запросами или более сложными формулами; новая операция сделала сам шаг объединения явным в выражении на листе. Современная справка Microsoft описывает размеры результата и заполнение недостающих столбцов. Это история развития табличного процессора, а не математическая формула с единственным историческим автором. При работе с книгой важно различать дату объявления функции и поддержку конкретной версии: старый выпуск Excel не получает её только потому, что умеет складывать обычные диапазоны.
Историческая линия формулы
VSTACK — продуктовая функция Microsoft Excel, документированная в составе средств работы с динамическими массивами. Её не следует приписывать отдельному математику или считать универсальным стандартом всех таблиц; совместимость определяется реализацией и версией приложения.
Пример
В A2:B3 записаны две пары: 101 — Карандаш, 102 — Папка. В D2:E4 находятся 103 — Ручка, 104 — Маркер, 105 — Линейка. Вводим =VSTACK(A2:B3,D2:E4) в G2. Результат занимает G2:H6: сначала две записи первого списка, затем три второго. Размер равен (2+3)×2, то есть пять строк и два столбца. Проверяем переход: в третьей строке результата должен стоять код 103, а в последней — 105. Все пять названий сохраняют соответствие кодам. Здесь ширина обоих источников одинакова, поэтому дополнительных #N/A нет. Если случайно включить строку заголовка второго списка, она появится третьей строкой результата и увеличит его высоту.
Частая ошибка
Не считайте объединение сопоставлением столбцов по названиям. Не включайте заголовки каждого листа, если нужен один общий заголовок. Не ждите удаления дублей. Не заменяйте все #N/A пустотой до проверки ширины и исходных ошибок. Не вводите формулу туда, где её разлив перекроет исходный диапазон.
Практика
Задачи с решением
Разная ширина
Условие. Первый массив содержит строки [1,10] и [2,20], второй — одну строку [3]. Что вернёт VSTACK?
Решение. Высота 2+1=3, ширина max(2,1)=2. Строки: [1,10], [2,20], [3,#N/A].
Ответ. Массив 3×2 с одним #N/A
Повторные записи
Условие. Соединены столбцы [7;8] и [8;9]. Каков результат?
Решение. VSTACK сохраняет все строки по порядку: 7,8,8,9. Значение 8 не удаляется как дубль.
Ответ. Четыре строки: [7;8;8;9]
Дополнительные источники
- https://support.microsoft.com/en-us/excel/functions/vstack-function
- https://techcommunity.microsoft.com/blog/excelblog/announcing-new-text-and-array-functions/3186066
Связанные формулы
Excel и Google Workspace
TOCOL в Excel: диапазон в один столбец
TOCOL превращает прямоугольный массив в один вертикальный столбец. По умолчанию значения читаются построчно, а scan_by_column=TRUE переключает обход по столбцам, сохраняя выбранный порядок позиций.
Excel и Google Workspace
WRAPROWS в Excel: собрать список в строки фиксированной длины
WRAPROWS раскладывает одномерный вектор по строкам с заданным числом элементов, а недостающие позиции заполняет выбранным значением.
Excel и Google Workspace
WRAPCOLS в Excel: разложить список по столбцам
WRAPCOLS превращает одномерный список в матрицу, заполняя каждый столбец сверху вниз. Аргумент wrap_count задаёт высоту столбца, а pad_with заполняет недостающие позиции последней колонки.