Подробная инструкция по использованию функции ПРОСМОТРХ (XLOOKUP) в Excel по двум условиям без ошибок. Разбираем причины сообщения «аргументы массива имеют различные размеры», показываем 4 рабочих варианта формул, даём примеры, типовые ошибки и маленький VBA-макрос для проверки диапазонов. Практическая статья по вопросу подписчика.
Эта статья написана по вопросу подписчика
«Забодался я с ПРОСМОТРХ. Надо сделать элементарный поиск по простейшей таблице по двум критериям.
Третий день бьюсь, а он мне выдаёт, что аргументы массива имеют различные размеры…»
Разбираем эту боль: поиск по двум условиям с ПРОСМОТРХ (XLOOKUP) и ошибка: «аргументы массива имеют различные размеры». Сделаем так, чтобы после статьи ты смог спокойно закрыть файл, а не закрыть ноутбук.
Почему вообще появляется ошибка «аргументы массива имеют различны размеры»
Начнём с главного: Excel не издевается, он честно говорит:
«Ты даёшь мне несколько массивов (диапазонов), а их размеры по строкам/столбцам не совпадают. Я не понимаю, что с этим делать».
В ПРОСМОТРХ это чаще всего происходит, когда:
- В формуле участвуют несколько диапазонов, и хотя визуально они «рядом», у них:
разные границы (A2:A100 и B3:B100);
разная длина (A2:A50 и B2:B60);
разное количество столбцов (B2:D10 и C2:E11). - Ты делаешь поиск по двум критериям и:
либо склеиваешь их через &,
либо используешь вложенный ПРОСМОТРХ,
либо окружаешь всё ФИЛЬТР,
а в итоге где-то один диапазон «съехал». - Диапазоны на разных листах выглядят одинаково, но на одном листе таблица до строки 100, а на другом — до 120.
Главное правило:
❗ Все массивы, которые участвуют в вычислении одновременно, должны иметь одинаковое количество строк (и/или столбцов) там, где Excel их сравнивает.
Дальше разберём несколько сценариев, в каждом — готовое решение.
База: простой ПРОСМОТРХ по одному условию
Чтобы не зависнуть в теории, напомню базовую форму:
=ПРОСМОТРХ(искомое_значение; массив_поиска; массив_результатов; [если_не_найдено]; [режим_сопоставления]; [режим_поиска])
Пример:
Найти регион по фамилии:
=ПРОСМОТРХ("Петров"; A2:A10; C2:C10; "Нет данных")
Здесь всё просто: A2:A10 и C2:C10 — диапазоны с одинаковыми размерами (9 строк). Проблема начинается, когда критериев два.
Общая идея поиска по двум условиям
Нам нужно:
- искать по комбинации (например, ФИО + Месяц, или Товар + Склад),
- но при этом не сломать размеры массивов.
Есть несколько стандартных подходов:
- Вариант A. Вложенный ПРОСМОТРХ (двумерный поиск: строка + столбец).
- Вариант B. Склейка критериев в один ключ (через &).
- Вариант C. ФИЛЬТР + ПРОСМОТРХ (или просто ФИЛЬТР).
- Вариант D. Комбо с ИНДЕКС/ПОИСКПОЗ и проверкой размеров.
- Вариант E. Универсальный чек-лист «что проверить, если Excel ругается на размеры массива».
Подписчик не помнит, какой именно способ пробовал, поэтому разбираем все варианты с готовыми формулами.
Вариант A. Вложенный ПРОСМОТРХ (двумерный поиск: менеджер + месяц)
Это классика из твоей статьи.
Допустим, есть таблица:
Нужно найти продажи Петрова за Февраль. Правильная формула:
=ПРОСМОТРХ("Петров"; A2:A4; ПРОСМОТРХ("Фев"; B1:D1; B2:D4))
Как это работает:
- Внутренний ПРОСМОТРХ:
ПРОСМОТРХ("Фев"; B1:D1; B2:D4)
Ищет заголовок «Фев» в строке B1:D1 и возвращает один столбец (например, C2:C4). - Внешний ПРОСМОТРХ:
ПРОСМОТРХ("Петров"; A2:A4; [тот самый столбец C2:C4])
Всё красиво:
A2:A4 → 3 строки
C2:C4 → 3 строки
👉 Где здесь типичная ошибка:
Кто-то случайно берёт:
- строку заголовков B1:D1
- таблицу B2:D5 (лишняя строка)
Тогда внутренний ПРОСМОТРХ возвращает диапазон из 4 строк (C2:C5), а внешний ищет по A2:A4 (3 строки). Excel честно говорит:
«аргументы массива имеют различные размеры».
✅ Решение:
- всегда проверяйте, чтобы диапазон заголовков и диапазон данных были согласованы:– заголовки: B1:D1
– данные: B2:D4 (ровно столько же строк, сколько менеджеров) - при вставке новых строк используйте «умные таблицы» (Ctrl+T), тогда диапазоны растягиваются синхронно.
Вариант B. Поиск по двум условиям через склеивание критериев (ключ)
Сценарий: есть таблица с двумя полями-критериями и результатом:
Нужно найти сумму по комбинации
ФИО = "Петров" и Месяц = "Фев".
❌ Как часто делают (и ловят ошибку)
=ПРОСМОТРХ("Петров"&"Фев"; A2:A5&B2:B6; C2:C5)
Проблема:
A2:A5 → 4 строки,
B2:B6 → 5 строк,
Excel не понимает, как их склеить: массивы разного размера. Отсюда и ошибка.
✅ Как сделать правильно
Шаг 1. Убедиться, что диапазоны одинаковой длины:
A2:A5, B2:B5, C2:C5.
Шаг 2. Написать формулу:
=ПРОСМОТРХ("Петров"&"|"&"Фев"; A2:A5&"|"&B2:B5; C2:C5; "Нет данных")
Здесь:
- A2:A5&"|"&B2:B5 — это массив вида
«Петров|Янв», «Петров|Фев», «Иванов|Янв», «Иванов|Фев». - строка поиска — "Петров|Фев".
Важно:
размеры всех массивов:
- A2:A5 → 4 строки
- B2:B5 → 4 строки
- C2:C5 → 4 строки
Совпадают → ошибки нет.
🔧 Как не запутаться с диапазонами
Лайфхак:
- Выдели формулу в строке ввода.
- Наведи курсор на A2:A5 → нажми F9.
- Увидишь массив { "Петров";"Петров";"Иванов";"Иванов" }.
- Точно так же проверь B2:B5 и C2:C5.
Если массивы разной длины — ты сразу это увидишь.
Вариант C. ФИЛЬТР + ПРОСМОТРХ (и где тут разные размеры)
Иногда делают так:
- Сначала фильтруют строки по критериям:=ФИЛЬТР(A2:C100; (A2:A100="Петров")*(B2:B100="Фев"))
- Потом к результату применяют ПРОСМОТРХ или берут нужный столбец.
Ошибка «разные размеры аргументов» здесь возникает, если:
- в числителе выражения (A2:A100="Петров")*(B2:B80="Фев") один диапазон короче другого;
- или фильтр возвращает динамический массив, а ты пытаешься сравнить его с диапазоном другого размера.
✅ Упрощённое рабочее решение без лишнего:
Нам нужна одна ячейка (сумма продаж по двум критериям), поэтому ФИЛЬТР можно использовать один раз:
=ИНДЕКС(ФИЛЬТР(C2:C100; (A2:A100="Петров")*(B2:B100="Фев")); 1)
Здесь:
- C2:C100 — диапазон результатов;
- (A2:A100="Петров")*(B2:B100="Фев") — логический массив того же размера (100 строк);
- ФИЛЬТР возвращает массив из всех строк, где оба условия выполняются;
- ИНДЕКС берёт первую строку.
Важное правило:
У выражения в ФИЛЬТР все диапазоны должны быть одного размера
(A2:A100, B2:B100, C2:C100).
Вариант D. ИНДЕКС/ПОИСКПОЗ + ПРОСМОТРХ (и стоит ли так делать)
Иногда встречается экзотика:
=ПРОСМОТРХ("Петров"; A2:A100; ИНДЕКС(C2:H100; ПОИСКПОЗ("Фев"; C1:H1; 0)))
Тут легко запутаться в размерах:
- ПОИСКПОЗ возвращает позицию столбца;
- ИНДЕКС — массив неправильной формы;
- ПРОСМОТРХ ожидает одномерный столбец.
Честно: в 2025 году так делать уже не нужно.
Если у вас есть ПРОСМОТРХ, то многомерный поиск проще и чище делать по схеме Варианта A — вложенный ПРОСМОТРХ.
Именно поэтому:
- для двумерного поиска:
=ПРОСМОТРХ(строка; …; ПРОСМОТРХ(столбец; …; …)) - для поиска по двум полям (ФИО+Месяц):
склейка через & (Вариант B) или ФИЛЬТР (Вариант C).
Вариант E. Универсальный чек-лист: что делать, если Excel пишет «аргументы массива имеют различные размеры»
Если ты уже не помнишь, какую именно конструкцию использовал, просто сделай так:
✅ Шаг 1. Найди все диапазоны в формуле
Просмотри то, что внутри скобок:
A2:A100, B2:B120, C2:C100, A2:A200…
Запиши их на листочек.
✅ Шаг 2. Сравни количество строк и столбцов
Простой способ:
- выдели A2:A100 → смотри в строку состояния снизу (строк: 99);
- выдели B2:B120 → строк: 119;
- если числа не совпадают — вот и причина.
✅ Шаг 3. Приведи диапазоны к одному размеру
Подгони границы:
- либо обрежь до минимального;
- либо расширь до максимального (если там реально есть данные).
✅ Шаг 4. Проверь, нет ли «съехавшей» строки
Иногда таблица начинается с A3, а диапазон указан как A2:A100 — верхняя строка лишняя, и Excel считает размер по-другому.
✅ Шаг 5. Перепиши формулу в упрощённом виде
Сначала сделай рабочую формулу по одному критерию. Потом добавь второй критерий.
Если такой разбор ошибок вам заходит — подпишитесь на наш Дзен и Телеграм. Там выходят практические разборы реальных задач подписчиков, файлы с примерами и шаблоны формул.
Маленький VBA-макрос: проверяем, совпадают ли размеры двух диапазонов
Иногда проще один раз проверить всё макросом, чем глазами.
Ниже — простой макрос: ты вручную задаёшь два диапазона (например, диапазон поиска и диапазон результатов), а он говорит, совпадает ли количество строк и столбцов.
Оформляю строго по твоим правилам:
– каждая строка отдельно
– курсив
– серая вертикальная линия (через цитирование)
Sub CheckTwoRanges()
Dim r1 As Range, r2 As Range
On Error Resume Next
Set r1 = Application.InputBox("Выделите первый диапазон", "Проверка диапазонов", Type:=8)
Set r2 = Application.InputBox("Выделите второй диапазон", "Проверка диапазонов", Type:=8)
On Error GoTo 0
If r1 Is Nothing Or r2 Is Nothing Then
MsgBox "Диапазоны не выбраны.", vbExclamation
Exit Sub
End If
If r1.Rows.Count = r2.Rows.Count And r1.Columns.Count = r2.Columns.Count Then
MsgBox "Размеры диапазонов совпадают.", vbInformation
Else
MsgBox "Размеры различаются:" & vbCrLf & _
"Первый: " & r1.Rows.Count & "×" & r1.Columns.Count & vbCrLf & _
"Второй: " & r2.Rows.Count & "×" & r2.Columns.Count, vbCritical
End If
End Sub
Теперь, если ПРОСМОТРХ опять ругнётся на «разные размеры», можно быстро проверить виновников.
Вывод: что именно делать подписчику
Итак, если ты читаешь это и узнаёшь себя («третий день бьюсь с ПРОСМОТРХ по двум условиям»), сделай следующее:
- Определи задачу:
двумерный поиск (строка+столбец) → Вариант A;
два поля (ФИО+Месяц) → Вариант B или С. - Используй одну из формул:
двумерный поиск (менеджер+месяц):
=ПРОСМОТРХ("Петров"; A2:A4; ПРОСМОТРХ("Фев"; B1:D1; B2:D4))
поиск по двум полям (ФИО+Месяц):
=ПРОСМОТРХ("Петров"&"|"&"Фев"; A2:A5&"|"&B2:B5; C2:C5; "Нет данных")
через ФИЛЬТР:
=ИНДЕКС(ФИЛЬТР(C2:C100; (A2:A100="Петров")*(B2:B100="Фев")); 1) - Если Excel всё равно ругается — прогони диапазоны через макрос CheckTwoRanges.
После этого ошибка «аргументы массива имеют различные размеры» перестанет быть загадкой и превратится в обычную техническую проверку.
📌 Если эта статья помогла вам разобраться с ПРОСМОТРХ по двум условиям — напишите об этом в комментариях и поделитесь своим вариантом задачи.
И обязательно подпишитесь на Дзен и Телеграм — там будут новые разборы вопросов подписчиков и готовые файлы для практики.