ARRAYFORMULA в Google Таблицах: одна формула на весь столбец
Функция ARRAYFORMULA в Google Таблицах: формула на весь столбец без протягивания, ЕСЛИ и ВПР внутри, заголовок в формуле, И и ИЛИ в массиве, ошибка #REF! и примеры.
Содержание статьи
Формулу в отчёте протянули до строки 16, а в понедельник пришёл заказ в строку 17, и в нём формулы нет. Если заказы приносит Google Форма или IMPORTRANGE, это случается каждый день, и отчёт врёт тихо: новые строки просто не считаются. ARRAYFORMULA решает задачу одной формулой в верхней ячейке столбца, которая сама заполняет все строки ниже. Ниже — как она работает, как писать внутри неё ЕСЛИ, ВПР и СУММЕСЛИ, как поставить заголовок прямо в формулу, почему И и ИЛИ внутри неё ломаются, как получить нарастающий итог и номер заказа клиента и что значит ошибка #REF!. Результаты пересчитаны на Python, поведение функции сверено со справкой Google 27 октября 2026 года.
Коротко: что делает ARRAYFORMULA
ARRAYFORMULA разрешает функциям внутри работать с диапазонами целиком и выводит результат массивом — в столько строк и столбцов, сколько нужно. Одна формула в H2 заменяет пятнадцать протянутых.
- Синтаксис:
=ARRAYFORMULA(формула_массива); ссылки внутри — диапазоны:F2:F16, а неF2. - Сочетание Ctrl+Shift+Enter при вводе формулы добавляет ARRAYFORMULA само.
- Открытый диапазон
A2:Aзахватывает новые строки; пустые отсекаются черезЕСЛИ(A2:A=""; ""; …). - И и ИЛИ сворачивают массив в одно значение; внутри ARRAYFORMULA вместо них — умножение и сложение условий.
- Если ячейки ниже заняты, формула вернёт #REF!: массиву некуда развернуться.
Учебные данные: лист «Заказы»
Примеры идут на листе «Заказы» серии «Google Таблицы для аналитика»: пятнадцать заказов за сентябрь и октябрь 2026 года в строках 2–16. Столбцы A–G — дата, номер заказа, клиент, канал, город, сумма, статус. Числа учебные; полностью лист приведён в статье о функции QUERY. Новые формулы ставим в свободные столбцы H и правее.
| Стр. | A: Дата | C: Клиент | D: Канал | E: Город | F: Сумма, ₽ | G: Статус |
|---|---|---|---|---|---|---|
| 2 | 02.09.2026 | Орлова | Поиск | Москва | 4 200 | Оплачен |
| 3 | 03.09.2026 | Ким | Соцсети | Казань | 1 800 | Оплачен |
| 4 | 05.09.2026 | Белов | Москва | 6 500 | Отменён | |
| … | … | … | … | … | … | … |
| 14 | 19.10.2026 | Ким | Казань | 2 300 | Оплачен | |
| 15 | 22.10.2026 | Лаптева | Соцсети | Москва | 3 900 | Оплачен |
| 16 | 26.10.2026 | Новиков | Поиск | Казань | 5 100 | Оплачен |
Первая формула: ЕСЛИ на весь столбец
Нужен столбец «Выручка»: сумма, если заказ оплачен, иначе ноль. Обычная формула в H2 — =ЕСЛИ(G2="Оплачен"; F2; 0), её протягивают до H16. Версия массивом стоит только в H2: =ARRAYFORMULA(ЕСЛИ(G2:G16="Оплачен"; F2:F16; 0)). Сравнение G2:G16="Оплачен" даёт пятнадцать значений ИСТИНА и ЛОЖЬ, ЕСЛИ выбирает для каждого своё, результат разворачивается в H2:H16. Сумма столбца — 58 500 ₽, выручка оплаченных заказов.
Ячейки H3:H16 при этом пустые по содержанию: в них нет формулы, только выведенные значения. Если щёлкнуть по H10, в строке формул будет видна серая формула из H2. Изменить значение в H10 вручную нельзя — точнее, можно ввести число, но тогда массиву некуда развернуться, и H2 покажет ошибку.
Писать ARRAYFORMULA руками не обязательно. Наберите =ЕСЛИ(G2:G16="Оплачен"; F2:F16; 0) и нажмите Ctrl+Shift+Enter вместо Enter — Таблицы добавят обёртку сами. Без обёртки формула с диапазонами в аргументах ЕСЛИ вернёт одно значение или ошибку.
ARRAYFORMULA(формула_массива)Название не переводится и в русских Таблицах. Внутри — обычные функции, но вместо ссылок на ячейки стоят диапазоны одинаковой высоты.
Открытый диапазон и заголовок в формуле
Диапазон G2:G16 закончится на шестнадцатой строке, и новые заказы снова останутся без формулы. Открытый диапазон G2:G идёт до конца листа. Но тогда формула заполнит нулями все пустые строки — их на листе по умолчанию под тысячу. Поэтому открытый диапазон почти всегда идёт в паре с проверкой на пустоту: =ARRAYFORMULA(ЕСЛИ(A2:A=""; ""; ЕСЛИ(G2:G="Оплачен"; F2:F; 0))).
Ещё удобнее поставить формулу в строку заголовка. Тогда сортировка данных или вставка строки сразу под заголовком её не заденет. Заголовок и формулу склеивает массив в фигурных скобках: ={"Месяц"; ARRAYFORMULA(ЕСЛИ(A2:A=""; ""; ТЕКСТ(A2:A; "yyyy-mm")))} в H1. Точка с запятой в скобках ставит заголовок над столбцом значений. Получится ключ месяца: семь строк «2026-09» и восемь «2026-10», по нему удобно группировать сводной таблицей.
Так строят листы, куда данные приходят сами: ответы Google Формы, результат IMPORTRANGE, выгрузка, которую дописывают снизу. Каждая новая строка получает все вычисленные столбцы без участия человека.
| Ячейка | Формула | Что выводит |
|---|---|---|
| H1 | ={"Выручка"; ARRAYFORMULA(ЕСЛИ(A2:A=""; ""; ЕСЛИ(G2:G="Оплачен"; F2:F; 0)))} | сумма оплаченного или 0, итог 58 500 |
| I1 | ={"Месяц"; ARRAYFORMULA(ЕСЛИ(A2:A=""; ""; ТЕКСТ(A2:A; "yyyy-mm")))} | 7 × «2026-09», 8 × «2026-10» |
| J1 | ={"Менеджер"; ARRAYFORMULA(ЕСЛИ(C2:C=""; ""; ЕСЛИОШИБКА(ВПР(C2:C; Клиенты!A:B; 2; ЛОЖЬ); "нет в справочнике")))} | менеджер клиента из справочника |
ВПР внутри ARRAYFORMULA
ВПР принимает в первом аргументе целый столбец запросов, если обернуть её в ARRAYFORMULA, — формула в J1 из таблицы выше подтягивает менеджера к каждому заказу. ЕСЛИОШИБКА превращает #Н/Д в подпись «нет в справочнике», а не в пустоту: заказ клиента без менеджера должен остаться виден. Справочник клиентов и разбор ловушек ВПР — в статье о ВПР в Google Таблицах.
То же работает с XLOOKUP, ИНДЕКС и ПОИСКПОЗ и другими функциями поиска. Главное — оба диапазона, проверяемый и справочник, задаются целиком, а знаки доллара не нужны: формула одна, и протягивать её некуда.
Почему И и ИЛИ не работают внутри ARRAYFORMULA
Задача — выручка Москвы по оплаченным заказам. Первая мысль: =ARRAYFORMULA(СУММ(ЕСЛИ(И(E2:E16="Москва"; G2:G16="Оплачен"); F2:F16; 0))). Формула вернёт 0. Функция И не умеет работать построчно: она берёт все тридцать значений ИСТИНА и ЛОЖЬ разом и возвращает одно — ИСТИНА, только если истинно всё. Не все заказы московские, поэтому И даёт ЛОЖЬ, и ЕСЛИ выбирает ноль.
Внутри массива «и» записывают умножением, а «или» — сложением. ИСТИНА при умножении превращается в 1, ЛОЖЬ — в 0, и произведение двух условий равно 1 только там, где выполнены оба. =ARRAYFORMULA(СУММ((E2:E16="Москва")*(G2:G16="Оплачен")*F2:F16)) даёт 24 800 ₽. Для «или» — сумма условий больше нуля: оплаченные заказы из поиска или email, =ARRAYFORMULA(СУММ(((D2:D16="Поиск")+(D2:D16="Email")>0)*(G2:G16="Оплачен")*F2:F16)), — 32 000 ₽.
Если логика сложнее, чем умножение условий, построчную функцию можно задать явно через MAP и LAMBDA: =MAP(E2:E16; G2:G16; LAMBDA(город; статус; И(город="Москва"; статус="Оплачен"))) вернёт ИСТИНА в шести строках. MAP вызывает LAMBDA для каждой строки отдельно, поэтому И внутри неё работает как обычно.
| Формула | Результат | Почему |
|---|---|---|
=ARRAYFORMULA(СУММ(ЕСЛИ(И(E2:E16="Москва"; G2:G16="Оплачен"); F2:F16; 0))) | 0 | И свернула 30 значений в одно ЛОЖЬ |
=ARRAYFORMULA(СУММ((E2:E16="Москва")*(G2:G16="Оплачен")*F2:F16)) | 24 800 | условия перемножаются построчно |
=СУММЕСЛИМН(F2:F16; E2:E16; "Москва"; G2:G16; "Оплачен") | 24 800 | то же без массива — для одного числа проще |
СУММЕСЛИ со списком условий
СУММЕСЛИ и СЧЁТЕСЛИ внутри ARRAYFORMULA принимают диапазон условий и возвращают столбец ответов — по одному на каждое условие. Если в J2:J5 перечислены каналы, =ARRAYFORMULA(СУММЕСЛИ(D2:D16; J2:J5; F2:F16)) в K2 выведет оборот четырёх каналов со всеми статусами: поиск 22 400, соцсети 9 900, email 16 100, партнёры 27 900 ₽.
С условием по статусу берите СУММЕСЛИМН: =ARRAYFORMULA(СУММЕСЛИМН(F2:F16; D2:D16; J2:J5; G2:G16; "Оплачен")) — 22 400, 7 200, 9 600 и 19 300 ₽. Разница между двумя столбцами — отмены и возврат: у партнёров 8 600 ₽, у email — 6 500 ₽. Синтаксис и ловушки условий разобраны в статье о СУММЕСЛИ и СЧЁТЕСЛИ, в Google Таблицах они такие же. Список каналов в J2:J5 можно не печатать руками, а получить формулой =UNIQUE(D2:D16): каналы встанут в порядке первого появления, как в таблице ниже.
| J: Канал | K: СУММЕСЛИ, все статусы | L: СУММЕСЛИМН, оплаченные |
|---|---|---|
| Поиск | 22 400 | 22 400 |
| Соцсети | 9 900 | 7 200 |
| 16 100 | 9 600 | |
| Партнёры | 27 900 | 19 300 |
Нарастающий итог и номер заказа клиента
Две аналитические задачи, которые обычно решают протянутой формулой со «съезжающим» диапазоном $F$2:F2. В ARRAYFORMULA такой диапазон не построить, зато условие можно поставить на номер строки.
Нарастающая выручка оплаченных заказов: =ARRAYFORMULA(ЕСЛИ(A2:A16=""; ""; СУММЕСЛИМН(F2:F16; СТРОКА(F2:F16); "<="&СТРОКА(F2:F16); G2:G16; "Оплачен"))). Для каждой строки формула складывает оплаченные суммы от начала до этой строки включительно. К концу сентября, в строке 8, набегает 23 700 ₽, к последнему заказу — 58 500 ₽. Порядок строк должен совпадать с порядком дат: отсортируйте лист по дате до того, как читать такой столбец.
Номер заказа клиента — тот же приём со СЧЁТЕСЛИМН: =ARRAYFORMULA(СЧЁТЕСЛИМН(C2:C16; C2:C16; СТРОКА(C2:C16); "<="&СТРОКА(C2:C16))). У Орловой заказы получат номера 1, 2 и 3, у Новикова — 1. Строк с номером больше единицы восемь — это повторные заказы, те же восемь строк, что подсвечивает правило в статье об условном форматировании. Только теперь это не цвет, а столбец, по которому можно считать долю повторных покупок.
| Строка | Дата | Статус | Нарастающий итог, ₽ |
|---|---|---|---|
| 3 | 03.09.2026 | Оплачен | 6 000 |
| 4 | 05.09.2026 | Отменён | 6 000 |
| 8 | 24.09.2026 | Оплачен | 23 700 |
| 12 | 11.10.2026 | Отменён | 37 300 |
| 16 | 26.10.2026 | Оплачен | 58 500 |
Ошибка #REF! и другие сбои
Самая частая ошибка ARRAYFORMULA — #REF! с подсказкой, что массив не развёрнут, потому что перезапишет данные в такой-то ячейке. Кто-то ввёл значение в столбец, который принадлежит массиву, — даже пробел. Найдите ячейку из подсказки и очистите её. Чтобы такое не повторялось, закрасьте столбец с формулой или защитите диапазон.
Вторая — формула работает, но медленно. Открытые диапазоны A2:A на листе с десятками тысяч строк и вложенные ВПР пересчитываются целиком при каждой правке. Ограничьте диапазон разумной высотой или перенесите тяжёлые вычисления в QUERY, которая считает одним проходом.
Третья — функция, которой массив не нужен. FILTER, SORT, UNIQUE, QUERY и IMPORTRANGE сами возвращают диапазон, и обёртка ARRAYFORMULA вокруг них ничего не меняет. Справка Google отдельно отмечает, что многие формулы массива расширяются автоматически.
| Симптом | Причина | Что сделать |
|---|---|---|
| #REF!: массив не развёрнут | в столбце ниже есть значение | очистить ячейку из подсказки |
| Ноль вместо суммы | И или ИЛИ внутри массива | умножение и сложение условий |
| Нули до конца листа | открытый диапазон без проверки на пустоту | ЕСЛИ(A2:A=""; ""; …) |
| #ЗНАЧ! о размере | диапазоны разной высоты: F2:F16 и G2:G | одинаковые границы у всех диапазонов |
| Новые строки без значений | закрытый диапазон A2:A16 | открытый A2:A |
| Таблица тормозит | тяжёлые формулы на открытых диапазонах | ограничить высоту или перейти на QUERY |
ARRAYFORMULA и Excel
В Excel функции ARRAYFORMULA нет. В Microsoft 365 и Excel 2021 формулы с диапазонами разворачиваются сами — это называется динамическими массивами, — а в старых версиях формулу массива вводили через Ctrl+Shift+Enter, и она получала фигурные скобки. Поэтому =ЕСЛИ(G2:G16="Оплачен"; F2:F16; 0) в новом Excel сработает без обёртки, а в Google Таблицах без неё — нет.
Логика условий одинакова на обеих платформах: умножение вместо И, сложение вместо ИЛИ. Подробно про ЕСЛИ, вложенные условия и ЕСЛИМН — в статье о функции ЕСЛИ в Excel.
Частые вопросы
Как протянуть формулу на весь столбец в Google Таблицах?
Можно дважды щёлкнуть по маркеру в углу ячейки — формула скопируется до конца данных. Но новые строки её не получат. Надёжнее одна формула ARRAYFORMULA в верхней ячейке с открытым диапазоном: =ARRAYFORMULA(ЕСЛИ(A2:A=""; ""; …)).
Что делает Ctrl+Shift+Enter в Google Таблицах?
Оборачивает вводимую формулу в ARRAYFORMULA. Это то же самое, что написать функцию руками.
Почему ARRAYFORMULA выдаёт #REF!?
Массиву не хватает места: ниже или правее формулы есть заполненные ячейки. Подсказка у ошибки называет ячейку, которая мешает.
Работает ли ВПР внутри ARRAYFORMULA?
Да. Передайте первым аргументом диапазон запросов, ВПР(C2:C; Клиенты!A:B; 2; ЛОЖЬ), и обёрните в ARRAYFORMULA — получится столбец ответов.
Можно ли использовать И и ИЛИ в ARRAYFORMULA?
Построчно — нет, они возвращают одно значение на весь массив. Пишите условия через умножение и сложение или используйте MAP с LAMBDA.
Итог
ARRAYFORMULA превращает формулу одной ячейки в формулу столбца: новые строки считаются сами, ничего не нужно протягивать. Ставьте её в строку заголовка вместе с подписью, берите открытые диапазоны с проверкой на пустоту, вместо И и ИЛИ перемножайте и складывайте условия, а столбец под массивом держите чистым. Нарастающий итог и номер заказа клиента — та же техника с СУММЕСЛИМН и СЧЁТЕСЛИМН по номеру строки. Когда таких столбцов становится много, а строк — десятки тысяч, расчёт пора переносить в запрос: нарастающий итог там пишется оконной функцией, о ней — в курсе «Продвинутый SQL», а основы — в курсе «SQL с нуля», первые 10 уроков бесплатно.
Материалы по теме
Функция QUERY в Google Таблицах: синтаксис, примеры и ошибки
QUERY в Google Таблицах на одном листе заказов: select, where, group by, pivot, даты, ссылки на ячейки, Col1 с IMPORTRANGE и ошибки. Каждый результат пересчитан.
IMPORTRANGE в Google Таблицах: данные из другой таблицы
Функция IMPORTRANGE: как подтянуть данные из другой Google Таблицы, дать доступ, объединить несколько файлов, обработать импорт через QUERY и не сломать отчёт.
Сводная таблица в Google Таблицах: как сделать и не ошибиться
Как сделать сводную таблицу в Google Таблицах: строки, столбцы, значения, фильтры, группировка по месяцам, доли, вычисляемое поле и ловушки уникальных и средних.