Найти в Дзене
Макрос решает

ПРОСМОТРХ по двум условиям в Excel: как избавиться от ошибки «аргументы массива имеют различные размеры»

Подробная инструкция по использованию функции ПРОСМОТРХ (XLOOKUP) в Excel по двум условиям без ошибок. Разбираем причины сообщения «аргументы массива имеют различные размеры», показываем 4 рабочих варианта формул, даём примеры, типовые ошибки и маленький VBA-макрос для проверки диапазонов. Практическая статья по вопросу подписчика. Эта статья написана по вопросу подписчика «Забодался я с ПРОСМОТРХ. Надо сделать элементарный поиск по простейшей таблице по двум критериям.
Третий день бьюсь, а он мне выдаёт, что аргументы массива имеют различные размеры…» Разбираем эту боль: поиск по двум условиям с ПРОСМОТРХ (XLOOKUP) и ошибка: «аргументы массива имеют различные размеры». Сделаем так, чтобы после статьи ты смог спокойно закрыть файл, а не закрыть ноутбук. Начнём с главного: Excel не издевается, он честно говорит: «Ты даёшь мне несколько массивов (диапазонов), а их размеры по строкам/столбцам не совпадают. Я не понимаю, что с этим делать». В ПРОСМОТРХ это чаще всего происходит, когда: Гла
Оглавление

Подробная инструкция по использованию функции ПРОСМОТРХ (XLOOKUP) в Excel по двум условиям без ошибок. Разбираем причины сообщения «аргументы массива имеют различные размеры», показываем 4 рабочих варианта формул, даём примеры, типовые ошибки и маленький VBA-макрос для проверки диапазонов. Практическая статья по вопросу подписчика.

Эта статья написана по вопросу подписчика

«Забодался я с ПРОСМОТРХ. Надо сделать элементарный поиск по простейшей таблице по двум критериям.
Третий день бьюсь, а он мне выдаёт, что аргументы массива имеют различные размеры…»

Разбираем эту боль: поиск по двум условиям с ПРОСМОТРХ (XLOOKUP) и ошибка: «аргументы массива имеют различные размеры». Сделаем так, чтобы после статьи ты смог спокойно закрыть файл, а не закрыть ноутбук.

Почему вообще появляется ошибка «аргументы массива имеют различны размеры»

Начнём с главного: Excel не издевается, он честно говорит:

«Ты даёшь мне несколько массивов (диапазонов), а их размеры по строкам/столбцам не совпадают. Я не понимаю, что с этим делать».

В ПРОСМОТРХ это чаще всего происходит, когда:

  1. В формуле участвуют несколько диапазонов, и хотя визуально они «рядом», у них:
    разные границы (A2:A100 и B3:B100);
    разная длина (A2:A50 и B2:B60);
    разное количество столбцов (B2:D10 и C2:E11).
  2. Ты делаешь поиск по двум критериям и:
    либо
    склеиваешь их через &,
    либо используешь
    вложенный ПРОСМОТРХ,
    либо окружаешь всё ФИЛЬТР,
    а в итоге где-то один диапазон «съехал».
  3. Диапазоны на разных листах выглядят одинаково, но на одном листе таблица до строки 100, а на другом — до 120.
Макрос решает

Главное правило:

Все массивы, которые участвуют в вычислении одновременно, должны иметь одинаковое количество строк (и/или столбцов) там, где Excel их сравнивает.

Дальше разберём несколько сценариев, в каждом — готовое решение.

База: простой ПРОСМОТРХ по одному условию

Чтобы не зависнуть в теории, напомню базовую форму:

=ПРОСМОТРХ(искомое_значение; массив_поиска; массив_результатов; [если_не_найдено]; [режим_сопоставления]; [режим_поиска])

Пример:

Найти регион по фамилии:

=ПРОСМОТРХ("Петров"; A2:A10; C2:C10; "Нет данных")

Здесь всё просто: A2:A10 и C2:C10 — диапазоны с одинаковыми размерами (9 строк). Проблема начинается, когда критериев два.

Общая идея поиска по двум условиям

Нам нужно:

  • искать по комбинации (например, ФИО + Месяц, или Товар + Склад),
  • но при этом не сломать размеры массивов.

Есть несколько стандартных подходов:

  1. Вариант A. Вложенный ПРОСМОТРХ (двумерный поиск: строка + столбец).
  2. Вариант B. Склейка критериев в один ключ (через &).
  3. Вариант C. ФИЛЬТР + ПРОСМОТРХ (или просто ФИЛЬТР).
  4. Вариант D. Комбо с ИНДЕКС/ПОИСКПОЗ и проверкой размеров.
  5. Вариант E. Универсальный чек-лист «что проверить, если Excel ругается на размеры массива».

Подписчик не помнит, какой именно способ пробовал, поэтому разбираем все варианты с готовыми формулами.

Вариант A. Вложенный ПРОСМОТРХ (двумерный поиск: менеджер + месяц)

Это классика из твоей статьи.

Допустим, есть таблица:

-2

Нужно найти продажи Петрова за Февраль. Правильная формула:

=ПРОСМОТРХ("Петров"; A2:A4; ПРОСМОТРХ("Фев"; B1:D1; B2:D4))

Как это работает:

  1. Внутренний ПРОСМОТРХ:
    ПРОСМОТРХ("Фев"; B1:D1; B2:D4)
    Ищет заголовок «Фев» в строке B1:D1 и возвращает
    один столбец (например, C2:C4).
  2. Внешний ПРОСМОТРХ:

    ПРОСМОТРХ("Петров"; 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. Поиск по двум условиям через склеивание критериев (ключ)

Сценарий: есть таблица с двумя полями-критериями и результатом:

-3

Нужно найти сумму по комбинации

ФИО = "Петров" и Месяц = "Фев".

❌ Как часто делают (и ловят ошибку)

=ПРОСМОТРХ("Петров"&"Фев"; 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 строки

Совпадают → ошибки нет.

🔧 Как не запутаться с диапазонами

Лайфхак:

  1. Выдели формулу в строке ввода.
  2. Наведи курсор на A2:A5 → нажми F9.
  3. Увидишь массив { "Петров";"Петров";"Иванов";"Иванов" }.
  4. Точно так же проверь B2:B5 и C2:C5.

Если массивы разной длины — ты сразу это увидишь.

Вариант C. ФИЛЬТР + ПРОСМОТРХ (и где тут разные размеры)

Иногда делают так:

  1. Сначала фильтруют строки по критериям:=ФИЛЬТР(A2:C100; (A2:A100="Петров")*(B2:B100="Фев"))
  2. Потом к результату применяют ПРОСМОТРХ или берут нужный столбец.

Ошибка «разные размеры аргументов» здесь возникает, если:

  • в числителе выражения (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

Теперь, если ПРОСМОТРХ опять ругнётся на «разные размеры», можно быстро проверить виновников.

Вывод: что именно делать подписчику

Итак, если ты читаешь это и узнаёшь себя («третий день бьюсь с ПРОСМОТРХ по двум условиям»), сделай следующее:

  1. Определи задачу:
    двумерный поиск (строка+столбец) → Вариант A;
    два поля (ФИО+Месяц) → Вариант B или С.
  2. Используй одну из формул:
    двумерный поиск (менеджер+месяц):

    =ПРОСМОТРХ("Петров"; A2:A4; ПРОСМОТРХ("Фев"; B1:D1; B2:D4))
    поиск по двум полям (ФИО+Месяц):

    =ПРОСМОТРХ("Петров"&"|"&"Фев"; A2:A5&"|"&B2:B5; C2:C5; "Нет данных")
    через ФИЛЬТР:

    =ИНДЕКС(ФИЛЬТР(C2:C100; (A2:A100="Петров")*(B2:B100="Фев")); 1)
  3. Если Excel всё равно ругается — прогони диапазоны через макрос CheckTwoRanges.

После этого ошибка «аргументы массива имеют различные размеры» перестанет быть загадкой и превратится в обычную техническую проверку.

📌 Если эта статья помогла вам разобраться с ПРОСМОТРХ по двум условиям — напишите об этом в комментариях и поделитесь своим вариантом задачи.

И обязательно подпишитесь на Дзен и
Телеграм — там будут новые разборы вопросов подписчиков и готовые файлы для практики.

Макрос решает