Содержание
- «Поиск решения» в Microsoft Excel — как найти числа из которых складывается сумма
- excel подбор слагаемых для нужной суммы
- Способ 1. Надстройка Поиск решения (Solver)
- Способ 2. Макрос подбора
- Функции ИНДЕКС и ПОИСКПОЗ в Excel – лучшая альтернатива для ВПР
- Базовая информация об ИНДЕКС и ПОИСКПОЗ
- ИНДЕКС – синтаксис и применение функции
- ПОИСКПОЗ – синтаксис и применение функции
- Как использовать ИНДЕКС и ПОИСКПОЗ в Excel
- Почему ИНДЕКС/ПОИСКПОЗ лучше, чем ВПР?
- 4 главных преимущества использования ПОИСКПОЗ/ИНДЕКС в Excel:
- ИНДЕКС и ПОИСКПОЗ – примеры формул
- Как выполнить поиск с левой стороны, используя ПОИСКПОЗ и ИНДЕКС
- Вычисления при помощи ИНДЕКС и ПОИСКПОЗ в Excel (СРЗНАЧ, МАКС, МИН)
- О чём нужно помнить, используя функцию СРЗНАЧ вместе с ИНДЕКС и ПОИСКПОЗ
- Как при помощи ИНДЕКС и ПОИСКПОЗ выполнять поиск по известным строке и столбцу
- Поиск по нескольким критериям с ИНДЕКС и ПОИСКПОЗ
- ИНДЕКС и ПОИСКПОЗ в сочетании с ЕСЛИОШИБКА в Excel
«Поиск решения» в Microsoft Excel — как найти числа из которых складывается сумма
Хороший инструмент — надстройка Поиск решения в MS Excel!
Например, можно использовать в ситуации, когда вам нужно найти вариант из каких различных чисел могла сложиться определнная сумма (может вы ищете из каких счетов могла сложиться сумма оплаты). Допустим, нужно найти по приведенным числам сумму 10:
Для начал включим надстройку или проверим, что она включена (в Excel 2013): Файл / Параметры, раздел Надстройки, выбрать Управление: Надстройки Excel, нажать Перейти. Отметить флагом Поиск решения, нажать ОК
На ленте на вкладке Данные появился Поиск решения:
Теперь нужно придумать, как мы можем параметрами в разных строках «подбирать» сумму. Я сделал вариант, когда в столбце мы указываем множитель 0 или 1, в соседнем столбце считаем произведение, и потом значения складываем в итоговую сумму:
- в ячейках столбца B указываем 0 или 1 (сейчас неважно, что конкретно)
- в ячейке C4 формула =A4*B4
- в ячейках C5:C14 — аналогично, с учетом номера строки
- в ячейке C3 формула =СУММ(C4:C14)
Теперь запускаем Поиск решения. И заполняем:
- Оптимизировать целевую функцию: $C$3
- До: Значения: 10
- Изменяя ячейки переменных: $B$4:$B$14
- В соответствии с ограничениями: — добавляем (кнопка Добавить) три условия: 1) значения переменных должны быть целые, 2) значения должны быть >= 0, 3) 2) значения должны быть
Источник
excel подбор слагаемых для нужной суммы
Хороший инструмент — это надстройка Поиск решения в MS Excel!
Например, его можно использовать в ситуации, когда вам нужно найти вариант, из которого с разных чисел могла быть добавлена определенная сумма (возможно, вы ищете, с каких счетов могла быть сформирована сумма платежа). Допустим, вам нужно найти сумму 10 из заданных чисел:
Для начала включаем надстройку или проверяем, что она включена (в Excel 2013): Файл/Параметры, раздел Надстройки, выберите Управление: Надстройки Excel, нажмите кнопку Перейти. Установите флажок Поиск решения, нажмите кнопку ОК
Найдите решение, которое появилось на ленте на вкладке «Данные»:
Теперь нам нужно понять, как мы можем использовать параметры в разных строках для «выбора» суммы. Я сделал вариант, когда мы указываем множитель 0 или 1 в одном столбце, подсчитываем произведение в соседнем столбце, а затем добавляем значения к итогу:
- в ячейках столбца B указываем 0 или 1 (теперь неважно, что именно)
- в ячейке C4 формула = A4 * B4
- в ячейках C5: C14 — то же с учетом номера строки
- в ячейке C3 формула = СУММ (C4: C14)
Теперь приступим к поиску решения. И заполните:
- Оптимизация целевой функции: $ C $ 3
- Раньше: Значения: 10
- Изменение ячеек переменных: $ B $ 4: $ B $ 14
- В соответствии с ограничениями: — добавьте (кнопка Добавить) три условия: 1) значения переменных должны быть целыми числами, 2) значения должны быть> = 0, 3) 2) значения должны быть быть
Не очень распространено, но и не экзотично. Во время моих обучающих курсов такой вопрос задавали не раз и не два. Суть в том, что у нас есть конечный набор некоторых чисел, из которых мы должны выбрать те, которые в сумме дают заданное значение.
В реальной жизни эта задача может показаться другой.
- Например, мы загрузили из интернет-банка все платежи, поступившие на наш счет за последний месяц. Один из клиентов разделяет сумму платежа на несколько отдельных счетов и производит оплату в рассрочку. Мы знаем общую сумму к оплате и количество счетов, но не знаем сумму. В истории платежей необходимо выбрать те суммы, которые, как правило, дают заданное значение.
- У нас есть несколько рулонов стали (линолеум, бумага.), Из которых мы должны выбрать те, которые придадут заказу заданную длину.
- Блэкджек или обычно «пойнт». Необходимо собрать карты с общей стоимостью как можно ближе к 21 баллу, но не превышать этот порог.
В некоторых случаях может быть известна допустимая погрешность допуска. Он может быть нулевым (в случае счетов для снятия средств) и ненулевым (в случае бросков на снятие средств), либо ограничиваться снизу или сверху (в случае блэкджека).
Давайте рассмотрим разные способы решения такой задачи в Excel.
Способ 1. Надстройка Поиск решения (Solver)
Эта надстройка входит в стандартный набор Microsoft Office вместе с Excel и предназначена, как правило, для решения линейных и нелинейных задач оптимизации со списком ограничений. Для его подключения необходимо:
- в Excel 2007 и более поздних версиях выберите Файл — Параметры Excel — Надстройки — Перейти
- в Excel 2003 и более ранних версиях: откройте меню Инструменты — Надстройки
и поставьте галочку в соответствующем поле. Тогда нужная нам команда появится во вкладке или меню «Данные.
Чтобы использовать надстройку Поиск решения нашей проблемы, нам нужно будет немного модернизировать наш пример, добавив несколько вспомогательных ячеек и формул в список сумм для выбора:
- Диапазон A1: A20 содержит наши числа, из которых мы выберем те, которые нам нужны, чтобы «уместить» заданное количество.
- Диапазон B1: B20 будет своего рода набором переключателей, то есть он будет содержать ноль или один, указывая, выбираем ли мы данное число в образце или нет.
- Ячейка E2 содержит обычную автоматическую сумму всех единиц в столбце B, в которой подсчитывается количество выбранных чисел.
- В ячейке E3 функция СУММПРОИЗВ вычисляет сумму произведений пары ячеек из столбцов A и B (то есть A1 * B1 + A2 * B2 + A3 * B3 +.). Фактически, он вычисляет сумму чисел в столбце A, выбранных из чисел в столбце B.
- В розовой ячейке E4 пользователь вводит желаемую сумму для вывода.
- В ячейке E5 вычисляется абсолютное значение ошибки выбора, чтобы минимизировать ее в будущем.
- Все желтые ячейки E8: E17 хотели бы получить список выбранных чисел, т.е тех чисел из столбца A, перед которыми стоят числа из столбца B. Для этого нужно выделить сразу все (!) Желтые ячейки и вставьте в них следующую формулу массива:
После ввода формулы ее нужно вводить не как обычную формулу, а как формулу массива, т.е нажимать не Enter, а Ctrl + Shift + Enter. Аналогичная формула используется в примере ВПР, который возвращает все найденные значения сразу (а не только первое).
Теперь перейдите на вкладку Data (или меню) и запустите инструмент Data — Solver):
В открывшемся окне вам необходимо:
- Установить как целевую функцию (Целевая ячейка) — ячейка для расчета ошибки выбора E5. Чуть ниже выбираем вариант — Минимум, потому что мы хотим подбирать числа на заданную сумму с минимальной (или даже нулевой) ошибкой.
- Установите диапазон столбцов переключателя B1: B20 как Edit Cells.
- Используя кнопку Добавить, создайте дополнительное условие, что ячейки диапазона B1: B20 должны быть двоичными (т.е содержать только 0 или 1):
Используя ту же кнопку, при необходимости создайте ограничение на количество чисел в образце. Например, если мы знаем, что сумма разделена на 5 счетов, тогда:
После ввода всех параметров и ограничений запустите процесс выбора, нажав кнопку «Решить». Процесс выбора длится от нескольких секунд до нескольких минут (в самых серьезных случаях) и заканчивается появлением следующего окна:
Теперь вы можете оставить найденное решение выбора (Сохранить найденное решение) или вернуться к предыдущим значениям (Восстановить исходные значения).
Следует отметить, что для этого класса задач существует не одно, а целый набор решений, особенно если ошибка строго не равна нулю. Следовательно, выполнение поиска решения с разными начальными данными (например, с разными комбинациями нулей и единиц в столбце B) может привести к разным наборам чисел в выборках в указанных пределах. Поэтому имеет смысл запустить эту процедуру несколько раз, произвольно меняя переключатели в столбце B.
Найденные комбинации можно сохранить как сценарии (кнопка Сохранить сценарий), чтобы вы могли вернуться к ним позже, используя команду Данные — Анализ моделирования — Менеджер сценариев):
И все найденные решения, сохраненные в виде скрипта, будет очень удобно просматривать в единой сравнительной таблице с помощью кнопки Сводка):
Способ 2. Макрос подбора
В этом методе вся работа выполняется макросом, который по глупости прокручивает случайные комбинации чисел, пока не найдет требуемое количество в пределах допустимой ошибки. В этом случае нет необходимости добавлять столбец с нулями и единицами и формулами.
Чтобы использовать макрос, нажмите комбинацию Alt + F11, в открывшемся окне редактора Visual Basic вставьте новый модуль через меню Insert — Module и скопируйте туда этот код:
Подобно первому способу, запустив макрос несколько раз, вы можете получить несколько наборов подходящих чисел.
в Excel 2007 и более поздних версиях выберите Файл — Параметры Excel — Надстройки — Перейти
в Excel 2003 и более ранних версиях: откройте меню Инструменты — Надстройки
и поставьте галочку в соответствующем поле. После этого необходимая команда появится на вкладке или в меню «Данные».
Источник
Функции ИНДЕКС и ПОИСКПОЗ в Excel – лучшая альтернатива для ВПР
Этот учебник рассказывает о главных преимуществах функций ИНДЕКС и ПОИСКПОЗ в Excel, которые делают их более привлекательными по сравнению с ВПР. Вы увидите несколько примеров формул, которые помогут Вам легко справиться со многими сложными задачами, перед которыми функция ВПР бессильна.
В нескольких недавних статьях мы приложили все усилия, чтобы разъяснить начинающим пользователям основы функции ВПР и показать примеры более сложных формул для продвинутых пользователей. Теперь мы попытаемся, если не отговорить Вас от использования ВПР, то хотя бы показать альтернативные способы реализации вертикального поиска в Excel.
Зачем нам это? – спросите Вы. Да, потому что ВПР – это не единственная функция поиска в Excel, и её многочисленные ограничения могут помешать Вам получить желаемый результат во многих ситуациях. С другой стороны, функции ИНДЕКС и ПОИСКПОЗ – более гибкие и имеют ряд особенностей, которые делают их более привлекательными, по сравнению с ВПР.
Базовая информация об ИНДЕКС и ПОИСКПОЗ
Так как задача этого учебника – показать возможности функций ИНДЕКС и ПОИСКПОЗ для реализации вертикального поиска в Excel, мы не будем задерживаться на их синтаксисе и применении.
Приведём здесь необходимый минимум для понимания сути, а затем разберём подробно примеры формул, которые показывают преимущества использования ИНДЕКС и ПОИСКПОЗ вместо ВПР.
ИНДЕКС – синтаксис и применение функции
Функция INDEX (ИНДЕКС) в Excel возвращает значение из массива по заданным номерам строки и столбца. Функция имеет вот такой синтаксис:
Каждый аргумент имеет очень простое объяснение:
- array (массив) – это диапазон ячеек, из которого необходимо извлечь значение.
- row_num (номер_строки) – это номер строки в массиве, из которой нужно извлечь значение. Если не указан, то обязательно требуется аргумент column_num (номер_столбца).
- column_num (номер_столбца) – это номер столбца в массиве, из которого нужно извлечь значение. Если не указан, то обязательно требуется аргумент row_num (номер_строки)
Если указаны оба аргумента, то функция ИНДЕКС возвращает значение из ячейки, находящейся на пересечении указанных строки и столбца.
Вот простейший пример функции INDEX (ИНДЕКС):
Формула выполняет поиск в диапазоне A1:C10 и возвращает значение ячейки во 2-й строке и 3-м столбце, то есть из ячейки C2.
Очень просто, правда? Однако, на практике Вы далеко не всегда знаете, какие строка и столбец Вам нужны, и поэтому требуется помощь функции ПОИСКПОЗ.
ПОИСКПОЗ – синтаксис и применение функции
Функция MATCH (ПОИСКПОЗ) в Excel ищет указанное значение в диапазоне ячеек и возвращает относительную позицию этого значения в диапазоне.
Например, если в диапазоне B1:B3 содержатся значения New-York, Paris, London, тогда следующая формула возвратит цифру 3, поскольку «London» – это третий элемент в списке.
Функция MATCH (ПОИСКПОЗ) имеет вот такой синтаксис:
- lookup_value (искомое_значение) – это число или текст, который Вы ищите. Аргумент может быть значением, в том числе логическим, или ссылкой на ячейку.
- lookup_array (просматриваемый_массив) – диапазон ячеек, в котором происходит поиск.
- match_type (тип_сопоставления) – этот аргумент сообщает функции ПОИСКПОЗ, хотите ли Вы найти точное или приблизительное совпадение:
- 1 или не указан – находит максимальное значение, меньшее или равное искомому. Просматриваемый массив должен быть упорядочен по возрастанию, то есть от меньшего к большему.
- 0 – находит первое значение, равное искомому. Для комбинации ИНДЕКС/ПОИСКПОЗ всегда нужно точное совпадение, поэтому третий аргумент функции ПОИСКПОЗ должен быть равен 0.
- -1 – находит наименьшее значение, большее или равное искомому значению. Просматриваемый массив должен быть упорядочен по убыванию, то есть от большего к меньшему.
На первый взгляд, польза от функции ПОИСКПОЗ вызывает сомнение. Кому нужно знать положение элемента в диапазоне? Мы хотим знать значение этого элемента!
Позвольте напомнить, что относительное положение искомого значения (т.е. номер строки и/или столбца) – это как раз то, что мы должны указать для аргументов row_num (номер_строки) и/или column_num (номер_столбца) функции INDEX (ИНДЕКС). Как Вы помните, функция ИНДЕКС может возвратить значение, находящееся на пересечении заданных строки и столбца, но она не может определить, какие именно строка и столбец нас интересуют.
Как использовать ИНДЕКС и ПОИСКПОЗ в Excel
Теперь, когда Вам известна базовая информация об этих двух функциях, полагаю, что уже становится понятно, как функции ПОИСКПОЗ и ИНДЕКС могут работать вместе. ПОИСКПОЗ определяет относительную позицию искомого значения в заданном диапазоне ячеек, а ИНДЕКС использует это число (или числа) и возвращает результат из соответствующей ячейки.
Ещё не совсем понятно? Представьте функции ИНДЕКС и ПОИСКПОЗ в таком виде:
=INDEX( столбец из которого извлекаем ,(MATCH ( искомое значение , столбец в котором ищем ,0))
=ИНДЕКС( столбец из которого извлекаем ;(ПОИСКПОЗ( искомое значение ; столбец в котором ищем ;0))
Думаю, ещё проще будет понять на примере. Предположим, у Вас есть вот такой список столиц государств:
Давайте найдём население одной из столиц, например, Японии, используя следующую формулу:
Теперь давайте разберем, что делает каждый элемент этой формулы:
- Функция MATCH (ПОИСКПОЗ) ищет значение «Japan» в столбце B, а конкретно – в ячейках B2:B10, и возвращает число 3, поскольку «Japan» в списке на третьем месте.
- Функция INDEX (ИНДЕКС) использует 3 для аргумента row_num (номер_строки), который указывает из какой строки нужно возвратить значение. Т.е. получается простая формула:
Формула говорит примерно следующее: ищи в ячейках от D2 до D10 и извлеки значение из третьей строки, то есть из ячейки D4, так как счёт начинается со второй строки.
Вот такой результат получится в Excel:
Важно! Количество строк и столбцов в массиве, который использует функция INDEX (ИНДЕКС), должно соответствовать значениям аргументов row_num (номер_строки) и column_num (номер_столбца) функции MATCH (ПОИСКПОЗ). Иначе результат формулы будет ошибочным.
Стоп, стоп… почему мы не можем просто использовать функцию VLOOKUP (ВПР)? Есть ли смысл тратить время, пытаясь разобраться в лабиринтах ПОИСКПОЗ и ИНДЕКС?
В данном случае – смысла нет! Цель этого примера – исключительно демонстрационная, чтобы Вы могли понять, как функции ПОИСКПОЗ и ИНДЕКС работают в паре. Последующие примеры покажут Вам истинную мощь связки ИНДЕКС и ПОИСКПОЗ, которая легко справляется с многими сложными ситуациями, когда ВПР оказывается в тупике.
Почему ИНДЕКС/ПОИСКПОЗ лучше, чем ВПР?
Решая, какую формулу использовать для вертикального поиска, большинство гуру Excel считают, что ИНДЕКС/ПОИСКПОЗ намного лучше, чем ВПР. Однако, многие пользователи Excel по-прежнему прибегают к использованию ВПР, т.к. эта функция гораздо проще. Так происходит, потому что очень немногие люди до конца понимают все преимущества перехода с ВПР на связку ИНДЕКС и ПОИСКПОЗ, а тратить время на изучение более сложной формулы никто не хочет.
Далее я попробую изложить главные преимущества использования ПОИСКПОЗ и ИНДЕКС в Excel, а Вы решите – остаться с ВПР или переключиться на ИНДЕКС/ПОИСКПОЗ.
4 главных преимущества использования ПОИСКПОЗ/ИНДЕКС в Excel:
1. Поиск справа налево. Как известно любому грамотному пользователю Excel, ВПР не может смотреть влево, а это значит, что искомое значение должно обязательно находиться в крайнем левом столбце исследуемого диапазона. В случае с ПОИСКПОЗ/ИНДЕКС, столбец поиска может быть, как в левой, так и в правой части диапазона поиска. Пример: Как находить значения, которые находятся слева покажет эту возможность в действии.
2. Безопасное добавление или удаление столбцов. Формулы с функцией ВПР перестают работать или возвращают ошибочные значения, если удалить или добавить столбец в таблицу поиска. Для функции ВПР любой вставленный или удалённый столбец изменит результат формулы, поскольку синтаксис ВПР требует указывать весь диапазон и конкретный номер столбца, из которого нужно извлечь данные.
Например, если у Вас есть таблица A1:C10, и требуется извлечь данные из столбца B, то нужно задать значение 2 для аргумента col_index_num (номер_столбца) функции ВПР, вот так:
=VLOOKUP(«lookup value»,A1:C10,2)
=ВПР(«lookup value»;A1:C10;2)
Если позднее Вы вставите новый столбец между столбцами A и B, то значение аргумента придется изменить с 2 на 3, иначе формула возвратит результат из только что вставленного столбца.
Используя ПОИСКПОЗ/ИНДЕКС, Вы можете удалять или добавлять столбцы к исследуемому диапазону, не искажая результат, так как определен непосредственно столбец, содержащий нужное значение. Действительно, это большое преимущество, особенно когда работать приходится с большими объёмами данных. Вы можете добавлять и удалять столбцы, не беспокоясь о том, что нужно будет исправлять каждую используемую функцию ВПР.
3. Нет ограничения на размер искомого значения. Используя ВПР, помните об ограничении на длину искомого значения в 255 символов, иначе рискуете получить ошибку #VALUE! (#ЗНАЧ!). Итак, если таблица содержит длинные строки, единственное действующее решение – это использовать ИНДЕКС/ПОИСКПОЗ.
Предположим, Вы используете вот такую формулу с ВПР, которая ищет в ячейках от B5 до D10 значение, указанное в ячейке A2:
Формула не будет работать, если значение в ячейке A2 длиннее 255 символов. Вместо неё Вам нужно использовать аналогичную формулу ИНДЕКС/ПОИСКПОЗ:
4. Более высокая скорость работы. Если Вы работаете с небольшими таблицами, то разница в быстродействии Excel будет, скорее всего, не заметная, особенно в последних версиях. Если же Вы работаете с большими таблицами, которые содержат тысячи строк и сотни формул поиска, Excel будет работать значительно быстрее, при использовании ПОИСКПОЗ и ИНДЕКС вместо ВПР. В целом, такая замена увеличивает скорость работы Excel на 13%.
Влияние ВПР на производительность Excel особенно заметно, если рабочая книга содержит сотни сложных формул массива, таких как ВПР+СУММ. Дело в том, что проверка каждого значения в массиве требует отдельного вызова функции ВПР. Поэтому, чем больше значений содержит массив и чем больше формул массива содержит Ваша таблица, тем медленнее работает Excel.
С другой стороны, формула с функциями ПОИСКПОЗ и ИНДЕКС просто совершает поиск и возвращает результат, выполняя аналогичную работу заметно быстрее.
ИНДЕКС и ПОИСКПОЗ – примеры формул
Теперь, когда Вы понимаете причины, из-за которых стоит изучать функции ПОИСКПОЗ и ИНДЕКС, давайте перейдём к самому интересному и увидим, как можно применить теоретические знания на практике.
Как выполнить поиск с левой стороны, используя ПОИСКПОЗ и ИНДЕКС
Любой учебник по ВПР твердит, что эта функция не может смотреть влево. Т.е. если просматриваемый столбец не является крайним левым в диапазоне поиска, то нет шансов получить от ВПР желаемый результат.
Функции ПОИСКПОЗ и ИНДЕКС в Excel гораздо более гибкие, и им все-равно, где находится столбец со значением, которое нужно извлечь. Для примера, снова вернёмся к таблице со столицами государств и населением. На этот раз запишем формулу ПОИСКПОЗ/ИНДЕКС, которая покажет, какое место по населению занимает столица России (Москва).
Как видно на рисунке ниже, формула отлично справляется с этой задачей:
Теперь у Вас не должно возникать проблем с пониманием, как работает эта формула:
- Во-первых, задействуем функцию MATCH (ПОИСКПОЗ), которая находит положение «Russia» в списке:
Подсказка: Правильным решением будет всегда использовать абсолютные ссылки для ИНДЕКС и ПОИСКПОЗ, чтобы диапазоны поиска не сбились при копировании формулы в другие ячейки.
Вычисления при помощи ИНДЕКС и ПОИСКПОЗ в Excel (СРЗНАЧ, МАКС, МИН)
Вы можете вкладывать другие функции Excel в ИНДЕКС и ПОИСКПОЗ, например, чтобы найти минимальное, максимальное или ближайшее к среднему значение. Вот несколько вариантов формул, применительно к таблице из предыдущего примера:
1. MAX (МАКС). Формула находит максимум в столбце D и возвращает значение из столбца C той же строки:
2. MIN (МИН). Формула находит минимум в столбце D и возвращает значение из столбца C той же строки:
3. AVERAGE (СРЗНАЧ). Формула вычисляет среднее в диапазоне D2:D10, затем находит ближайшее к нему и возвращает значение из столбца C той же строки:
О чём нужно помнить, используя функцию СРЗНАЧ вместе с ИНДЕКС и ПОИСКПОЗ
Используя функцию СРЗНАЧ в комбинации с ИНДЕКС и ПОИСКПОЗ, в качестве третьего аргумента функции ПОИСКПОЗ чаще всего нужно будет указывать 1 или -1 в случае, если Вы не уверены, что просматриваемый диапазон содержит значение, равное среднему. Если же Вы уверены, что такое значение есть, – ставьте 0 для поиска точного совпадения.
- Если указываете 1, значения в столбце поиска должны быть упорядочены по возрастанию, а формула вернёт максимальное значение, меньшее или равное среднему.
- Если указываете -1, значения в столбце поиска должны быть упорядочены по убыванию, а возвращено будет минимальное значение, большее или равное среднему.
В нашем примере значения в столбце D упорядочены по возрастанию, поэтому мы используем тип сопоставления 1. Формула ИНДЕКС/ПОИСКПОЗ возвращает «Moscow», поскольку величина населения города Москва – ближайшее меньшее к среднему значению (12 269 006).
Как при помощи ИНДЕКС и ПОИСКПОЗ выполнять поиск по известным строке и столбцу
Эта формула эквивалентна двумерному поиску ВПР и позволяет найти значение на пересечении определённой строки и столбца.
В этом примере формула ИНДЕКС/ПОИСКПОЗ будет очень похожа на формулы, которые мы уже обсуждали в этом уроке, с одним лишь отличием. Угадайте каким?
Как Вы помните, синтаксис функции INDEX (ИНДЕКС) позволяет использовать три аргумента:
И я поздравляю тех из Вас, кто догадался!
Начнём с того, что запишем шаблон формулы. Для этого возьмём уже знакомую нам формулу ИНДЕКС/ПОИСКПОЗ и добавим в неё ещё одну функцию ПОИСКПОЗ, которая будет возвращать номер столбца.
=INDEX( Ваша таблица ,(MATCH( значение для вертикального поиска , столбец, в котором искать ,0)),(MATCH( значение для горизонтального поиска , строка в которой искать ,0))
=ИНДЕКС( Ваша таблица ,(MATCH( значение для вертикального поиска , столбец, в котором искать ,0)),(MATCH( значение для горизонтального поиска , строка в которой искать ,0))
Обратите внимание, что для двумерного поиска нужно указать всю таблицу в аргументе array (массив) функции INDEX (ИНДЕКС).
А теперь давайте испытаем этот шаблон на практике. Ниже Вы видите список самых населённых стран мира. Предположим, наша задача узнать население США в 2015 году.
Хорошо, давайте запишем формулу. Когда мне нужно создать сложную формулу в Excel с вложенными функциями, то я сначала каждую вложенную записываю отдельно.
Итак, начнём с двух функций ПОИСКПОЗ, которые будут возвращать номера строки и столбца для функции ИНДЕКС:
- ПОИСКПОЗ для столбца – мы ищем в столбце B, а точнее в диапазоне B2:B11, значение, которое указано в ячейке H2 (USA). Функция будет выглядеть так:
Результатом этой формулы будет 4, поскольку «USA» – это 4-ый элемент списка в столбце B (включая заголовок).
ПОИСКПОЗ для строки – мы ищем значение ячейки H3 (2015) в строке 1, то есть в ячейках A1:E1:
Результатом этой формулы будет 5, поскольку «2015» находится в 5-ом столбце.
Теперь вставляем эти формулы в функцию ИНДЕКС и вуаля:
Если заменить функции ПОИСКПОЗ на значения, которые они возвращают, формула станет легкой и понятной:
Эта формула возвращает значение на пересечении 4-ой строки и 5-го столбца в диапазоне A1:E11, то есть значение ячейки E4. Просто? Да!
Поиск по нескольким критериям с ИНДЕКС и ПОИСКПОЗ
В учебнике по ВПР мы показывали пример формулы с функцией ВПР для поиска по нескольким критериям. Однако, существенным ограничением такого решения была необходимость добавлять вспомогательный столбец. Хорошая новость: формула ИНДЕКС/ПОИСКПОЗ может искать по значениям в двух столбцах, без необходимости создания вспомогательного столбца!
Предположим, у нас есть список заказов, и мы хотим найти сумму по двум критериям – имя покупателя (Customer) и продукт (Product). Дело усложняется тем, что один покупатель может купить сразу несколько разных продуктов, и имена покупателей в таблице на листе Lookup table расположены в произвольном порядке.
Вот такая формула ИНДЕКС/ПОИСКПОЗ решает задачу:
Эта формула сложнее других, которые мы обсуждали ранее, но вооруженные знанием функций ИНДЕКС и ПОИСКПОЗ Вы одолеете ее. Самая сложная часть – это функция ПОИСКПОЗ, думаю, её нужно объяснить первой.
MATCH(1,(A2=’Lookup table’!$A$2:$A$13),0)*(B2=’Lookup table’!$B$2:$B$13)
ПОИСКПОЗ(1;(A2=’Lookup table’!$A$2:$A$13);0)*(B2=’Lookup table’!$B$2:$B$13)
В формуле, показанной выше, искомое значение – это 1, а массив поиска – это результат умножения. Хорошо, что же мы должны перемножить и почему? Давайте разберем все по порядку:
- Берем первое значение в столбце A (Customer) на листе Main table и сравниваем его со всеми именами покупателей в таблице на листе Lookup table (A2:A13).
- Если совпадение найдено, уравнение возвращает 1 (ИСТИНА), а если нет – 0 (ЛОЖЬ).
- Далее, мы делаем то же самое для значений столбца B (Product).
- Затем перемножаем полученные результаты (1 и 0). Только если совпадения найдены в обоих столбцах (т.е. оба критерия истинны), Вы получите 1. Если оба критерия ложны, или выполняется только один из них – Вы получите 0.
Теперь понимаете, почему мы задали 1, как искомое значение? Правильно, чтобы функция ПОИСКПОЗ возвращала позицию только, когда оба критерия выполняются.
Обратите внимание: В этом случае необходимо использовать третий не обязательный аргумент функции ИНДЕКС. Он необходим, т.к. в первом аргументе мы задаем всю таблицу и должны указать функции, из какого столбца нужно извлечь значение. В нашем случае это столбец C (Sum), и поэтому мы ввели 3.
И, наконец, т.к. нам нужно проверить каждую ячейку в массиве, эта формула должна быть формулой массива. Вы можете видеть это по фигурным скобкам, в которые она заключена. Поэтому, когда закончите вводить формулу, не забудьте нажать Ctrl+Shift+Enter.
Если всё сделано верно, Вы получите результат как на рисунке ниже:
ИНДЕКС и ПОИСКПОЗ в сочетании с ЕСЛИОШИБКА в Excel
Как Вы, вероятно, уже заметили (и не раз), если вводить некорректное значение, например, которого нет в просматриваемом массиве, формула ИНДЕКС/ПОИСКПОЗ сообщает об ошибке #N/A (#Н/Д) или #VALUE! (#ЗНАЧ!). Если Вы хотите заменить такое сообщение на что-то более понятное, то можете вставить формулу с ИНДЕКС и ПОИСКПОЗ в функцию ЕСЛИОШИБКА.
Синтаксис функции ЕСЛИОШИБКА очень прост:
Где аргумент value (значение) – это значение, проверяемое на предмет наличия ошибки (в нашем случае – результат формулы ИНДЕКС/ПОИСКПОЗ); а аргумент value_if_error (значение_если_ошибка) – это значение, которое нужно возвратить, если формула выдаст ошибку.
Например, Вы можете вставить формулу из предыдущего примера в функцию ЕСЛИОШИБКА вот таким образом:
=IFERROR(INDEX($A$1:$E$11,MATCH($G$2,$B$1:$B$11,0),MATCH($G$3,$A$1:$E$1,0)),
«Совпадений не найдено. Попробуйте еще раз!») =ЕСЛИОШИБКА(ИНДЕКС($A$1:$E$11;ПОИСКПОЗ($G$2;$B$1:$B$11;0);ПОИСКПОЗ($G$3;$A$1:$E$1;0));
«Совпадений не найдено. Попробуйте еще раз!»)
И теперь, если кто-нибудь введет ошибочное значение, формула выдаст вот такой результат:
Если Вы предпочитаете в случае ошибки оставить ячейку пустой, то можете использовать кавычки («»), как значение второго аргумента функции ЕСЛИОШИБКА. Вот так:
Надеюсь, что хотя бы одна формула, описанная в этом учебнике, показалась Вам полезной. Если Вы сталкивались с другими задачами поиска, для которых не смогли найти подходящее решение среди информации в этом уроке, смело опишите свою проблему в комментариях, и мы все вместе постараемся решить её.
Источник
Подбор слагаемых для нужной суммы
Не очень частый, но и не экзотический случай. На моих тренингах такой вопрос задавали не один и не два раза Суть в том, что мы имеем конечный набор каких-то чисел, из которых надо выбрать те, что дадут в сумме заданное значение.
В реальной жизни эта задача может выглядеть по-разному.
- Например, мы выгрузили из интернет-банка все платежи, которые поступили на наш счет за последний месяц. Один из клиентов разбивает сумму своего платежа на несколько отдельных счетов и платит частями. Мы знаем общую сумму оплаты и количество счетов, но не знаем их сумм. Надо подобрать те суммы в истории платежей, которые дадут в общем заданное значение.
- У нас есть несколько рулонов стали (линолеума, бумаги…), из которых надо подобрать под заказ те, что дадут заданную длину.
- Блэкджек или в народе «очко». Надо набрать карты суммарной стоимостью максимально близкой к 21 баллу, но не превысить этот порог.
В некоторых случаях может быть известна разрешенная погрешность допуска. Она может быть как нулевой (в случае подбора счетов), так и ненулевой (в случае подбора рулонов), или ограниченной снизу или сверху (в случае блэкджека).
Давайте рассмотрим несколько способов решения такой задачи в Excel.
Способ 1. Надстройка Поиск решения (Solver)
Эта надстройка входит в стандартный набор пакета Microsoft Office вместе с Excel и предназначена, в общем случае, для решения линейных и нелинейных задач оптимизации при наличии списка ограничений. Чтобы ее подключить, необходимо:
- в Excel 2007 и новее зайти Файл — Параметры Excel — Надстройки — Перейти (File — Excel Options — Add-ins — Go)
- в Excel 2003 и старше — открыть меню Сервис — Надстройки (Tools — Add-ins)
и установить соответствующий флажок. Тогда на вкладке или в меню Данные (Data) появится нужная нам команда.
Чтобы использовать надстройку Поиск решения для нашей задачи необходимо будет слегка модернизировать наш пример, добавив к списку подбираемых сумм несколько вспомогательных ячеек и формул:
- Диапазон A1:A20 содержит наши числа, из которых мы будем выбирать нужные, чтобы «вписаться» в заданную сумму.
- Диапазон В1:B20 будет своего рода набором переключателей, т.е. будет содержать нули или единички, показывая, отбираем мы данное число в выборку или нет.
- В ячейке E2 стоит обычная автосумма всех единичек по столбцу B, подсчитывающая кол-во выбранных чисел.
- В ячейке E3 с помощью функции СУММПРОИЗВ (SUMPRODUCT) считается сумма попарных произведений ячеек из столбцов А и B (то есть A1*B1+A2*B2+A3*B3+…). Фактически, здесь подсчитывается сумма чисел из столбца А, отобранных единичками из столбца В.
- В розовую ячейку E4 пользователь вводит желаемую сумму для подбора.
- В ячейке E5 вычисляется абсолютное по модулю значение погрешности подбора с целью ее будущей минимизации.
- Все желтых ячейках Е8:E17 хотелось бы получить список отобранных чисел, т.е. тех чисел из столбца А, напротив которых в столбце В есть единички. Для этого необходимо выделить сразу все (!) желтые ячейки и в них ввести вот такую формулу массива:
=ЕСЛИОШИБКА(ИНДЕКС($A$1:$A$20;НАИМЕНЬШИЙ(ЕСЛИ(B1:B20=1;СТРОКА(B1:B20);»»);СТРОКА()-СТРОКА($E$8)+1));»»)
=IFERROR(INDEX($A$1:$A$20;SMALL(IF(B1:B20=1;ROW(B1:B20);»»);ROW()-ROW($E$8)+1));»»)
После ввода формулы ее необходимо ввести не как обычную формулу, а как формулу массива, т.е. нажать не Enter, а Ctrl+Shift+Enter. Похожая формула используется в примере о ВПР, выдающей сразу все найденные значения (а не только первое).
Теперь перейдем на вкладку (или в меню) Данные и запустим инструмент Поиск решения (Data — Solver):
В открывшемся окне необходимо:
- Задать как целевую функцию (Target Cell) — ячейку вычисления погрешности подбора E5. Чуть ниже выбрать опцию — Минимум, т.к. мы хотим подобрать числа под заданную сумму с минимальной (а лучше даже нулевой) погрешностью.
- В качестве изменяемых ячеек переменных (Changing cells) задать диапазон столбца переключателей B1:B20.
- С помощью кнопки Добавить (Add) создать дополнительное условие на то, что ячейки диапазона B1:B20 должны быть бинарными (т.е. содержать только 0 или 1):
- С помощью той же кнопки, при необходимости, создать ограничение на количество чисел в выборке. Например, если мы знаем, что сумма была разбита на 5 счетов, то:
После ввода всех параметров и ограничений запускаем процесс подбора кнопкой Найти решение (Solve). Процесс подбора занимает от нескольких секунд до нескольких минут (в тяжелых случаях) и заканчивается появлением следующего окна:
Теперь можно либо оставить найденное решение подбора (Сохранить найденное решение), либо откатиться к прежним значениям (Восстановить исходные значения).
Необходимо отметить, что для такого класса задач существует не одно, а целое множество решений, особенно, если не приравнивать жестко погрешность к нулю. Поэтому запуск Поиска решения с разными начальными данными (т.е. разными комбинациями 0 и 1 в столбце В) может приводить к разным наборам чисел в выборках в пределах заданных ограничений. Так что имеет смысл прогнать эту процедуру несколько раз, произвольно изменяя переключатели в столбце В.
Найденные комбинации можно сохранять виде сценариев (кнопка Сохранить сценарий), чтобы вернуться к нем позднее с помощью команды Данные — Анализ «что-если» — Диспетчер сценариев (Data — What-If Analysis — Scenario Manager):
И весьма удобно будет вывести все найденные решения, сохраненные в виде сценариев, в одной сравнительной таблице с помощью кнопки Отчет (Summary):
Способ 2. Макрос подбора
В этом способе всю работу делает макрос, который тупо перебирает случайные комбинации чисел, пока не наткнется на нужную сумму в пределах разрешенной погрешности. Добавлять столбец с нулями и единичками и формулы в этом случае не нужно.
Для использования макроса нажмите сочетание Alt+F11, в открывшемся окне редактора Visual Basic вставьте новый модуль через меню Insert — Module и скопируйте туда этот код:
Sub Combinator() Dim Data() As Variant, Selected() As Variant Dim goal As Double, sel_count As Integer, prec As Double Const LIMIT = 1000000 prec = Range("D5").Value sel_count = Range("D2").Value goal = Range("D4").Value Set OutRange = Range("D8") Set InputRange = Range("A1", Range("A1").End(xlDown)) input_count = InputRange.Cells.Count Data = InputRange.Value ReDim Selected(1 To sel_count) As Variant NewTry: For j = 1 To sel_count Start: RandomIndex = Int(Rnd * input_count + 1) RandomValue = Data(RandomIndex, 1) 'начиная со второго элемента дополнительно проверяем, чтобы такой уже не был выбран If j > 1 Then For k = 1 To j - 1 If Selected(k) = RandomValue Then GoTo Start Next k End If Selected(j) = RandomValue Next j If Abs(WorksheetFunction.Sum(Selected) - goal) <= prec Then Range("D3").Value = WorksheetFunction.Sum(Selected) MsgBox "Подбор завершен. Необходимая точность достигнута." Range(OutRange, OutRange.End(xlDown)).ClearContents OutRange.Resize(sel_count, 1).Value = Application.Transpose(Selected) Exit Sub Else iterations = iterations + 1 If iterations > LIMIT Then MsgBox "Достигнут лимит попыток. Решение не найдено." Exit Sub Else GoTo NewTry End If End If End Sub
Аналогично первому способу, запуская макрос несколько раз, можно получать разные наборы подходящих чисел.
P.S. Сейчас набегут энтузиасты с мехмата МГУ с криками «Тупой перебор — это неэстетично!» Да, я в курсе, что прямой перебор вариантов — это не самый оптимальный способ поиска. Да, существует много умных алгоритмов поиска решения таких задач, которые сокращают время поиска и находят нужную комбинацию заметно быстрее. Могу даже рассказать про парочку. Но мне на данном этапе существующей скорости «тупого перебора» вполне достаточно — обработка массива из 1000 ячеек идет меньше секунды. Готов подождать
Ссылки по теме
- Оптимизация бизнес-модели с помощью надстройки Поиск решения (Solver)
- Что такое макросы, куда и как вставлять код макросов на VBA
Хороший инструмент — это надстройка Поиск решения в MS Excel!
Например, его можно использовать в ситуации, когда вам нужно найти вариант, из которого с разных чисел могла быть добавлена определенная сумма (возможно, вы ищете, с каких счетов могла быть сформирована сумма платежа). Допустим, вам нужно найти сумму 10 из заданных чисел:
Для начала включаем надстройку или проверяем, что она включена (в Excel 2013): Файл/Параметры, раздел Надстройки, выберите Управление: Надстройки Excel, нажмите кнопку Перейти. Установите флажок Поиск решения, нажмите кнопку ОК
Найдите решение, которое появилось на ленте на вкладке «Данные»:
Теперь нам нужно понять, как мы можем использовать параметры в разных строках для «выбора» суммы. Я сделал вариант, когда мы указываем множитель 0 или 1 в одном столбце, подсчитываем произведение в соседнем столбце, а затем добавляем значения к итогу:
- в ячейках столбца B указываем 0 или 1 (теперь неважно, что именно)
- в ячейке C4 формула = A4 * B4
- в ячейках C5: C14 — то же с учетом номера строки
- в ячейке C3 формула = СУММ (C4: C14)
Теперь приступим к поиску решения. И заполните:
- Оптимизация целевой функции: $ C $ 3
- Раньше: Значения: 10
- Изменение ячеек переменных: $ B $ 4: $ B $ 14
- В соответствии с ограничениями: — добавьте (кнопка Добавить) три условия: 1) значения переменных должны быть целыми числами, 2) значения должны быть> = 0, 3) 2) значения должны быть быть
Не очень распространено, но и не экзотично. Во время моих обучающих курсов такой вопрос задавали не раз и не два. Суть в том, что у нас есть конечный набор некоторых чисел, из которых мы должны выбрать те, которые в сумме дают заданное значение.
В реальной жизни эта задача может показаться другой.
- Например, мы загрузили из интернет-банка все платежи, поступившие на наш счет за последний месяц. Один из клиентов разделяет сумму платежа на несколько отдельных счетов и производит оплату в рассрочку. Мы знаем общую сумму к оплате и количество счетов, но не знаем сумму. В истории платежей необходимо выбрать те суммы, которые, как правило, дают заданное значение.
- У нас есть несколько рулонов стали (линолеум, бумага.), Из которых мы должны выбрать те, которые придадут заказу заданную длину.
- Блэкджек или обычно «пойнт». Необходимо собрать карты с общей стоимостью как можно ближе к 21 баллу, но не превышать этот порог.
В некоторых случаях может быть известна допустимая погрешность допуска. Он может быть нулевым (в случае счетов для снятия средств) и ненулевым (в случае бросков на снятие средств), либо ограничиваться снизу или сверху (в случае блэкджека).
Давайте рассмотрим разные способы решения такой задачи в Excel.
Способ 1. Надстройка Поиск решения (Solver)
Эта надстройка входит в стандартный набор Microsoft Office вместе с Excel и предназначена, как правило, для решения линейных и нелинейных задач оптимизации со списком ограничений. Для его подключения необходимо:
- в Excel 2007 и более поздних версиях выберите Файл — Параметры Excel — Надстройки — Перейти
- в Excel 2003 и более ранних версиях: откройте меню Инструменты — Надстройки
и поставьте галочку в соответствующем поле. Тогда нужная нам команда появится во вкладке или меню «Данные.
Чтобы использовать надстройку Поиск решения нашей проблемы, нам нужно будет немного модернизировать наш пример, добавив несколько вспомогательных ячеек и формул в список сумм для выбора:
- Диапазон A1: A20 содержит наши числа, из которых мы выберем те, которые нам нужны, чтобы «уместить» заданное количество.
- Диапазон B1: B20 будет своего рода набором переключателей, то есть он будет содержать ноль или один, указывая, выбираем ли мы данное число в образце или нет.
- Ячейка E2 содержит обычную автоматическую сумму всех единиц в столбце B, в которой подсчитывается количество выбранных чисел.
- В ячейке E3 функция СУММПРОИЗВ вычисляет сумму произведений пары ячеек из столбцов A и B (то есть A1 * B1 + A2 * B2 + A3 * B3 +.). Фактически, он вычисляет сумму чисел в столбце A, выбранных из чисел в столбце B.
- В розовой ячейке E4 пользователь вводит желаемую сумму для вывода.
- В ячейке E5 вычисляется абсолютное значение ошибки выбора, чтобы минимизировать ее в будущем.
- Все желтые ячейки E8: E17 хотели бы получить список выбранных чисел, т.е тех чисел из столбца A, перед которыми стоят числа из столбца B. Для этого нужно выделить сразу все (!) Желтые ячейки и вставьте в них следующую формулу массива:
После ввода формулы ее нужно вводить не как обычную формулу, а как формулу массива, т.е нажимать не Enter, а Ctrl + Shift + Enter. Аналогичная формула используется в примере ВПР, который возвращает все найденные значения сразу (а не только первое).
Теперь перейдите на вкладку Data (или меню) и запустите инструмент Data — Solver):
В открывшемся окне вам необходимо:
- Установить как целевую функцию (Целевая ячейка) — ячейка для расчета ошибки выбора E5. Чуть ниже выбираем вариант — Минимум, потому что мы хотим подбирать числа на заданную сумму с минимальной (или даже нулевой) ошибкой.
- Установите диапазон столбцов переключателя B1: B20 как Edit Cells.
- Используя кнопку Добавить, создайте дополнительное условие, что ячейки диапазона B1: B20 должны быть двоичными (т.е содержать только 0 или 1):
Используя ту же кнопку, при необходимости создайте ограничение на количество чисел в образце. Например, если мы знаем, что сумма разделена на 5 счетов, тогда:
После ввода всех параметров и ограничений запустите процесс выбора, нажав кнопку «Решить». Процесс выбора длится от нескольких секунд до нескольких минут (в самых серьезных случаях) и заканчивается появлением следующего окна:
Теперь вы можете оставить найденное решение выбора (Сохранить найденное решение) или вернуться к предыдущим значениям (Восстановить исходные значения).
Следует отметить, что для этого класса задач существует не одно, а целый набор решений, особенно если ошибка строго не равна нулю. Следовательно, выполнение поиска решения с разными начальными данными (например, с разными комбинациями нулей и единиц в столбце B) может привести к разным наборам чисел в выборках в указанных пределах. Поэтому имеет смысл запустить эту процедуру несколько раз, произвольно меняя переключатели в столбце B.
Найденные комбинации можно сохранить как сценарии (кнопка Сохранить сценарий), чтобы вы могли вернуться к ним позже, используя команду Данные — Анализ моделирования — Менеджер сценариев):
И все найденные решения, сохраненные в виде скрипта, будет очень удобно просматривать в единой сравнительной таблице с помощью кнопки Сводка):
Способ 2. Макрос подбора
В этом методе вся работа выполняется макросом, который по глупости прокручивает случайные комбинации чисел, пока не найдет требуемое количество в пределах допустимой ошибки. В этом случае нет необходимости добавлять столбец с нулями и единицами и формулами.
Чтобы использовать макрос, нажмите комбинацию Alt + F11, в открывшемся окне редактора Visual Basic вставьте новый модуль через меню Insert — Module и скопируйте туда этот код:
Подобно первому способу, запустив макрос несколько раз, вы можете получить несколько наборов подходящих чисел.
в Excel 2007 и более поздних версиях выберите Файл — Параметры Excel — Надстройки — Перейти
в Excel 2003 и более ранних версиях: откройте меню Инструменты — Надстройки
и поставьте галочку в соответствующем поле. После этого необходимая команда появится на вкладке или в меню «Данные».
: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/users/d/dm9/domains/mokshin.su/includes/unicode.inc on line 311.
Опубликовано d.mokshin в чтв, 11/06/2015 — 22:59. |
||
|
Хороший инструмент — надстройка Поиск решения в MS Excel!
Например, можно использовать в ситуации, когда вам нужно найти вариант из каких различных чисел могла сложиться определнная сумма (может вы ищете из каких счетов могла сложиться сумма оплаты). Допустим, нужно найти по приведенным числам сумму 10:
Для начал включим надстройку или проверим, что она включена (в Excel 2013): Файл / Параметры, раздел Надстройки, выбрать Управление: Надстройки Excel, нажать Перейти… Отметить флагом Поиск решения, нажать ОК
На ленте на вкладке Данные появился Поиск решения:
Теперь нужно придумать, как мы можем параметрами в разных строках «подбирать» сумму. Я сделал вариант, когда в столбце мы указываем множитель 0 или 1, в соседнем столбце считаем произведение, и потом значения складываем в итоговую сумму:
- в ячейках столбца B указываем 0 или 1 (сейчас неважно, что конкретно)
- в ячейке C4 формула =A4*B4
- в ячейках C5:C14 — аналогично, с учетом номера строки
- в ячейке C3 формула =СУММ(C4:C14)
Теперь запускаем Поиск решения. И заполняем:
- Оптимизировать целевую функцию: $C$3
- До: Значения: 10
- Изменяя ячейки переменных: $B$4:$B$14
- В соответствии с ограничениями: — добавляем (кнопка Добавить) три условия: 1) значения переменных должны быть целые, 2) значения должны быть >= 0, 3) 2) значения должны быть <= 1
- Выберите метод решения: Эволюционный поиск решения (выбираем это значение, т.к. у нас негладкая задача)
И нажимаем Найти решение.
Excel начинает что-то активно считать. В строке состояния меняются значения. При этом надо понимать, что чем больше самих переменных используется, и чем больше их значений возможно — тем дольше будет выполняться поиск решения. Поэтому критерии поиска, в том числе и ограничение по времени, можно задавать нажав на кнопку Параметры в окне Параметры поиска решений.
Через какое-то время отобразится окно Результаты поиска решений. В данном примере всё срослось удачно и решение было найдено:
Снимаем флаг Вернулься в диалоговое окно параметров (если установлено), нажимаем ОК и любуемся результатом.
Если немного изменить начальные данные, то можно получить другие результаты:
Если точный результат не может быть найден, то выдается такое сообщение:
А иногда случается так, что этот функционал вообще не может найти подходящее решение (скорее всего из-за очень большого количества вариантов, которые он просто не успевает перебрать), и сообщает следуещее:
В таком случае иногда помогает изменить немного подход к поиску результата, и искать не конкретное значение, а Минимум отклонения. В нашем примере делаем так:
- в ячейке C3 формула =ABS(СУММ(C4:C14)-B1)
А в Параметры поиска решений
- До: Минимум
И мы получаем прекрасный результат!
- Блог пользователя d.mokshin
На чтение 6 мин. Просмотров 2.9k. Опубликовано 15.12.2019
Хороший инструмент — надстройка Поиск решения в MS Excel!
Например, можно использовать в ситуации, когда вам нужно найти вариант из каких различных чисел могла сложиться определнная сумма (может вы ищете из каких счетов могла сложиться сумма оплаты). Допустим, нужно найти по приведенным числам сумму 10:
Для начал включим надстройку или проверим, что она включена (в Excel 2013): Файл / Параметры, раздел Надстройки, выбрать Управление: Надстройки Excel, нажать Перейти. Отметить флагом Поиск решения, нажать ОК
На ленте на вкладке Данные появился Поиск решения:
Теперь нужно придумать, как мы можем параметрами в разных строках «подбирать» сумму. Я сделал вариант, когда в столбце мы указываем множитель 0 или 1, в соседнем столбце считаем произведение, и потом значения складываем в итоговую сумму:
- в ячейках столбца B указываем 0 или 1 (сейчас неважно, что конкретно)
- в ячейке C4 формула =A4*B4
- в ячейках C5:C14 — аналогично, с учетом номера строки
- в ячейке C3 формула =СУММ(C4:C14)
Теперь запускаем Поиск решения. И заполняем:
- Оптимизировать целевую функцию: $C$3
- До: Значения: 10
- Изменяя ячейки переменных: $B$4:$B$14
- В соответствии с ограничениями: — добавляем (кнопка Добавить) три условия: 1) значения переменных должны быть целые, 2) значения должны быть >= 0, 3) 2) значения должны быть
Не очень частый, но и не экзотический случай. На моих тренингах такой вопрос задавали не один и не два раза 🙂 Суть в том, что мы имеем конечный набор каких-то чисел, из которых надо выбрать те, что дадут в сумме заданное значение.
В реальной жизни эта задача может выглядеть по-разному.
- Например, мы выгрузили из интернет-банка все платежи, которые поступили на наш счет за последний месяц. Один из клиентов разбивает сумму своего платежа на несколько отдельных счетов и платит частями. Мы знаем общую сумму оплаты и количество счетов, но не знаем их сумм. Надо подобрать те суммы в истории платежей, которые дадут в общем заданное значение.
- У нас есть несколько рулонов стали (линолеума, бумаги. ), из которых надо подобрать под заказ те, что дадут заданную длину.
- Блэкджек или в народе «очко». Надо набрать карты суммарной стоимостью максимально близкой к 21 баллу, но не превысить этот порог.
В некоторых случаях может быть известна разрешенная погрешность допуска. Она может быть как нулевой (в случае подбора счетов), так и ненулевой (в случае подбора рулонов), или ограниченной снизу или сверху (в случае блэкджека).
Давайте рассмотрим несколько способов решения такой задачи в Excel.
Способ 1. Надстройка Поиск решения (Solver)
Эта надстройка входит в стандартный набор пакета Microsoft Office вместе с Excel и предназначена, в общем случае, для решения линейных и нелинейных задач оптимизации при наличии списка ограничений. Чтобы ее подключить, необходимо:
- в Excel 2007 и новее зайти Файл — Параметры Excel — Надстройки — Перейти (File — Excel Options — Add-ins — Go)
- в Excel 2003 и старше — открыть меню Сервис — Надстройки (Tools — Add-ins)
и установить соответствующий флажок. Тогда на вкладке или в меню Данные (Data) появится нужная нам команда.
Чтобы использовать надстройку Поиск решения для нашей задачи необходимо будет слегка модернизировать наш пример, добавив к списку подбираемых сумм несколько вспомогательных ячеек и формул:
- Диапазон A1:A20 содержит наши числа, из которых мы будем выбирать нужные, чтобы «вписаться» в заданную сумму.
- Диапазон В1:B20 будет своего рода набором переключателей, т.е. будет содержать нули или единички, показывая, отбираем мы данное число в выборку или нет.
- В ячейке E2 стоит обычная автосумма всех единичек по столбцу B, подсчитывающая кол-во выбранных чисел.
- В ячейке E3 с помощью функции СУММПРОИЗВ (SUMPRODUCT) считается сумма попарных произведений ячеек из столбцов А и B (то есть A1*B1+A2*B2+A3*B3+. ). Фактически, здесь подсчитывается сумма чисел из столбца А, отобранных единичками из столбца В.
- В розовую ячейку E4 пользователь вводит желаемую сумму для подбора.
- В ячейке E5 вычисляется абсолютное по модулю значение погрешности подбора с целью ее будущей минимизации.
- Все желтых ячейках Е8:E17 хотелось бы получить список отобранных чисел, т.е. тех чисел из столбца А, напротив которых в столбце В есть единички. Для этого необходимо выделить сразу все (!) желтые ячейки и в них ввести вот такую формулу массива:
После ввода формулы ее необходимо ввести не как обычную формулу, а как формулу массива, т.е. нажать не Enter, а Ctrl+Shift+Enter. Похожая формула используется в примере о ВПР, выдающей сразу все найденные значения (а не только первое).
Теперь перейдем на вкладку (или в меню) Данные и запустим инструмент Поиск решения (Data — Solver):
В открывшемся окне необходимо:
- Задать как целевую функцию (Target Cell) — ячейку вычисления погрешности подбора E5. Чуть ниже выбрать опцию — Минимум, т.к. мы хотим подобрать числа под заданную сумму с минимальной (а лучше даже нулевой) погрешностью.
- В качестве изменяемых ячеек переменных (Changing cells) задать диапазон столбца переключателей B1:B20.
- С помощью кнопки Добавить (Add) создать дополнительное условие на то, что ячейки диапазона B1:B20 должны быть бинарными (т.е. содержать только 0 или 1):
С помощью той же кнопки, при необходимости, создать ограничение на количество чисел в выборке. Например, если мы знаем, что сумма была разбита на 5 счетов, то:
После ввода всех параметров и ограничений запускаем процесс подбора кнопкой Найти решение (Solve). Процесс подбора занимает от нескольких секунд до нескольких минут (в тяжелых случаях) и заканчивается появлением следующего окна:
Теперь можно либо оставить найденное решение подбора (Сохранить найденное решение), либо откатиться к прежним значениям (Восстановить исходные значения).
Необходимо отметить, что для такого класса задач существует не одно, а целое множество решений, особенно, если не приравнивать жестко погрешность к нулю. Поэтому запуск Поиска решения с разными начальными данными (т.е. разными комбинациями 0 и 1 в столбце В) может приводить к разным наборам чисел в выборках в пределах заданных ограничений. Так что имеет смысл прогнать эту процедуру несколько раз, произвольно изменяя переключатели в столбце В.
Найденные комбинации можно сохранять виде сценариев (кнопка Сохранить сценарий), чтобы вернуться к нем позднее с помощью команды Данные — Анализ «что-если» — Диспетчер сценариев (Data — What-If Analysis — Scenario Manager):
И весьма удобно будет вывести все найденные решения, сохраненные в виде сценариев, в одной сравнительной таблице с помощью кнопки Отчет (Summary):
Способ 2. Макрос подбора
В этом способе всю работу делает макрос, который тупо перебирает случайные комбинации чисел, пока не наткнется на нужную сумму в пределах разрешенной погрешности. Добавлять столбец с нулями и единичками и формулы в этом случае не нужно.
Для использования макроса нажмите сочетание Alt+F11, в открывшемся окне редактора Visual Basic вставьте новый модуль через меню Insert — Module и скопируйте туда этот код:
Аналогично первому способу, запуская макрос несколько раз, можно получать разные наборы подходящих чисел.
в Excel 2007 и новее зайти Файл — Параметры Excel — Надстройки — Перейти
в Excel 2003 и старше — открыть меню Сервис — Надстройки
и установить соответствующий флажок. Тогда на вкладке или в меню Данные появится нужная команда.
Способ 2. Макрос подбора
Skip to content
В статье предлагается несколько различных формул для выполнения поиска в двумерном массиве значений Excel. Просмотрите эти варианты и выберите наиболее для вас подходящий.
При поиске данных в электронных таблицах Excel чаще всего вы будете искать вертикально в столбцах или горизонтально в строках. Но иногда вам нужно просматривать сразу два условия – как строки, так и столбцы. Другими словами, вы стремитесь найти значение на пересечении определенной строки и столбца. Это называется матричным поиском (также известным как двумерный или поиск в диапазоне). Далее показано, как это можно сделать различными способами.
- Поиск в массиве при помощи ИНДЕКС ПОИСКПОЗ
- Формула ВПР и ПОИСКПОЗ для поиска в диапазоне
- Функция ПРОСМОТРX для поиска в строках и столбцах
- Формула СУММПРОИЗВ для поиска по строке и столбцу
- Поиск в матрице с именованными диапазонами
Поиск в массиве при помощи ИНДЕКС ПОИСКПОЗ
Самый популярный способ выполнить двусторонний поиск в Excel — использовать комбинацию ИНДЕКС с двумя ПОИСКПОЗ. Это разновидность классической формулы ПОИСКПОЗ ИНДЕКС , к которой вы добавляете еще одну функцию ПОИСКПОЗ, чтобы получить номера строк и столбцов:
ИНДЕКС( массив_данных ; ПОИСКПОЗ( значение_вертикальное ; диапазон_поиска_столбец ; 0), ПОИСКПОЗ( значение_горизонтальное ; диапазон_поиска_строка ; 0))
В этом способе, как и во всех остальных, мы используем поиск по двум условиям. Первое из них должно обнаружить совпадение в определенном столбце (в заголовках строк), а второе – в определенной строке (то есть, в заголовках столбцов). В результате мы имеем строку и столбец, которые соответствуют заданным условиям. А на пересечении их как раз и будут находиться искомые данные.
В качестве примера составим формулу для получения количества проданного товара за определённый период времени из таблицы, которую вы можете видеть ниже. Для начала определим все аргументы:
- Массив_данных — B2:E11 (ячейки данных, не включая заголовки строк и столбцов)
- Значение_вертикальное — H1 (целевой товар)
- Диапазон_поиска_столбец – A2:A11 (заголовки строк: названия напитков)
- Значение_горизонтальное — H2 (целевой период)
- Диапазон_поиска_строка — B1:E1 (заголовки столбцов: временные периоды)
Соедините все аргументы вместе, и вы получите следующую формулу для поиска числа в диапазоне:
=ИНДЕКС(B2:E11; ПОИСКПОЗ(H1;A2:A11;0); ПОИСКПОЗ(H2;B1:E1;0))
Как работает эта формула?
Хотя на первый взгляд это может показаться немного сложным, логика здесь простая. Функция ИНДЕКС извлекает значение из массива данных на основе номеров строк и столбцов, а две функции ПОИСКПОЗ предоставляют ей эти номера:
ИНДЕКС( B2:E11; номер_строки ; номер_столбца )
Здесь мы используем способность ПОИСКПОЗ возвращать относительную позицию значения в искомом массиве .
Итак, чтобы получить номер строки, мы ищем нужный нам товар (H1) в заголовках строк (A2:A11):
ПОИСКПОЗ(H1;A2:A11;0)
Чтобы получить номер столбца, мы ищем нужную нам неделю (H2) в заголовках столбцов (B1:E1):
ПОИСКПОЗ(H2;B1:E1;0)
В обоих случаях мы ищем точное совпадение, присваивая третьему аргументу значение 0.
В этом примере первое ПОИСКПОЗ возвращает 2, потому что нужный товар (Sprite) находится в ячейке A3, которая является второй по счёту в диапазоне A2:A11. Второй ПОИСКПОЗ возвращает 3, так как «Неделя 3» находится в ячейке D1, которая является третьей ячейкой в B1:E1.
С учетом вышеизложенного формула сводится к:
ИНДЕКС(B2:E11; 2 ; 3 )
Она возвращает число на пересечении второй строки и третьего столбца в матрице B2:E4, то есть в ячейке D3.
Думаю, вы понимаете, что аналогичным образом можно производить поиск в двумерном массиве Excel не только числа, но и текста. Тип данных здесь не имеет значения.
Формула ВПР и ПОИСКПОЗ для поиска в диапазоне
Другой способ выполнить матричный поиск в Excel — использовать комбинацию функций ВПР и ПОИСКПОЗ:
ВПР( значение_вертикальное ; массив_данных ; ПОИСКПОЗ( значение_горизонтальное , диапазон_поиска_строка , 0), ЛОЖЬ)
Для нашего образца таблицы формула принимает следующий вид:
=ВПР(H1; A2:E11; ПОИСКПОЗ(H2;A1:E1;0); ЛОЖЬ)
Где:
- Массив_данных — B2:E11 (ячейки данных, не включая заголовки строк и столбцов)
- Значение_вертикальное — H1 (целевой товар)
- Значение_горизонтальное — H2 (целевой период)
- Диапазон_поиска_строка — А1:E1 (заголовки столбцов: временные периоды)
Основой формулы является функция ВПР, настроенная на точное совпадение (последний аргумент имеет значение ЛОЖЬ). Она ищет заданное значение (H1) в первом столбце массива (A2:E11) и возвращает данные из другого столбца в той же строке. Чтобы определить, из какого столбца вернуть значение, вы используете функцию ПОИСКПОЗ, которая также настроена на точное совпадение (последний аргумент равен 0):
ПОИСКПОЗ(H2;A1:E1;0)
ПОИСКПОЗ ищет текст из H2 в заголовках столбцов (A1:E1) и указывает относительное положение найденной ячейки. В нашем случае нужная неделя (3-я) находится в D1, которая является четвертой по счету в массиве поиска. Итак, число 4 идет в аргумент номер_столбца функции ВПР:
=ВПР(H1; A2:E11; 4; ЛОЖЬ)
Далее ВПР находит точное совпадение H1 со значением в A3 и возвращает значение из 4-го столбца в той же строке, то есть из ячейки D3.
Важное замечание! Чтобы формула работала корректно, диапазон_поиска (A2:E11) функции ВПР и диапазон_поиска (A1:E1) функции ПОИСКПОЗ должны иметь одинаковое количество столбцов. Иначе число, переданное в номер_столбца, будет неправильным (не будет соответствовать положению столбца в массиве данных).
Функция ПРОСМОТРX для поиска в строках и столбцах
Недавно Microsoft представила еще одну функцию в Excel, которая призвана заменить все существующие функции поиска, такие как ВПР, ГПР и ИНДЕКС+ПОИСКПОЗ. Помимо прочего, ПРОСМОТРX может смотреть на пересечение определенной строки и столбца:
ПРОСМОТРX( значение_вертикальное ; диапазон_поиска_столбец ; ПРОСМОТРX( значение_горизонтальное ; диапазон_поиска_строка ; массив_данных ))
Для нашего примера набора данных формула выглядит следующим образом:
=ПРОСМОТРX(H1; A2:A11; ПРОСМОТРX(H2; B1:E1; B2:E11))
Примечание. В настоящее время ПРОСМОТРX — это функция, доступная только подписчикам Office 365 и более поздних версий.
В формуле используется функция ПРОСМОТРX для возврата всей строки или столбца. Внутренняя функция ищет целевой период времени в строке заголовка и возвращает все значения для этой недели (в данном примере для 3-й). Эти значения переходят в аргумент возвращаемый_массив внешнего ПРОСМОТРX:
=ПРОСМОТРX(H1; A2:A11; {544:87:488:102:87:433:126:132:111:565})
Внешняя функция ПРОСМОТРX ищет нужный товар в заголовках столбцов и извлекает значение из той же позиции из возвращаемого_массива.
Формула СУММПРОИЗВ для поиска по строке и столбцу
Функция СУММПРОИЗВ чрезвычайно универсальна — она может делать множество вещей, выходящих за рамки ее предназначения, особенно когда речь идет об оценке нескольких условий.
Чтобы найти значение на пересечении определенных строки и столбца, используйте эту общую формулу:
СУММПРОИЗВ ( диапазон_поиска_столбец = значение_вертикальное ) * ( диапазон_поиска_строка = значение_горизонтальное), массив_данных )
Чтобы выполнить поиск данных в массиве по строке и столбцу в нашем наборе данных, формула выглядит следующим образом:
=СУММПРОИЗВ((A2:A11=H1)*(B1:E1=H2); B2:E11)
Приведенный ниже вариант также будет работать:
=СУММПРОИЗВ((A2:A11=H1)*(B1:E1=H2)*B2:E11)
Теперь поясним подробнее. В начале мы сравниваем два значения поиска с заголовками строк и столбцов (целевой товар в H1 со всеми наименованиями в A2: A11 и целевой период времени в H2 со всеми неделями в B1: E1):
(A2:A11=H1)*(B1:E1=H2)
Это дает нам два массива значений ИСТИНА и ЛОЖЬ, где ИСТИНА означает совпадения:
{ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ}) * ({ЛОЖЬ;ЛОЖЬ;ИСТИНА;ЛОЖЬ}
Операция умножения преобразует значения ИСТИНА и ЛОЖЬ в 1 и 0 и создает матрицу из 4 столбцов и 10 строк (строки разделяются двоеточием, а каждый столбец данных — точкой с запятой):
{0;0;0;0:0;0;1;0:0;0;0;0:0;0;0;0:0;0;0;0:0;0;0;0:0;0;0;0:0;0;0;0:0;0;0;0:0;0;0;0}
Функция СУММПРОИЗВ умножает элементы приведенного выше массива на элементы B2:E4, находящихся в тех же позициях:
{0;0;0;0:0;0;1;0:0;0;0;0:0;0;0;0:0;0;0;0:0;0;0;0:0;0; 0;0:0;0;0;0:0;0;0;0:0;0;0;0} * {455;345;544;366:65;77;87;56:766; 655;488;865:129;66;102;56:89;141;87;89:566;511;433;522:154; 144;126; 162:158;165;132;155:112;143;111; 125:677;466;565;766})
И поскольку умножение на ноль дает в результате ноль, остается только элемент, соответствующий 1 в первом массиве:
=СУММПРОИЗВ({0;0;0;0:0;0;87;0:0;0;0;0:0;0;0;0:0;0;0;0:0; 0;0;0:0;0;0;0:0;0;0;0:0;0;0;0:0;0;0;0})
Наконец, СУММПРОИЗВ складывает все элементы результирующего массива и возвращает значение 87.
Примечание . Если в вашей таблице несколько заголовков строк и/или столбцов с одинаковыми именами, итоговый массив будет содержать более одного числа, отличного от нуля. И все эти числа будут суммированы. В результате вы получите сумму значений, удовлетворяющую обоим критериям. Это то, что отличает формулу СУММПРОИЗВ от ПОИСКПОЗ и ВПР, которые возвращают только первое найденное совпадение.
Поиск в матрице с именованными диапазонами
Еще один достаточно простой способ поиска в массиве в Excel — использование именованных диапазонов. Рассмотрим пошагово:
Шаг 1. Назовите столбцы и строки
Самый быстрый способ назвать каждую строку и каждый столбец в вашей таблице:
- Выделите всю таблицу (в нашем случае A1:E11).
- На вкладке « Формулы » в группе « Определенные имена » щелкните « Создать из выделенного » или нажмите комбинацию клавиш Ctrl + Shift + F3.
- В диалоговом окне « Создание имени из выделенного » выберите « в строке выше » и « в столбце слева» и нажмите «ОК».
Это автоматически создает имена на основе заголовков строк и столбцов. Однако есть пара предостережений:
- Если ваши заголовки столбцов и/или строк являются числами или содержат определенные символы, которые не разрешены в именах Excel, то имена для таких столбцов и строк не будут созданы. Чтобы просмотреть список созданных имен, откройте Диспетчер имен (
Ctrl + F3
). Если некоторые имена отсутствуют, определите их вручную. - Если некоторые из ваших заголовков строк или столбцов содержат пробелы, то они будут заменены символами подчеркивания, например, Неделя_1.
Шаг 2. Создание формулы поиска по матрице
Чтобы получить значение из матрицы на пересечении определенной строки и столбца, просто введите одну из следующих общих формул в пустую ячейку:
=имя_строки имя_столбца
Или наоборот:
=имя_столбца имя_строки
Например, чтобы получить продажу Sprite в 3-й неделе, используйте выражение:
=Sprite неделя_3
То есть, имена диапазонов здесь разделены пробелом, который в данном случае является оператором пересечения массивов.
Если кому-то нужны более подробные инструкции, опишем весь процесс пошагово:
- В ячейке, в которой вы хотите отобразить результат, введите знак равенства (=).
- Начните вводить имя целевой строки, Sprite. После того, как вы введете пару символов, Excel отобразит все существующие имена, соответствующие вашему вводу. Дважды щелкните нужное имя, чтобы ввести его в формулу.
- После имени строки введите пробел , который в данном случае работает как оператор пересечения.
- Введите имя целевого столбца ( в нашем случае неделя_3 ).
- Как только будут введены имена строки и столбца, Excel выделит соответствующую строку и столбец в вашей таблице, и вы нажмете Enter, чтобы завершить ввод:
Ваш поиск нужной ячейки в массиве выполнен, найден результат 87.
Вот какими способами можно выполнять поиск в массиве значений – в строках и столбцах таблицы Excel. Я благодарю вас за чтение и надеюсь еще увидеть вас в нашем блоге.
Еще несколько материалов по теме:
Например, у меня есть следующий список чисел, и теперь я хочу знать, какая комбинация чисел в списке дает в сумме 480, на следующем скриншоте вы можете увидеть, что есть пять групп возможных комбинаций, которые в сумме равны до 480, например, 300 + 60 + 120, 300 + 60 + 40 + 80 и т. д. В этой статье я расскажу о некоторых методах определения суммирования ячеек до определенного значения в Excel.
- Найдите комбинацию ячеек, равную заданной сумме, с помощью формул
- Найдите комбинацию ячеек, которая равна заданной сумме, с помощью надстройки Solver
- Найдите комбинацию ячеек, которая равна заданной сумме, с помощью функции, определяемой пользователем
- Найдите все комбинации, которые равны заданной сумме, с удивительной функцией
Найдите комбинацию ячеек, равную заданной сумме, с помощью формул
Во-первых, вам нужно создать несколько имен диапазонов, а затем применить формулу массива, чтобы найти ячейки, которые суммируются с целевым значением, выполните следующие действия шаг за шагом:
1. Выберите список номеров и определите для этого списка имя диапазона — Range1 в Имя Box, и нажмите Enter ключ для завершения определения имени диапазона, см. снимок экрана:
2. После определения имени диапазона для списка номеров вам необходимо создать еще два имени диапазона в Менеджер имен коробка, пожалуйста, нажмите Формулы > Менеджер имен, В Менеджер имен диалоговое окно, нажмите Новинки кнопку см. скриншоты:
3. В выскочившем Новое имя диалоговое окно введите имя List1 в Имя и фамилия поле и введите эту формулу = СТРОКА (КОСВЕННАЯ («1:» & СТРОКА (Диапазон1))) (Range1 это имя диапазона, которое вы создали на шаге 1) в Относится к поле, см. снимок экрана:
4. Нажмите OK вернуться к Менеджер имен диалоговое окно, затем продолжайте щелкать Новинки кнопку, чтобы создать другое имя диапазона, в Новое имя диалоговое окно введите имя List2 в Имя и фамилия поле и введите эту формулу = СТРОКА (КОСВЕННАЯ («1:» & 2 ^ СТРОКА (Диапазон1))) (Range1 это имя диапазона, которое вы создали на шаге 1) в Относится к поле, см. снимок экрана:
5. После создания имен диапазонов примените следующую формулу массива к ячейке B2:
=IF(ISNUMBER(MATCH(ROWS($1:1),IF(INDEX(MOD(INT((List2-1)/2^(TRANSPOSE(List1)-1)),2),MATCH(TRUE,MMULT(MOD(INT((List2-1)/2^(TRANSPOSE(List1)-1)),2),Range1)=$C$2,0),),TRANSPOSE(List1)),0)),»X»,»»), и нажмите Shift + Ctrl + Enter вместе, затем перетащите дескриптор заполнения вниз в ячейку B8, последнее число в списке, и вы увидите, что числа, общая сумма которых составляет 480, помечены как X в столбце B, см. снимок экрана:
- Ноты:
- В приведенной выше длинной формуле: List1, List2 и Range1 имена диапазонов, которые вы создали на предыдущих этапах, C2 — это конкретное значение, к которому вы хотите добавить числа.
- Если несколько комбинаций значений имеют сумму, равную определенному значению, отображается только одна комбинация.
Быстрый и простой поиск и перечисление всех комбинаций, равных заданной сумме, в Excel
Kutools for Excel‘s Составить номер Утилита может помочь вам быстро и легко найти и перечислить все комбинации и конкретные комбинации, которые равны заданной сумме. Нажмите, чтобы скачать Kutools for Excel!
Найдите комбинацию ячеек, которая равна заданной сумме, с помощью надстройки Solver
Если вы не уверены в приведенном выше методе, Excel содержит Надстройка Solver функция, используя эту надстройку, вы также можете определить числа, общая сумма которых равна заданному значению.
1. Во-первых, вам нужно активировать это решающее устройство добавить в, перейдите к Файл > Опции, В Параметры Excel диалоговое окно, нажмите Надстройки на левой панели, а затем щелкните Надстройка Solver из Неактивные надстройки приложений раздел, см. снимок экрана:
2. Затем нажмите Go для входа в Надстройки диалог, проверьте Надстройка Solver и нажмите OK для успешной установки этой надстройки.
3. После активации надстройки Solver вам необходимо ввести эту формулу в ячейку B9: = СУММПРОИЗВ (B2: B9; A2: A9)(B2: B9 — это пустые ячейки столбца рядом со списком номеров, и A2: A9 это список номеров, который вы используете. ) и нажмите Enter ключ, см. снимок экрана:
4. Затем нажмите Данные > решающее устройство , чтобы перейти к Параметр решателя диалоговое окно, в диалоговом окне выполните следующие операции:
(1.) Щелкните кнопка для выбора ячейки B10 где ваша формула из Установить цель раздел;
(2.) Тогда в к раздел, выберите Значение, и введите целевое значение 480 как вам нужно;
(3.) Под Изменяя ячейки переменных раздел, нажмите кнопка для выбора диапазона ячеек B2: B9 где будут отмечены ваши соответствующие числа.
5. Затем нажмите Добавить кнопку, чтобы перейти к Добавить ограничение диалоговое окно, нажмите кнопка для выбора диапазона ячеек B2: B9И выберите бункер из выпадающего списка см. снимок экрана:
6. Нажмите OK вернуться в Параметр решателя диалоговое окно, затем щелкните Решить кнопку, через несколько минут Результаты решателя появится диалоговое окно, и вы увидите, что комбинация ячеек, равная заданной сумме 480, помечена как 1. В поле Результаты решателя диалог, пожалуйста, выберите Сохранить решение для решения и нажмите OK для выхода из диалога. Смотрите скриншот:
Внимание: Этот метод также позволяет получить только одну комбинацию ячеек, если существует более одной комбинации значений, сумма которой равна определенному значению.
Найдите комбинацию ячеек, которая равна заданной сумме, с помощью функции, определяемой пользователем
Первые два метода являются сложными для большинства наших пользователей Excel, здесь я могу создать код VBA, чтобы быстро и легко решить эту задачу.
Чтобы получить правильный результат, вы должны сначала отсортировать список номеров в порядке убывания. А затем проделайте следующие шаги:
1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.
Код VBA: найти комбинацию ячеек, равную заданной сумме:
Function GetCombination(CoinsRange As Range, SumCellId As Double) As String
'updateby Extendoffice
Dim xStr As String
Dim xSum As Double
Dim xCell As Range
xSum = SumCellId
For Each xCell In CoinsRange
If Not (xSum / xCell < 1) Then
xStr = xStr & Int(xSum / xCell) & " of " & xCell & " "
xSum = xSum - (Int(xSum / xCell)) * xCell
End If
Next
GetCombination = xStr
End Function
3. Затем сохраните и закройте это окно кода, а затем вернитесь на рабочий лист и введите эту формулу = getcombination (A2: A9, C2) в пустую ячейку и нажмите Enter key, вы получите следующий результат, который отображает комбинационные числа, равные заданной сумме, см. снимок экрана:
- Ноты:
- В приведенной выше формуле A2: A9 — диапазон номеров, а C2 содержит целевое значение, которому вы хотите равняться.
- Если несколько комбинаций значений имеют сумму, равную определенному значению, отображается только одна комбинация.
Найдите все комбинации, которые равны заданной сумме, с удивительной функцией
Возможно, все вышеперечисленные методы несколько сложны для вас, здесь я представлю мощный инструмент, Kutools for Excel, С его Составить номер функция, вы можете быстро получить все комбинации, равные заданной сумме.
Советы:Чтобы применить это Составить номер функция, во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените эту функцию.
После установки Kutools for Excel, пожалуйста, сделайте так:
1. Нажмите Кутулс > Содержание > Составить номер, см. снимок экрана:
2, Затем в Составьте число диалоговое окно, щелкните кнопку, чтобы выбрать список номеров, который вы хотите использовать, из Источник данных, а затем введите общее число в Сумма текстовое поле, см. снимок экрана:
3. А затем нажмите OK Кнопка, появится окно с подсказкой, чтобы напомнить вам выбрать ячейку, чтобы найти результат, см. снимок экрана:
4. Затем щелкните OK, и теперь все комбинации, которые равны данному номеру, были отображены, как показано на скриншоте ниже:
Нажмите, чтобы скачать Kutools for Excel и бесплатная пробная версия прямо сейчас!
Демонстрация: найдите комбинацию ячеек, которая равна заданной сумме в Excel
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Функции ИНДЕКС и ПОИСКПОЗ в Excel на простых примерах
Смотрите также целое с помощью первом решении, только из нашей таблицы таком случае напишем в которой ведется месяцу, который может значение, а ссылочнаяЧелябинск=ГПР(3;{1;2;3:»a»;»b»;»c»;»d»;»e»;»f»};2;ИСТИНА)2,17 функции поиска.может быть не сопоставления = -1. Например, формула =ПОИСКПОЗ(«грейпфрут»;B7:B13;0) искомого значения, а A1:L1(горизонтальный вектор):Совместное использование функций оператора сцепки (&), запись немного отличается. и сравнить её два нуля. учет купленной продукции. быть выбран из – ссылку.02.05.12Поиск числа 3 в
100Функции ВПР и ГПР
Функция ПОИСКПОЗ в Excel
упорядочен. В этом случае вернет ошибку, т.к. не само значение.Если Вы уже работалиИНДЕКС чтобы получить уникальный Я рекомендую самостоятельно с искомым словом.Скачать примеры использования функцийНаша цель: создать карточку
выпадающего списка.Форма массива имеет вот3467 трех строках константы1,09 вместе с функций
-1 функция ПОИСКПОЗ() находит значения «грейпфрут» в Например: ПОИСКПОЗ(«б»;{«а»;»б»;»в»;»б»};0) возвращает с функциямии
столбец-ключ для поиска: сравнить эти формулы Если их значения ИНДЕКС и ПОИСКПОЗ заказа, где по=INDEX($C$2:$C$8,MATCH($F$2,$D$2:$D$8,0)) такой синтаксис:Челябинск массива и возврат1,95 индекс и ПОИСКПОЗ,описаныФункция наименьшее значение, которое диапазоне ячеек
вывести максимальное значение будет видеть, чтоВ этом примере именованныйИНДЕКС(массив;номер_строки;номер_столбца)3474 2 того же1,29 полезных функций внаходит наименьшее значение, чем искомое значение.
Функция ИНДЕКС в Excel
нет. «б» в массивеГПР хорошая альтернативаВПР (VLOOKUP)И наконец-то, несколько инойКогда речь идет о из массива. Протянем это за товар, диапазонarЧелябинск
(в данном случае —1,71 Microsoft Excel. которое больше илиФункции ПОИСКПОЗ() и ИНДЕКС()В файле примера можно {«а»;»б»;»в»;»б»}. Позиция второйиВПР
для поиска склеенной (не табличный) подход. циклах Excel (за ее вправо, получив какой клиент егоMonthAmtsray04.05.12 третьего) столбца. Константа0
Примечание: равно значению аргумента часто используются вместе, найти применение функции
буквы «б» будетПРОСМОТР,
Совместное использование ПОИСКПОЗ и ИНДЕКС в Excel
пары Как правило, каждый исключением VBA, конечно, аналогичную информацию по приобрел, сколько былосостоит из 3-х(массив) – массив3490 массива содержит триФормула Функция мастер подстановок большеискомое_значение т.к. позволяют по при поиске в проигнорирована, функция вернетв Excel, тоГПРНектаринЯнварь раз, когда необходимо потому что там цене и сумме. куплено и по несмежных диапазонов. Диапазон
констант или диапазонЧелябинск строки значений, разделенныхОписание не доступен в. найденной позиции в горизонтальном массиве. позицию только первой
должны знать, чтоииз ячеек H3 что-то искать в дело намного проще),Функция INDEX имеет две какой общей стоимости.MonthAmts ячеек.05.05.12 точкой с запятойРезультат Microsoft Excel.
Просматриваемый_массив
одном диапазоне вывестиПоиск позиции можно производить буквы. О том они осуществляют поискПРОСМОТР и J3 в
Excel, моментально на на ум приходят формы. Первая, содержит Сделать это поможет
- имеет 3 областиЕсли аргумент3503 (;). Так как
- =ВПР(1,A2:C10,2)Вот пример того, какдолжен быть упорядочен соответствующее значение из не только в как вернуть ВСЕ только в одномерном. Эта связка универсальна созданном ключевом столбце:
- ум приходит пара в первую очередь 3 аргумента для функция ИНДЕКС совместно – по однойarrayЧелябинск «c» было найденоИспользуя приблизительное соответствие, функция
использовать функцию ВПР. по убыванию: ИСТИНА, другого диапазона. Рассмотрим диапазонах ячеек, но позиции искомого значения массиве. Но иногда и обладает всемиПлюсы функций: ИНДЕКС и следующие решения:
ввода. Однако существует
с ПОИСКПОЗ. для каждого месяца
(массив) имеет только08.05.12 в строке 2 ищет в столбце=ВПР(B2;C2:E7,3,ИСТИНА) ЛОЖЬ, Z-A, …, пример. и в массивах читайте ниже в приходится сталкиваться с возможностями этих функций.: Простой способ, знакомая ПОИСКПОЗ. Результат поискаИтерационные (итеративные) вычисления. функция ИНДЕКС сДля начала создадим выпадающий – и в 1 строку или
3151
office-guru.ru
Функция ПОИСКПОЗ() в MS EXCEL
того же столбца, A значение 1,В этом примере B2 2, 1, 0,Найдем количество заданного товара констант. Например, формула разделе Поиск позиций двумерным поиском, когда А в некоторых функция, работает с выглядит так:Формулы массива (или такие 4 аргументами, где список для поля каждой области по 1 столбец, тоНижний Новгород что и 3, находит наибольшее значение, — это первый -1, -2, … на определенном складе. =ПОИСКПОЗ(«груши»;{«яблоки»;»ГРУШИ»;»мандарины»};0) вернет значение ВСЕХ текстовых значений,
соответствия требуется искать случаях, например, при любыми данными.Формула построена из блоков функции, как СУММПРОИЗВ, вместо одной таблицы АРТИКУЛ ТОВАРА, чтобы 4 строки и соответствующий аргумент с09.04.12 возвращается «c». которое меньше илиаргумент и т. д. Для этого используем 2. удовлетворяющих критерию. сразу по двум
Синтаксис функции
двумерном поиске данныхМинусы
и имеет более которые работают с можно указать несколько не вводить цифры 2 столбца. Вот номером строки/столбца не3438c равняется 1 и— элемент данных, функцияФункция формулу
Если искомое значение точноПОИСКПОЗискомое_значение просматриваемый_массив параметрам. Именно в на листе, окажется: Надо делать дополнительный или менее следующий массивами, хотя мы таблиц. Такой подход с клавиатуры, а формула для имени обязателен.Нижний НовгородВ этом примере последней составляет 0,946, а должна работать. ФункцииПОИСКПОЗ=ИНДЕКС(B67:E71;ПОИСКПОЗ(A74;A67:A71;0);ПОИСКПОЗ(C74;B66:E66;0)) не известно, то; тип_сопоставления) таких случаях связка просто незаменимой. В столбец и потом,
вид: их не подтверждаем позволяет одновременную работу выбирать их. ДляMonthAmtsЕсли аргумент02.05.12 использует функций индекс затем возвращает значение ВПР это первый
- возвращает не самоВ файле примера, соответствующий с помощью подстановочныхИскомое_значениеПОИСКПОЗ данном уроке мы возможно, еще и1*НЕ(ЕОШИБКА(ПОИСКПОЗ(F5;A2:A9;0))) с помощью Ctr сразу по нескольким этого кликаем в
- :array3471 и ПОИСКПОЗ вместе из столбца B аргумент — значение, значение, а его столбец и строка знаков можно задать- значение, используемоеи последовательно разберем функции прятать его отИзменяются только выделенные фрагменты. + Shift + таблицам.
- соответствующую ячейку (у=’Ex02′!$B$3:$C$6,’Ex02′!$E$3:$F$6,’Ex02′!$H$3:$I$6(массив) содержит болееНижний Новгород для возвращения раннюю в той же которое требуется найти. позицию в аргументе выделены с помощью поиск по шаблону, при поиске значенияИНДЕКСПОИСКПОЗ пользователя. При изменении
Для каждого столбца Enter, как вВ качестве последнего аргумента
нас это F13),=’Ex02′!$B$3:$C$6;’Ex02′!$E$3:$F$6;’Ex02′!$H$3:$I$6 1-й строки и04.05.12
Поиск позиции в массивах с текстовыми значениями
номер счета-фактуры и строке. Этот аргумент можетпросматриваемый_массив Условного форматирования.
т.е. искомое_значение может вв Excel оказывается
и числа строк в
с помощью функции случае с классическими необходимо выбрать номер затем выбираем вкладкуПри помощи функции 1-го столбца:
3160 его соответствующих даты2,17 быть ссылка на. Например, функция
СОВЕТ: Подробнее о поиске содержать знаки шаблона:просматриваемом_массивеИскомое_значение просто незаменимой.ИНДЕКС таблице — допротягивать ПОИСКПОЗ, мы проверяем формулами массива). области, к которой ДАННЫЕ – ПРОВЕРКА
INDEXи задано значение толькоМосква для каждого из
Поиск позиции в массиве констант
=ВПР(1,A2:C10,3,ИСТИНА) ячейку или фиксированнымПОИСКПОЗ(«б»;{«а»;»б»;»в»};0) позиций можно прочитать звездочку (*) иможет быть значениемНа рисунке ниже представлена
Поиск позиции с использованием подстановочных знаков
, а затем рассмотрим формулу сцепки на удалось ли найтиПервое решение выглядит следующем ссылается формула. Не ДАННЫХ. В открывшемся(ИНДЕКС) Вы можете аргумента18.04.12 пяти городов. ТакИспользуя приблизительное соответствие, функция значением, например «строфа»возвращает 2 — относительную
в соответствующем разделе знак вопроса (?). (числом, текстом или таблица, которая содержит пример их совместного новые строки (хотя в столбце искомое
образом: пресмыкающиеся друг к окне в пункте возвратить стоимость (Cost)row_num3328 как дата возвращаются
ищет в столбце или 21,000. Второй позицию буквы «б» сайта: Поиск позиции. Звездочка соответствует любой логическим значением (ЛОЖЬ месячные объемы продаж
Поиск позиций ВСЕХ текстовых значений, удовлетворяющих критерию
использования в Excel. это можно упростить выражение. Если нет,Рассмотрим ближе каким образом другу области должны ТИП ДАННЫХ выбираем
или сумму выручки(номер_строки), то будетМосква в виде числа, A значение 1,
аргумент — это в массиве {«а»;»б»;»в»}.С помощью функций ПОИСКПОЗ() последовательности знаков, знак
или ИСТИНА)) или
каждого из четырехБолее подробно о функциях применением умной таблицы). то функция возвращает эта формула работает: быть заключены в СПИСОК. А в (Rev) для определённого возвращен массив всех26.04.12 мы используем функцию находит наибольшее значение, диапазон ячеек, C2-:E7,Функция
и ИНДЕКС() можно вопроса соответствует любому
ссылкой на ячейку,
видов товара. Наша ВПР и ПРОСМОТР.Если нужно найти именно ошибку. С помощью($A$2:$D$9=F2)
Поиск позиции в массивах с Числами
круглые скобки, а качестве источника выделяем региона и месяца. значений этой строки.3368 текст отформатировать его
которое меньше или в котором выполняетсяПОИСКПОЗ
заменить функцию ВПР(), одиночному знаку. содержащую число, текст
задача, указав требуемыйФункция число (в нашем функции ЕОШИБКА мыДанный фрагмент формулы необходимо таблицы должны быть
столбец с артикулами,=INDEX(MonthAmts,B10,C10,D10)если же задано значениеМосква как дату. Результат равняется 1 и
поиск значения, которыене различает регистры об этом читайтеПредположим, что имеется перечень или логическое значение. месяц и типПОИСКПОЗ случае цена как проверяем выдала ли сравнивать значение каждой отделены друг от включая шапку. Так=ИНДЕКС(MonthAmts;B10;C10;D10) только аргумента
29.04.12 функции ПОИСКПОЗ фактически
составляет 0,946, а нужно найти. Третий при сопоставлении текста.
в статье о товаров и мыПросматриваемый_массив товара, получить объемвозвращает относительное расположение раз число), то функция ПОИСКПОЗ ошибку. ячейки таблицы с друга, так как у нас получился
Функции ПОИСКПОЗ() и ИНДЕКС()
С результатом функцииcolumn_num3420 используется функция индекс затем возвращает значение аргумент — этоЕсли функция функции ВПР().
не знаем точно— непрерывный диапазон продаж. ячейки в заданном
вместо ВПР можно
Если да, то искомым словом. Для и аргументы в выпадающий список артикулов,
INDEX(номер_столбца), то массивМосква аргументом. Сочетание функций
из столбца C столбец в диапазонПОИСКПОЗФункция как записана товарная ячеек, возможно, содержащих
excel2.ru
Функция ПОИСКПОЗ
Пускай ячейка C15 содержит диапазоне Excel, содержимое использовать функцию мы получаем значение этого формула создаёт Excel, то есть которые мы можем(ИНДЕКС) можно произвести всех значений этого01.05.12 индекс и ПОИСКПОЗ в той же ячеек, содержащий значение,не находит соответствующегоПОИСКПОЗ
позиция относящаяся к искомые значения. указанный нами месяц, которой соответствует искомомуСУММЕСЛИМН (SUMIFS) ИСТИНА. Быстро меняем в памяти компьютера с использованием точки выбирать. операцию умножения, как столбца.3501 используются два раза строке. которое вы поиска. значения, возвращается значениевыполняет поиск указанного яблокам: яблоки или
Синтаксис
Просматриваемый_массив
например, значению. Т.е. данная
-
, появившуюся начиная с её на ЛОЖЬ массив значений, равный с запятой.Теперь нужно сделать так, при вычислении налогаЕсли аргументМосква в каждой формуле100Четвертый аргумент не является ошибки #Н/Д.
элемента в диапазоне яблоко.может быть толькоМай функция возвращает не Excel 2007. По и умножаем на -
размерам нашей таблицы,В этой версии функции чтобы при выборе (Tax) в ячейке
-
row_num06.05.12 — сначала получить=ВПР(0,7,A2:C10,3,ЛОЖЬ) обязательным. Введите TRUEЕсли ячеек и возвращаетВ качестве критерия можно одностолбцовым диапазоном ячеек,. А ячейка C16 само содержимое, а идее, эта функция введённый вручную номер заполненную нулями (фактически
ИНДЕКС можно установить артикула автоматически выдавались F10:(номер_строки) не указан,Краткий справочник: обзор функции номер счета-фактуры, аИспользуя точное соответствие, функция
или FALSE. Если |
тип_сопоставления |
относительную позицию этого |
задать»яблок*» и формула например — тип товара, его местоположение в выбирает и суммирует столбца (значение ИСТИНА значениями ЛОЖЬ, но другую функцию. Для значения в остальных=0.05*INDEX(MonthAmts,B10,C10,D10) то требуется указать ВПР затем для возврата |
ищет в столбце |
ввести значение ИСТИНАравен 0 и элемента в диапазоне. =ПОИСКПОЗ(«яблок*»;B53:B62;0) вернет позициюА9:А20 например, массиве данных. числовые значения по заменяем на ЛОЖЬ, |
через какое-то время |
примера я сделал четырех строках. Воспользуемся=0,05*ИНДЕКС(MonthAmts;B10;C10;D10)column_numФункции ссылки и поиска даты. A значение 0,7. или аргумент оставленискомое_значение Например, если диапазон текстового значения, начинающегосяили диапазоном, расположеннымОвощиНапример, на рисунке ниже |
-
нескольким (до 127!) потому что нас мы будем умножать три таблицы с функцией ИНДЕКС. Записываемили она может возвратить(номер_столбца). (справка)Скопируйте всю таблицу и Поскольку точного соответствия пустым, функция возвращает
-
является текстом, то A1:A3 содержит значения со слова яблок в одной строке,
-
. Введем в ячейку формула вернет число условиям. Но если не интересует ошибка, эти значения, и
-
ценами из разных ее и параллельно ссылку для функцииЕсли аргументИспользование аргумента массива таблицы вставьте ее в нет, возвращается сообщение приблизительное значение, указатьискомое_значение 5, 25 и (если она есть например, C17 следующую формулу5 в нашем списке возвращаемая функцией ПОИСКПОЗ. Excel автоматически преобразует магазинов. Диапазонам данных изучаем синтаксис.CELLcolumn_num в функции ВПР ячейку A1 пустого
Пример
об ошибке. в качестве первогоможет содержать подстановочные 38, то формула в списке).А2:Е2 и нажмем, поскольку имя «Дарья» нет повторяющихся товаров Также ищем варианты их на ноль). я дал именам,Массив. В данном случае
(ЯЧЕЙКА), чтобы показать |
(номер_столбца) не указан, |
|
Вчера в марафоне |
листа Excel. |
|
#Н/Д |
аргумента. Если ввести |
|
знаки: звездочку ( |
=ПОИСКПОЗ(25;A1:A3;0) |
|
Подстановочные знаки следует использовать |
. Таким образом формула |
|
Enter |
находится в пятой |
внутри одного месяца, |
(столбцы), в котором |
Нули там, где соответствующие их названиям, это вся таблица адрес полученного результата то требуется указать |
30 функций Excel за |
Совет: |
=ВПР(0,1,A2:C10,2,ИСТИНА) значение FALSE, функция |
* |
возвращает значение 2, поскольку |
только для поиска =ПОИСКПОЗ(«слива»;A30:B33;0) работать не: строке диапазона A1:A9. |
то она просто |
support.office.com
Поиск значений с помощью функций ВПР, ИНДЕКС и ПОИСКПОЗ
формула не выдала значение в таблице используя поле «Имя». заказов. Выделяем ее в ячейке G10.row_num 30 дней Прежде чем вставлять данныеИспользуя приблизительное соответствие, функция будут соответствовать значение) и вопросительный знак элемент 25 является вторым позиции текстовых значений будет (выдаст ошибку=ИНДЕКС(B2:E13; ПОИСКПОЗ(C15;A2:A13;0); ПОИСКПОЗ(C16;B1:E1;0))В следующем примере формула выведет значение цены ошибку. Потому что не равно искомому Теперь диапазоны называются вместе с шапкой=CELL(«address»,INDEX(MonthAmts,B10,C10,D10))
(номер_строки).мы искали текстовые в Excel, установите ищет в столбце в первом аргументе ( в диапазоне. и #Н/Д), так какКак видите, мы получили вернет для заданного товара это будет означать,
слову. Как не Магазин1(B2:E5), Магазин2(B8:E11) и и фиксируем клавишей=ЯЧЕЙКА(«адрес»;ИНДЕКС(MonthAmts;B10;C10;D10))Если указаны оба аргумента, строки, используя функцию
для столбцов A A значение 0,1. предоставить. Другими словами,?
Совет:Типом сопоставления
Просматриваемый_массив
верный результат. Если3 и месяца: что искомое значение трудно догадаться, в Магазин3(B14:E17). F4.Вы можете использовать функцию то функция возвращаетFIND – D ширину Поскольку 0,1 меньше оставив четвертый аргумент). Звездочка соответствует любой Функцией= 0 (третийпредставляет собой диапазон поменять месяц и, поскольку число 300Плюсы было найдено. Немного случае нахождения искомого
Первый аргумент определен теперьНомер строки. Если быINDEX значение ячейки на(НАЙТИ), и выяснили, в 250 пикселей наименьшего значения в пустым, или ввести последовательности знаков, вопросительныйПОИСКПОЗ аргумент функции). ячеек размещенный одновременно тип товара, формула находится в третьем: Не нужен дополнительный запутано, но я слова, в памяти
осталось написать формулы у нас требовалось(ИНДЕКС), чтобы создать пересечении указанных строки что она чувствительна и нажмите кнопку столбце A, возвращается значение ИСТИНА — знак — любому одиночномуследует пользоваться вместоФункция ПОИСКПОЗ() возвращает только в нескольких столбцах снова вернет правильный
столбце диапазона B1:I1. столбец, решение легко уверен, что анализ компьютера в соответствующем для остальных аргументов. вывести одно значение, динамический диапазон. В и столбца. к регистру, в
Перенос текста сообщение об ошибке. обеспечивает гибкость. знаку. Если нужно одной из функций одно значение. Если и нескольких ячейках.
Попробуйте попрактиковаться
результат:Из приведенных примеров видно, масштабируется на большее формул позволит вам месте будет цифра мы бы написали этом примере созданЕсли в качестве аргумента отличие от функции(вкладка «#Н/ДВ этом примере показано, найти сам вопросительныйПРОСМОТР в списке присутствуетТип_сопоставления
Пример функции ВПР в действии
В данной формуле функция что первым аргументом
количество условий (до быстро понять ход 1.С помощью функции ВЫБОР, какую-то конкретную цифру. именованный диапазонrow_numSEARCHГлавная=ВПР(2,A2:C10,2,ИСТИНА) как работает функция. знак или звездочку,, когда требуется найти несколько значений, удовлетворяющих
— число -1, |
ИНДЕКС |
функции |
127), быстро считает. |
мыслей. |
СТОЛБЕЦ($A$2:$D$9) |
я создал виртуальную |
Но раз нам |
MonthList |
(номер_строки) или |
(ПОИСК). |
», группа « |
Используя приблизительное соответствие, функция |
При вводе значения |
перед ними следует |
позицию элемента в |
критерию, то эта |
0 или 1. |
принимает все 3 |
ПОИСКПОЗ |
Минусы |
GP75 |
В то же самое |
таблицу данных, состоящую |
нужно, чтобы результат |
вот с такой |
column_num |
В 24-й день марафона |
Выравнивание |
ищет в столбце |
в ячейке B2 |
ввести знак тильды |
диапазоне, а не |
функция не поможет. |
Тип_сопоставления аргумента:является искомое значение.: Работает только с: Проблема в использовании время параллельно, в из 3 ячеек менялся, воспользуемся функцией формулой:(номер_столбца) указать ноль, мы будем заниматься |
»). |
A значение 2, |
(первый аргумент) функция ( сам элемент. Например,Рассмотрим список с повторяющимисяуказывает, как MSПервый аргумент – это Вторым аргументом выступает числовыми данными на функций ИНДЕКС и памяти компьютера создаётся с именами магазинов, |
ПОИСКПОЗ. Она будет |
=’Ex03′!$C$1:INDEX(‘Ex03’!$C:$C,COUNTA(‘Ex03’!$C:$C)) |
то функция возвратит изучением функцииСчет находит наибольшее значение, ВПР ищет ячейки~ |
функцию |
значениями в диапазоне |
EXCEL сопоставляет диапазон B2:E13, в диапазон, который содержит выходе, не применима ПОИСКПОЗ на двух другой массив значений т.е. A1, A7, |
искать необходимую позицию |
=’Ex03′!$C$1:ИНДЕКС(‘Ex03’!$C:$C;СЧЁТЗ(‘Ex03’!$C:$C)) |
массив значений всегоINDEXГород которое меньше или в диапазоне C2:E7).ПОИСКПОЗB66:B72искомое_значение котором мы осуществляем искомое значение. Также |
для поиска текста, |
Пример функции ГПР
листах. В прикреплении (тех же размеров, A13 и я каждый раз, когда
Если в список в столбца или всей(ИНДЕКС). Используя номерДата выставления счета равняется 2 и (2-й аргумент) иСкопируйте образец данных изможно использовать для. Найдем все позициисо значениями в поиск. функция имеет еще не работает в файл. Уважаемые знатоки
что и размеры |
использовал ее как |
мы будем менять |
столбце C добавить |
строки соответственно. |
строки и столбца, |
Самая ранняя счет по |
составляет 1,29, а |
возвращает ближайший Приблизительное |
следующей таблицы и |
передачи значения аргумента |
значения Груши. |
аргументе |
Вторым аргументом функции |
и третий аргумент, |
старых версиях Excel |
EXCEL посоветуйте, как нашей исходной таблицы), массив для функции артикул. ещё один месяц,Ссылочная форма имеет вот |
она может возвратить |
городу, с датой |
затем возвращает значение совпадение с третьего вставьте их вномер_строкиЗначение Груши находятся впросматриваемый_массив. |
ИНДЕКС |
который задает тип |
(2003 и ранее). поправить содержащая номера столбцов ПОИСКПОЗ. Благодаря этому,Записываем команду ПОИСКПОЗ и то он автоматически такой синтаксис: значение или ссылку3115 из столбца B столбца в диапазоне, |
ячейку A1 нового |
функции |
позициях 2 иЕслиявляется номер строки. сопоставления. Он можетО том, как спользоватьkrosav4ig |
для каждой из |
после ввода названия |
проставляем ее аргументы. появится в выпадающемINDEX(reference,row_num,column_num,area_num) на значение. ВКазань в той же столбец E (3-й листа Excel. ЧтобыИНДЕКС 5 списка. Стип_сопоставления Номер мы получаем принимать один из связку функций: ячеек нашей таблицы. |
выбранного магазина в |
ИНДЕКС и ПОИСКПОЗ примеры
Искомое значение. В нашем списке в ячейкеИНДЕКС(ссылка;номер_строки;номер_столбца;номер_области) ходе марафона мы07.04.12 строке. аргумент). отобразить результаты формул,. помощью формулы массиваравен 0, то с помощью функции трех вариантов:ИНДЕКС (INDEX)GP75 Затем одна таблица ячейку G1, функция случае это ячейка, F2, который используетr уже не раз=»Казань = «&ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Казань»,$B$2:$B$33,0),1)& «,1,71
Четвертый аргумент пуст, поэтому выделите их иПОИСКПОЗ(искомое_значение;просматриваемый_массив;[тип_сопоставления])=(«груши»=$B$66:$B$72)*(СТРОКА($B$66:$B$72)-СТРОКА($D$65))
функция ПОИСКПОЗ() находитПОИСКПОЗ(C15;A2:A13;0)0и, вы столбцы со умножается на другую. ИНДЕКС относится к в которой указываетсяMonthListeference (ссылка) использовали функцию Дата выставления счета:Скопируйте всю таблицу и
функция возвращает Приблизительное |
нажмите клавишу F2, |
Аргументы функции ПОИСКПОЗ описаны |
можно найти все эти первое значение, которое |
. Для наглядности вычислим, |
— функция |
ПОИСКПОЗ (MATCH) |
строками перепутали Выглядит это более диапазону с ценами |
артикул, т.е. F13. |
, как источник данных. |
может ссылаться на |
INDEX » & ТЕКСТ(ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Казань»,$B$2:$B$33,0),3),»m/d/yy») вставьте ее в |
совпадение. Если это |
а затем — клавишу |
ниже. |
позиции. Для этого в что же возвращает |
ПОИСКПОЗ |
в качестве более |
200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ИНДЕКС(Данные!D2:AI6;ПОИСКПОЗ(F3;Данные!D2:D6;0);ПОИСКПОЗ(C3;Данные!D2:AI2;0)) |
или менее так, указанного мной магазина. Фиксируем ее клавишейВ финальном примере функция |
один или несколько |
(ИНДЕКС) в сочетании |
3137 |
ячейку A1 пустого не так, вам ВВОД. При необходимости |
Искомое_значение. |
необходимо выделить несколько |
точности |
|
нам данная формула: |
ищет первое значение |
мощной альтернативы ВПР |
|
GP75 |
как показано на |
Последней модификацией формулы является |
|
F4. |
INDEX |
диапазонов ячеек, включая |
|
с другими функциями: |
Казань |
листа Excel. |
|
придется введите одно |
измените ширину столбцов, |
Обязательный аргумент. Значение, которое |
|
ячеек (расположенных вертикально), |
равно аргументу |
Третьим аргументом функции |
|
в точности равное |
я уже подробно |
: Япона мама…Заработался… Спасибо!. |
|
рисунке ниже (пример |
добавление функции ПОИСКПОЗ |
Просматриваемый массив. Т.к. мы |
|
(ИНДЕКС) работает в |
несмежные диапазоны, которые |
вместе с |
|
09.04.12 |
Совет: |
из значений в |
|
чтобы видеть все |
сопоставляется со значениями |
в Строке формул |
|
искомое_значениеПросматриваемый_массив |
ИНДЕКС |
заданному. Сортировка не |
|
описывал (с видео). |
Всё- в отпуск |
для искомого выражения |
|
вместо индекса строки |
ищем по артикулу, |
сочетании с несколькими |
|
должны быть заключены |
EXACT |
=»Орел = «&ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Орел»,$B$2:$B$33,0),1)& «, |
|
Прежде чем вставлять |
столбцах C и |
данные. |
|
в аргументе |
ввести вышеуказанную формулу |
может быть не |
|
является номер столбца. |
требуется. |
В нашем же |
|
пора |
«Прогулка в парке»). |
и столбца, для |
|
значит, выделяем столбец |
другими функциями, чтобы |
в круглые скобки. |
|
(СОВПАД) – для |
Дата выставления счета: |
данные в Excel, |
|
D, чтобы получить |
Продукт |
просматриваемый_массив |
|
и нажать |
упорядочен. |
Этот номер мы |
|
1 или вовсе опущено |
случае, можно применить |
Если вы продвинутый пользователь |
|
В результате мы получаем |
того чтобы эти |
артикулов вместе с |
|
возвратить список месяцев, |
Если каждая область в |
поиска названия по |
Дополнительные сведения о функциях поиска
-
» & ТЕКСТ(ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Орел»,$B$2:$B$33,0),3),»m/d/yy») установите для столбцов
-
результат вообще.Количество
-
. Например, при поискеCTRL+SHIFT+ENTER
support.office.com
30 функций Excel за 30 дней: ИНДЕКС (INDEX)
Если тип_сопоставления равен 1, получаем с помощью— функция их для поиска Microsoft Excel, то массив с нулями значения были переменными, шапкой. Фиксируем F4. отсортированный в алфавитномreference точному совпадению в3154
A – СКогда вы будете довольныБананы номера в телефонной. В позициях, в то функция ПОИСКПОЗ() функцииПОИСКПОЗ по нескольким столбцам должны быть знакомы везде, где значения а не постоянными.Тип сопоставления. Excel предлагает порядке. Функция(ссылка) имеет только
- списке;Казань ширину в 250 ВПР, ГПР одинаково25 книге имя абонента
- которых есть значение находит наибольшее значение,ПОИСКПОЗ(C16;B1:E1;0)ищет самое большое в виде формулы
- с функцией поиска в нашей таблице В ячейках G2 три типа сопоставления:COUNTIF 1 строку или
- вместе с11.04.12 пикселей и нажмите удобно использовать. ВведитеАпельсины
указывается в качестве Груши будет выведено которое меньше либо. Для наглядности вычислим значение, которое меньше массива. Для этого: и подстановки не соответствуют искомому и G3 я больше, меньше и
Функция 24: INDEX (ИНДЕКС)
(СЧЁТЕСЛИ) подсчитывает, как 1 столбец, тоAREAS=»Челябинск = «&ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Челябинск»,$B$2:$B$33,0),1)& «, кнопку те же аргументы,38 искомого значения, а соответствующее значение позиции, равно, чем и это значение:
Как можно использовать функцию INDEX (ИНДЕКС)?
или равно заданному.Выделите пустую зеленую ячейку,ВПР выражению, и номер ввожу пример названия точное совпадение. У много месяцев стоит
- соответствующий аргумент с(ОБЛАСТИ) – для
- Дата выставления счета:Перенос текста но он осуществляет
- Яблоки нужным значением будет
- в остальных ячейкахискомое_значениеПросматриваемый_массивЕсли подставить в исходную
Синтаксис INDEX (ИНДЕКС)
Требуется сортировка в где должен бытьили столбца, в котором продукта и веса. нас конкретный артикул, перед каждым конкретным номером строки/столбца не
поиска последней области » & ТЕКСТ(ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Челябинск»,$B$2:$B$33,0),3),»m/d/yy»)
(вкладка "
поиск в строках
- 40 номер телефона. быдет выведен 0.должен быть упорядочен громоздкую формулу вместо
- порядке возрастания. результат.VLOOKUP соответствующее значение было Теперь, изменяя значения поэтому выбираем точное месяцем в списке обязателен.
- в именованном диапазоне;3191Главная вместо столбцов. «Груши
- АргументC помощью другой формулы по возрастанию: …, функций-1Введите в строке формул
- (если еще нет, найдено. в ячейках от совпадение. В программе (создается массив).area_num
- вместе сКазань», группа «Если вы хотите поэкспериментировать41искомое_значение
- массива -2, -1, 0,ПОИСКПОЗ— функция в нее следующую то сначала почитайте
- СУММ(($A$2:$D$9=F2)*СТОЛБЕЦ($A$2:$D$9)) G1 до G3, оно значится какSMALL(номер_области) указывает номер
- COLUMNS21.04.12Выравнивание с функциями подстановки,Формуламожет быть значением=НАИБОЛЬШИЙ((«груши»=$B$66:$B$72)*(СТРОКА($B$66:$B$72)-СТРОКА($D$65));СТРОКА()-СТРОКА($D$65)) 1, 2, …,уже вычисленные данные
ПОИСКПОЗ формулу:
эту статью, чтобы
Наконец, все значения из
- в ячейке H1 0 (ноль). На(НАИМЕНЬШИЙ) возвращает n-ое области в аргументе(ЧИСЛСТОЛБ) – для=»Нижний Новгород = «&ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Нижний»). прежде чем применять
- Описание (числом, текстом илиможно отсортировать найденные позиции, A-Z, ЛОЖЬ, ИСТИНА. из ячеек D15ищет самое маленькоеНажмите в конце не им стать). Для
- нашей таблицы суммируются отображается цена, выбранная этом аргументы ПОИСКПОЗ наименьшее значение вreference подсчета суммы последнего
- Новгород»,$B$2:$B$33,0),1)& «, ДатаОси их к собственнымРезультат логическим значением) или
- чтобы номера найденных Если и D16, то значение, которое больше Enter, а сочетание тех, кто понимает, (в нашем примере на основании трех закончились.
- созданном массиве, а(ссылка), из которой столбца в именованном
Ловушки INDEX (ИНДЕКС)
выставления счета: «Подшипники данным, то некоторые=ПОИСКПОЗ(39;B2:B5,1;0) ссылкой на ячейку, позиций отображались втип_сопоставления формула преобразится в или равно заданному.Ctrl+Shift+Enter рекламировать ее не в результате мы аргументов.
Пример 1: Находим сумму продаж для выбранного месяца
Номер столбца. Опять жеMATCH нужно вернуть результат. диапазоне; & ТЕКСТ(ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Нижний Новгород»,$B$2:$B$33,0),3),»m/d/yy»)Болты образцы данных. НекоторыеТак как точного соответствия содержащую такое значение. первых ячейках (см.опущен, то предполагается,
более компактный и
Требуется сортировка в
, чтобы ввести формулу нужно - получаем «3» тоЭтот пример должен был воспользуемся ПОИСКПОЗ. Искомым(ПОИСКПОЗ) на базеЕсли аргументвместе с3293
4
пользователи Excel, такие
Пример 2: Получаем ссылку на определенную строку, столбец или область
нет, возвращается позицияПросматриваемый_массив файл примера). что он равен понятный вид: порядке убывания. не как обычную, без нее не есть номер столбца, показать, как работает значением будет ячейка этого значения возвращаетarea_numMATCHКазань4
как с помощью
ближайшего меньшего элемента
Обязательный аргумент. Диапазон ячеек,1. Произведем поиск позиции 1.=ИНДЕКС(B2:E13;D15;D16)В одиночку функция а как формулу обходится ни один
в котором находится
функция ИНДЕКС, а
E14, где указано номер строки нужного(номер_области) не указан,(ПОИСКПОЗ) – для25.04.129 функции ВПР и
(38) в диапазоне
в которых производится
в НЕ сортированномЕслиКак видите, все достаточноПОИСКПОЗ массива. сложный расчет в
искомое выражение). Остальное
также какие возможности
Пример 3: Создаём динамический диапазон, основанный на подсчете
наименование параметра, который месяца. то будет выбрана поиска имени участника,=»Москва = «&ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Москва»,$B$2:$B$33,0),1)& «,5 ГПР; другие пользователи B2:B5. поиск.
списке числовых значений
тип_сопоставления
просто!, как правило, неКак это на самом Excel. Есть, однако, просто выбирает и предоставляет использование вложения мы ищем (ТОВАР).Эта формула должна быть 1 область.
Пример 4: Сортируем столбец с текстовыми данными в алфавитном порядке
угадавшего ближайшее значение. Дата выставления счета:7 предпочитают с помощью2Тип_сопоставления. (диапазонравен -1, тоНа этой прекрасной ноте представляет особой ценности, деле работает: одна проблема: эта показывает значения из функций и массивов. Просматриваемый массив: шапка введена в ячейкуЕсли аргументИтак, давайте обратимся к » & ТЕКСТ(ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Москва»,$B$2:$B$33,0),3),»m/d/yy»)10 функций индекс и=ПОИСКПОЗ(41;B2:B5;0) Необязательный аргумент. Число -1,
B8:B14 функция ПОИСКПОЗ() находит мы закончим. В поэтому в ExcelФункция ИНДЕКС выдает из функция умеет искать строки заголовка, чтоФункция ИНДЕКС предназначена для
с наименованиями, потому
E4, как формула
row_num теоретическим сведениям и
3331
6
ПОИСКПОЗ вместе. Попробуйте
office-guru.ru
Функции ИНДЕКС и ПОИСКПОЗ в Excel и примеры их использования
Позиция значения 41 в 0 или 1.) наименьшее значение, которое этом уроке Вы ее очень часто диапазона цен C2:C161 данные только по осуществляется при помощи
создания массивов значений что искать система массива, нажатием(номер_строки) или практическим примерам поКазань8 каждый из методов диапазоне B2:B5 АргументСтолбец Позиция приведен для больше либо равно познакомились еще с используют вместе с содержимое N-ой ячейки совпадению одного параметра.
Пример использования функций ИНДЕКС и ПОИСКПОЗ
функции ИНДЕКС. в Excel и будет по словуCtrl+Shift+Entercolumn_num функции27.04.12
11 и посмотрите, какие4тип_сопоставления наглядности и не чем двумя полезными функциями функцией по порядку. При А если уОтложим в сторону итерационные чаще всего используется
ТОВАР. Тип сопоставления:. А затем скопирована(номер_столбца) равен нулю,INDEX3350Формула из них подходящий=ПОИСКПОЗ(40;B2:B5;-1)указывает, каким образом влияет на вычисления.искомое_значениеПросматриваемый_массив Microsoft Excel –ИНДЕКС этом порядковый номер нас их несколько? вычисления и сосредоточимся в паре с 0. с остальные ячейки то функция возвратит(ИНДЕКС). Если уКазань
Описание вариант.Возвращает сообщение об ошибке, в Microsoft ExcelНайдем позицию значения 30должен быть упорядоченПОИСКПОЗ.
нужной ячейки намПредположим, что у нас на поиске решения, другими функциями. РассмотримСинтаксис функции ИНДЕКС закончен. диапазона E4:E9.
ссылку на весь Вас есть дополнительная28.04.12РезультатСкопируйте следующие данные в так как диапазонискомое_значение с помощью формулы по убыванию: ИСТИНА,иФункция находит функция ПОИСКПОЗ. есть база данных
основанного на формулах на конкретных примерах
Как в итоге=INDEX($C$4:$C$9,MATCH(SMALL(COUNTIF($C$4:$C$9,» ROW(E4)-ROW(E$3)),COUNTIF($C$4:$C$9,» столбец или всю информация или примеры,3390=ГПР(«Оси»;A1:C4;2;ИСТИНА)
пустой лист. B2:B5 упорядочен несопоставляется со значениями =ПОИСКПОЗ(30;B8:B14;0) ЛОЖЬ, Z-A, …,
ИНДЕКСИНДЕКС Она ищет связку по ценам товаров массива. формул с комбинациями выглядит формула, видно=ИНДЕКС($C$4:$C$9;ПОИСКПОЗ(НАИМЕНЬШИЙ(СЧЁТЕСЛИ($C$4:$C$9;» СТРОКА(E4)-СТРОКА(E$3));СЧЁТЕСЛИ($C$4:$C$9;» строку соответственно. пожалуйста, делитесь имиКазань
Поиск слова «Оси» вСовет: по убыванию. в аргументеФормула ищет 2, 1, 0,, разобрали возможности навозвращает содержимое ячейки, названия товара и за разные месяцы:Пример 2. Вместо формулы функции ИНДЕКС и
на скриншоте выше.Урок подготовлен для ВасРезультат – это ссылка, в комментариях.01.05.12 строке 1 и Прежде чем вставлять#Н/Дпросматриваемый_массивточное -1, -2, …, простых примерах, а которая находится на
месяца (
Поиск индекса максимального числа массива в Excel
Нужно найти и вытащить массива мы можем других функций для Видим, что артикул командой сайта office-guru.ru которая может бытьФункция3441
возврат значения из данные в Excel,Примечание:. По умолчанию в
значение 30. Если и так далее. также посмотрели их пересечении заданных строкиНектаринЯнварь цену заданного товара использовать формулу, основанную
поиска значений при 3516 действительно уИсточник: http://blog.contextures.com/archives/2011/01/25/30-excel-functions-in-30-days-24-index/ использована другими функциями.INDEXКазань строки 2, находящейся
установите для столбцовМы стараемся как
качестве этого аргумента в списке егоФункция ПОИСКПОЗ() не различает совместное использование. Надеюсь, и столбца. Например,) по очереди во
exceltable.com
Примеры функции ИНДЕКС и ПОИСКПОЗ с несколькими условиями Excel
( на функции СУММПРОИЗВ. определенных условиях. арахиса. Протянем формулуПеревел: Антон АндроновЕсли(ИНДЕКС) возвращает значение02.05.12 в том же A – С можно оперативнее обеспечивать используется значение 1.
Работа функции ИНДЕКС и ПОИСКПОЗ по нескольким условиям
нет, то будет РеГИстры при сопоставлении что данный урок на рисунке ниже всех ячейках склеенногоНектаринПринцип работы в основномНеобходимо выполнить поиск значения на остальные строкиАвтор: Антон Андроновrow_num или ссылку на3517 столбце (столбец A). ширину в 250
вас актуальными справочнымиВ приведенной ниже возвращена ошибка #Н/Д. текстов. Вам пригодился. Оставайтесь формула возвращает значение из двух столбцов) в определенном месяце такой же, как в таблице и и проверим. Теперь,В Excel есть очень(номер_строки) и
значение. Используйте еёКазань4
пикселей и нажмите
Формула из комбинации функций ВЫБОР, ИНДЕКС и ПОИСКПОЗ
материалами на вашем таблице описано, как2. Произведем поиск позицииЕсли функция ПОИСКПОЗ() не с нами и из диапазона A1:C4, диапазона A2:A161&B2:B161 и ( и в первом отобразить заголовок столбца меняя артикул товара, удобная, но почему-тоcolumn_num в сочетании с08.05.12=ГПР(«Подшипники»;A1:C4;3;ЛОЖЬ)
кнопку языке. Эта страница функция находит значения в отсортированном по находит соответствующего значения, успехов в изучении которое находится на выдает порядковый номерЯнварь случае. Мы используем с найденным значением. мы будем видеть, редко используемая функция,(номер_столбца) указывают на другими функциями, такими3124Поиск слова «Подшипники» вПеренос текста
переведена автоматически, поэтому в зависимости от возрастанию списке числовых то возвращается значение Excel. пересечении 3 строки
exceltable.com
Примеры формул с функциями ИНДЕКС и ПОИСКПОЗ СУММПРОИЗВ в Excel
ячейки, где нашла), т.е. получить на здесь просто другую Готовый результат должен кто его купил, которая называется ИНДЕКС. ячейку, не принадлежащую какОрел строке 1 и(вкладка « ее текст может
Поиск значений по столбцам таблицы Excel
аргумента значений (диапазон ошибки #Н/Д.Автор: Антон Андронов и 2 столбца. точное совпадение. По
выходе функцию Excel, и выглядеть следующим образом: сколько и почем. Удобная она потому,
заданному массиву илиMATCH09.04.12 возврат значения изГлавная содержать неточности итип_сопоставленияB31:B37Произведем поиск позиции вФункция ПОИСКПОЗ(), английский вариантСтоит отметить, что номера сути, это первый152
вся формула не
Формула массива или функции ИНДЕКС и СУММПРОИЗВ
Небольшое упражнение, которое показывает, что позволяет выдавать ссылке, функция(ПОИСКПОЗ), чтобы создавать3155 строки 3, находящейся», группа « грамматические ошибки. Для.) НЕ сортированном списке
MATCH(), возвращает позицию строк и столбцов способ, но ключевой, но автоматически, т.е. должна подтверждаться как как в ExcelеФункция ИНДЕКС также помогает значение из диапазона
- INDEX
- могучие формулы.Орел в том жеВыравнивание нас важно, чтобыТип_сопоставленияСортированные списки позволяют искать текстовых значений (диапазон значения в диапазоне задаются относительно верхней
столбец создается виртуально с помощью формулы.
формула массива. Однако можно добиться одинакового
выделить из массива
по заданным номерам(ИНДЕКС) сообщит обФункция11.04.12 столбце (столбец B).»). эта статья былаПоведение не только точныеB7:B13 ячеек. Например, если левой ячейки диапазона. прямо внутри формулы, ВПР в чистом на этот раз результата при использовании максимальное число. Рассмотрим строки и столбца. ошибкеINDEX31777Плотность вам полезна. Просим1 или опущен
значения (их позицию),
) в ячейке Например, если ту а не в виде тут не мы создаём в совершенно разных функций. тот же самыйНа практике ИНДЕКС редко#REF!(ИНДЕКС) может возвратитьОрел=ГПР(«П»;A1:C4;3;ИСТИНА)Вязкость вас уделить паруФункция но и позициюСтолбец Позиция приведен для
А10 же таблицу расположить ячейках листа. поможет, но есть памяти компьютера столькоИтак, у нас есть пример. Попробуем определить используется, скорее всего,(#ССЫЛКА!).
значение или ссылку
19.04.12Поиск буквы «П» вТемпература секунд и сообщить,ПОИСКПОЗ ближайшего значения. Например, наглядности и несодержится значение «яблоки», в другом диапазоне,Плюсы несколько других способов же массивов значений, таблица, и мы
максимальные значения купленного из-за того, чтоВведите номер строки, и на значение. Вы3357
Пример формулы поиска значений с функциями ИНДЕКС и ПОИСКПОЗ
строке 1 и0,457 помогла ли онанаходит наибольшее значение,
в списке на влияет на вычисления. то формула =ПОИСКПОЗ то формула вернет: Не нужен отдельный решить эту задачу. сколько столбов в бы хотели, чтобы количества товара, цены эти самые номер функция можете использовать ее,Орел возврат значения из3,55 вам, с помощью которое меньше или картинке ниже нетФормула для поиска позиции («яблоки»;A9:A20;0) вернет 2, тот же результат: столбец, работает иЭто самый очевидный и нашей таблице. Каждый формула Excel отвечала и суммы.
Пример формулы функций ИНДЕКС и НЕ
строки и столбцаINDEX чтобы:
28.04.12 строки 3, находящейся500 кнопок внизу страницы. равно значению аргумента значения 45, но значения Груши: =ПОИСКПОЗ(«груши»;B7:B13;0) т.е. искомое значение
Если массив содержит только с числами и простой (хотя и раз, в таком на вопрос, вНачнем с количества. В приходится вводить каждый(ИНДЕКС) возвратит суммуНайти сумму продаж для3492
в том же0,525 Для удобства такжеискомое_значение
можно найти позицию
Формула находит первое значение «яблоки» содержится во одну строку или с текстом. не самый удобный) единичном массиве нули каком столбце (или любой ячейке под раз. Ведь искомое продаж из этой выбранного месяца.Орел столбце. Так как3,25 приводим ссылку на. наибольшего значения, которое сверху и выводит второй ячейке диапазона один столбец, т.е.Минусы способ. Поскольку штатная находятся везде, где строке, однако в этим столбцом пишем значение не всегда строки. Здесь указанПолучить ссылку на выбранную06.05.12 «П» найти не400 оригинал (на английскомПросматриваемый_массив меньше либо равно, его позицию в
exceltable.com
Функции ИНДЕКС и ПОИСКПОЗ с данными на разных листах (Формулы/Formulas)
A9:A20А9 является вектором, то: Ощутимо тормозит на функция искомое значение не нашем примере я =ИНДЕКС. нужно выдавать по
номер месяца строку, столбец или3316 удалось, возвращается ближайшее0,606 языке) .
должен быть упорядочен чем искомое значение, диапазоне, второе значение- первая ячейка
excelworld.ru
Поиск и подстановка по нескольким условиям
Постановка задачи
второй аргумент функции больших таблицах (какВПР (VLOOKUP) было найдено. Однако использую столбец), находитсяПервым аргументом у нас порядку. Но тогда4 область.Челябинск из меньших значений:2,93Предположим, что у вас по возрастанию: …, т.е. позицию значения Груши учтено не (предполагается, что вИНДЕКС и все формулыумеет искать только здесь вместо использования искомое слово. Думаю, будет не просто к функции ИНДЕКС, поэтому результатом будет
Создать динамический диапазон, основанный25.04.12 «Оси» (в столбце300
есть списка номеров -2, -1, 0, 40. будет. ней не содержитсяуказывает номер значения массива, впрочем), особенно по одному столбцу, функции СТОЛБЕЦ, мы что анимация, расположенная массив, а максимальное на помощь приходит сумма продаж за на подсчете.3346 A).0,675
Способ 1. Дополнительный столбец с ключом поиска
офисов расположение и 1, 2, …,Это можно сделать сЧтобы найти номер строки, значение «яблоки»), в этом векторе. если указывать диапазоны а не по перемножаем каждую такую выше, полностью показывает число из массива. функция ПОИСКПОЗ, которая
апрель (Apr).Отсортировать столбец с текстовымиЧелябинск52,75 вам нужно знать, A-Z, ЛОЖЬ, ИСТИНА. помощью формулы =ПОИСКПОЗ(45;B31:B37;1) а не позиции
А10 При этом третий «с запасом» или нескольким, то нам временную таблицу на задачу. Поэтому дополнительно используем как раз таки=INDEX($C$2:$C$8,F2)
данными в алфавитном28.04.12=ГПР(«Болты»;A1:C4;4)250
какие сотрудники являются0Обратите внимание, что тип в искомом диапазоне,- вторая, аргумент указывать необязательно. сразу целые столбцы нужно из нескольких введённый вручную номер команду МАКС и позволяет найти нужную
Способ 2. Функция СУММЕСЛИМН
=ИНДЕКС($C$2:$C$8;F2) порядке.3372Поиск слова «Болты» в0,746 в каждой программыФункция сопоставления =1 (третий можно записать следующуюА11Например, следующая формула возвращает (т.е. вместо A2:A161 сделать один! столбца.Пример 1. Первая идя выделяем соответствующий массив. позицию.Чтобы сделать эту формулуФункцияЧелябинск строке 1 и
2,57 office. Электронную таблицуПОИСКПОЗ аргумент функции). формулу: =ПОИСКПОЗ(«груши»;B7:B13;0)+СТРОКА($B$6)- третья и
пятое значение из вводить A:A иДобавим рядом с нашейПример 3. Третий пример для решения задачВ принципе, нам большеРассмотрим интересный пример, который более гибкой, Вы
Способ 3. Формула массива
INDEX01.05.12 возврат значения из200 огромный, поэтому вынаходит первое значение,3. Поиск позиции вЕсли искомое значение не т.д. (подсчет позиции диапазона A1:A12 (вертикальный т.д.) Многим непривычны таблицей еще один – это также типа – это не нужны никакие
- позволит понять прелесть можете использовать функцию(ИНДЕКС) имеет две
- 3414 строки 4, находящейся0,835
- думаете, что он равное аргументу списке отсортированном по обнаружено в списке, производится от верхней вектор): формулы массива в
столбец, где склеим формула массива.
при помощи какого-то аргументы, но требуется функции ИНДЕКС иMATCH синтаксические формы –Челябинск в том же2,38 является довольно сложнойискомое_значение убыванию выполняется аналогично, то будет возвращено ячейки).Данная формула возвращает третье принципе (тогда вам название товара иВсе точно так же, вида цикла поочерёдно ввести номер строки неоценимую помощь ПОИСКПОЗ.(ПОИСКПОЗ) для определения массива и ссылочная.01.05.12 столбце (столбец C).
150 задачи. Это задача несложная. но с типом значение ошибки #Н/Д.
Функция ПОИСКПОЗ() возвращает позицию значение из диапазона сюда). месяц в единое как и в прочитать каждую ячейку и столбца. В Имеем сводную таблицу, номера строки по Форма массива возвращает3451110,946 делать с помощью
planetaexcel.ru
Просматриваемый_массив
Поиск значений в списке данных
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).
Предположим, вам нужно найти расширение телефона сотрудника с помощью его номера, а также правильно оценить коэффициент Комиссии для суммы продажи. Вы ищете данные, чтобы быстро и эффективно находить определенные данные в списке и автоматически проверять, правильно ли используются данные. После того как вы просмотрит данные, вы можете выполнить вычисления и отобразить результаты, указав возвращаемые значения. Есть несколько способов поиска значений в списке данных и отображения результатов.
В этой статье
Поиск значений в списке по вертикали по точному совпадению
Для выполнения этой задачи можно использовать функцию ВПР или сочетание функций индекс и ПОИСКПОЗ.
Примеры использования функции ВПР
Дополнительные сведения можно найти в разделе функция ВПР.
Примеры ИНДЕКСов и СОВПАДЕНИй
=ИНДЕКС(нужно вернуть значение из C2:C10, которое будет соответствовать ПОИСКПОЗ(первое значение «Капуста» в массиве B2:B10))
Формула ищет первое значение в ячейке C2: C10, соответствующее капусты (в B7), и возвращает значение в C7 (100) — первое значение, соответствующее капусты.
Дополнительные сведения можно найти в разделе Функция индекс и функция ПОИСКПОЗ.
Поиск значений в списке по вертикали по приблизительному совпадению
Для этого используйте функцию ВПР.
Важно: Убедитесь, что значения в первой строке отсортированы в возрастающем порядке.
В приведенном выше примере функция ВПР ищет имя учащегося, у которого есть 6 тардиес в диапазоне A2: B7. В таблице нет записи для 6 тардиес, поэтому функция ВПР ищет следующее самое высокое соответствие ниже 6 и находит значение 5, связанное с первым именем Дэйв, и, следовательно, возвращает Дэйв.
Дополнительные сведения можно найти в разделе функция ВПР.
Поиск значений по вертикали в списке неизвестного размера с точным соответствием
Для выполнения этой задачи используйте функции СМЕЩ и ПОИСКПОЗ.
Примечание: Этот подход используется, если данные находятся в диапазоне внешних данных, который вы обновляете каждый день. Вы знаете, что в столбце B есть Цена, но вы не знаете, сколько строк данных возвращает сервер, а первый столбец не отсортирован по алфавиту.
C1 — это верхняя левая ячейка диапазона (также называемая начальной ячейкой).
Match («апельсины»; C2: C7; 0) ищет оранжевый цвет в диапазоне C2: C7. Не следует включать начальную ячейку в диапазон.
1 — количество столбцов справа от начальной ячейки, для которых должно быть возвращено возвращаемое значение. В нашем примере возвращаемое значение находится в столбце D, Sales.
Поиск значений в списке по горизонтали по точному совпадению
Для выполнения этой задачи используется функция ГПР. Ниже приведен пример.
Функция ГПР выполняет поиск по столбцу Sales и возвращает значение из строки 5 в указанном диапазоне.
Дополнительные сведения можно найти в разделе функции ГПР.
Поиск значений в списке по горизонтали с использованием приблизительного совпадения
Для выполнения этой задачи используется функция ГПР.
Важно: Убедитесь, что значения в первой строке отсортированы в возрастающем порядке.
В приведенном выше примере функция ГПР ищет значение 11000 в строке 3 в указанном диапазоне. Он не находит 11000 и, следовательно, ищет следующее наибольшее значение, которое меньше 1100 и возвращает число 10543.
Дополнительные сведения можно найти в разделе функции ГПР.
Создание формулы подстановки с помощью мастера подстановок (толькоExcel 2007 )
Примечание: Надстройка «Мастер подстановок» прекращена в Excel 2010. Эти функциональные возможности заменены мастером функций и доступными функциями поиска и работы со ссылками (ссылками).
В Excel 2007 мастер подстановок создает формулу подстановки на основе данных листа, имеющих заголовки строк и столбцов. Мастер подстановок помогает находить другие значения в строке, когда вы знаете значение в одном столбце, и наоборот. Мастер подстановок использует индекс и СОВПАДЕНИе в создаваемых формулах.
Щелкните ячейку в диапазоне.
На вкладке формулы в группе решения нажмите кнопку Подстановка .
Если команда подстановка недоступна, необходимо загрузить мастер подстановок надстройка программу.
Загрузка программы-надстройки «Мастер подстановок»
Нажмите кнопку Microsoft Office , щелкните Параметры Excelи выберите категорию надстройки.
В поле Управление выберите элемент Надстройки Excel и нажмите кнопку Перейти.
В диалоговом окне надстройки установите флажок Мастер подстановоки нажмите кнопку ОК.
Выборка значений из таблицы Excel по условию
Если приходиться работать с большими таблицами определенно найдете в них дублирующийся суммы разбросаны вдоль целого столбца. В тоже время у вас может возникнуть необходимость выбрать данные из таблицы с первым наименьшим числовым значением, которое имеет свои дубликаты. Нужна автоматическая выборка данных по условию. В Excel для этой цели можно успешно использовать формулу в массиве.
Как сделать выборку в Excel по условию
Чтобы определить соответствующие значение первому наименьшему числу нужна выборка из таблицы по условию. Допустим мы хотим узнать первый самый дешевый товар на рынке из данного прайса:
Автоматическую выборку реализует нам формула, которая будет обладать следующей структурой:
В месте «диапазон_данных_для_выборки» следует указать область значений A6:A18 для выборки из таблицы (например, текстовых), из которых функция ИНДЕКС выберет одно результирующие значение. Аргумент «диапазон» означает область ячеек с числовыми значениями, из которых следует выбрать первое наименьшее число. В аргументе «заголовок_столбца» для второй функции СТРОКА, следует указать ссылку на ячейку с заголовком столбца, который содержит диапазон числовых значений.
Естественно эту формулу следует выполнять в массиве. Поэтому для подтверждения ее ввода следует нажимать не просто клавишу Enter, а целую комбинацию клавиш CTRL+SHIFT+Enter. Если все сделано правильно в строке формул появятся фигурные скобки.
Обратите внимание ниже на рисунок, где в ячейку B3 была введена данная формула в массиве:
Выборка соответственного значения с первым наименьшим числом:
С такой формулой нам удалось выбрать минимальное значение относительно чисел. Далее разберем принцип действия формулы и пошагово проанализируем весь порядок всех вычислений.
Как работает выборка по условию
Ключевую роль здесь играет функция ИНДЕКС. Ее номинальное задание – это выбирать из исходной таблицы (указывается в первом аргументе – A6:A18) значения соответственные определенным числам. ИНДЕКС работает с учетом критериев определённых во втором (номер строки внутри таблицы) и третьем (номер столбца в таблице) аргументах. Так как наша исходная таблица A6:A18 имеет только 1 столбец, то третий аргумент в функции ИНДЕКС мы не указываем.
Чтобы вычислить номер строки таблицы напротив наименьшего числа в смежном диапазоне B6:B18 и использовать его в качестве значения для второго аргумента, применяется несколько вычислительных функций.
Функция ЕСЛИ позволяет выбрать значение из списка по условию. В ее первом аргументе указано где проверяется каждая ячейка в диапазоне B6:B18 на наличие наименьшего числового значения: ЕСЛИB6:B18=МИНB6:B18. Таким способом в памяти программы создается массив из логических значений ИСТИНА и ЛОЖЬ. В нашем случаи 3 элемента массива будут содержат значение ИСТИНА, так как минимальное значение 8 содержит еще 2 дубликата в столбце B6:B18.
Следующий шаг – это определение в каких именно строках диапазона находится каждое минимальное значение. Это нам необходимо по причине определения именно первого наименьшего значения. Реализовывается данная задача с помощью функции СТРОКА, она заполняет элементы массива в памяти программы номерами строк листа. Но сначала от всех этих номеров вычитается номер на против первой строки таблицы – B5, то есть число 5. Это делается потому, что функция ИНДЕКС работает с номерами внутри таблицы, а не с номерами рабочего листа Excel. В тоже время функция СТРОКА умеет возвращать только номера строк листа. Чтобы не получилось смещение необходимо сопоставить порядок номеров строк листа и таблицы с помощи вычитанием разницы. Например, если таблица находится на 5-ой строке листа значит каждая строка таблицы будет на 5 меньше чем соответственная строка листа.
После того как будут отобраны все минимальные значения и сопоставлены все номера строк таблицы функция МИН выберет наименьший номер строки. Эта же строка будет содержать первое наименьшее число, которое встречается в столбце B6:B18. На основании этого номера строки функции ИНДЕКС выберет соответствующее значение из таблицы A6:A18. В итоге формула возвращает это значение в ячейку B3 в качестве результата вычисления.
Как выбрать значение с наибольшим числом в Excel
Поняв принцип действия формулы, теперь можно легко ее модифицировать и настраивать под другие условия. Например, формулу можно изменить так, чтобы выбрать первое максимальное значение в Excel:
Если необходимо изменить условия формулы так, чтобы можно было в Excel выбрать первое максимальное, но меньше чем 70:
=70;»»;B6:B18));СТРОКА(B6:B18)-СТРОКА(B5);»»)))’ class=’formula’>
Как в Excel выбрать первое минимальное значение кроме нуля:
Как легко заметить, эти формулы отличаются между собой только функциями МИН и МАКС и их аргументами.
Теперь Вас ни что не ограничивает. Один раз разобравшись с принципами действия формул в массиве Вы сможете легко модифицировать их под множество условий и быстро решать много вычислительных задач.
Вывод отобранных значений в отдельный диапазон в Excel. Бесплатные примеры и статьи.
Пять последних значений в MS EXCEL
Найдем, формулу возвращающую ссылку на диапазон, содержащий 5 последних значений. Если столбец со значениями постоянно заполняется, то эта задача перестает быть тривиальной.
Удаляем в MS EXCEL пропуски в списке (формулы)
Если список значений содержит пропуски (пустые ячейки), то это может существенно затруднить его дальнейший анализ. С помощью сортировки уберем пустые ячейки из списка, сформировав формулами список в соседнем столбце.
Запрос на выборку данных (формулы) в MS EXCEL
Суть запроса на выборку – выбрать из исходной таблицы строки, удовлетворяющие определенным критериям (подобно применению стандартного Фильтра). Произведем отбор значений из исходной таблицы с помощью формул массива. В отличие от применения Фильтра (CTRL+SHIFT+L или Данные/ Сортировка и фильтр/ Фильтр ) отобранные строки будут помещены в отдельную таблицу.
Отбор уникальных значений (убираем повторы из списка) в MS EXCEL
Имея список с повторяющимися значениями, создадим список, состоящий только из уникальных значений. При добавлении новых значений в исходный список, список уникальных значений должен автоматически обновляться.
Вывод итогов столбцов по строкам в MS EXCEL
Пусть имеется 5 столбцов с данными. В каждом столбце по 10 чисел, необходимо найти сумму чисел в каждом столбце. Обычно итоговое значение выводится внизу столбца или над его заголовком, поэтому все итоговые значения располагаются в одной строке. Но когда столбцов слишком много, то удобнее итоговые значения столбцов выводить в один отдельный столбец, а не располагать их под данными. Напишем формулу, которая помогает сделать это преобразование.
Отбор неповторяющихся значений со значениями из соседнего столбца в MS EXCEL
Имея список с повторяющимися текстовыми значениями, создадим список, состоящий только из неповторяющихся значений. А из столбца соседнего с исходным, выведем соответствующие им числовые значения.
Отбор неповторяющихся значений в MS EXCEL
Имея список с повторяющимися значениями, создадим список, состоящий только из значений, которые не повторяются.
Отбор повторяющихся значений в MS EXCEL
Из исходной таблицы с повторяющимися значениями отберем только те значения, которые имеют повторы. Теперь при добавлении новых значений в исходный список, новый список будет автоматически содержать только те значения, которые повторяются.
Динамическое разнесение данных по столбцам
Пусть имеется таблица, состоящая из двух столбцов: наименование организации и ее тип (юридическое лицо, индивидуальный предприниматель, физическое лицо). Необходимо разнести организации по разным столбцам в зависимости от типа: Юрлица, ИП и ФЛ должны быть каждый в своем отдельном столбце.При добавлении новых строк в исходную таблицу организации должны динамически попадать в нужный столбец.
Отбор уникальных значений в MS EXCEL с условиями
Продолжим идеи, изложенные в статье Отбор уникальных значений в MS EXCEL. Сначала отберем из таблицы только те строки, которые удовлетворяют заданным условиям, затем из этих строк выберем только уникальные значения из первого столбца. При добавлении новых строк в таблицу, список уникальных значений будет автоматически обновляться.
Запрос на выборку данных в MS EXCEL (на основе элементов управления формы)
Суть запроса на выборку – выбрать из исходной таблицы строки, удовлетворяющие определенным критериям (подобно применению фильтра). В отличие от фильтра отобранные строки будут помещены в отдельную таблицу.
Отбор неповторяющихся значений из двух диапазонов в MS EXCEL
Имея два списка с однотипными повторяющимися значениями, создадим список, состоящий только из неповторяющихся значений.
Отбор уникальных значений из двух диапазонов в MS EXCEL
Имея два списка с однотипными повторяющимися значениями, создадим из них список, содержащий только уникальные значения.
Поиск ТЕКСТовых значений в MS EXCEL с выводом их в отдельный список. Часть2. Подстановочные знаки
Найдем текстовые значения, удовлетворяющие заданному пользователем критерию. Критерии заданы с использованием подстановочных знаков. Поиск будем осуществлять в диапазоне с повторяющимися значениями. При наличии повторов, можно ожидать, что критерию будет соответствовать несколько значений. Для их вывода в отдельный диапазон удобно использовать формулы массива.
Поиск ТЕКСТовых значений в MS EXCEL с выводом их в отдельный список. Часть1. Обычный поиск
Найдем текстовые значения, удовлетворяющие заданному пользователем критерию. Поиск будем осуществлять в диапазоне с повторяющимися значениями. При наличии повторов, можно ожидать, что критерию будет соответствовать несколько значений. Для их вывода в отдельный диапазон удобно использовать формулы массива.
Поиск ТЕКСТовых значений в MS EXCEL с выводом их в отдельный список. Часть3. Поиск с учетом РЕГИСТРА
Найдем текстовые значения, удовлетворяющие заданному пользователем критерию с учетом РЕгиСТРА. Поиск будем осуществлять в диапазоне с повторяющимися значениями. При наличии повторов, можно ожидать, что критерию будет соответствовать несколько значений. Для их вывода в отдельный диапазон удобно использовать формулы массива.
Отбор уникальных значений с сортировкой в MS EXCEL
Из исходной таблицы отберем только уникальные значения и выведем их в отдельный диапазон с сортировкой по возрастанию. Отбор и сортировку сделаем с помощью одной формулой массива. Формула работает как для текстовых (сортировка от А до Я), так и для числовых значений (сортировка от мин до макс).
Поиск ЧИСЛОвых значений и вывод соответствующих значений в отдельный список в MS EXCEL
Найдем числовые значения, равные заданному пользователем критерию. Поиск будем осуществлять в диапазоне с повторяющимися значениями. При наличии повторов, можно ожидать, что критерию будет соответствовать несколько значений. Для их вывода в отдельный диапазон удобно использовать формулы массива.
Поиск нескольких значений с максимальной длиной строки в MS EXCEL
Найдем в исходном списке текстовые значения, которые имеют максимальную длину строки, и выведем их в отдельный диапазон.
Отбор повторяющихся значений (дубликатов) со значениями из соседнего столбца в MS EXCEL
Имея список с повторяющимися текстовыми значениями, создадим список, состоящий только из дубликатов. А из соседнего столбца, выведем соответствующие числовые значения.
ВПР с возвратом всех значений
Все, кто сталкивался с функцией ВПР знают, что она умеет возвращать исключительно одно значений — первое найденное. Но что делать, когда надо видеть все значения? К примеру имеется такая таблица:
И из этой таблицы необходимо получить фамилии(поле ФИО) всех сотрудников из отдела Сбыта:
Тут два варианта:
-
Вариант 1: все значения необходимо получить в одной ячейке через разделитель(скажем запятую). Такое возможно только через использование VBA(на момент написания статьи). Такую функцию я написал давно: Как сцепить несколько значений в одну ячейку по критерию? СцепитьЕсли
. В результате получим что-то вроде: Александров Иван,Александров Петр,Андреев Алексей .
Здесь надо сразу оговориться — при помощи непосредственно ВПР (VLookup) это сделать ну никак не получится. Но это можно сделать при помощи её родственников — связки ИНДЕКС(ПОИСКПОЗ) (INDEX(MATCH)) . Плюс еще пара функций. В сборе функция выглядит так:
=ИНДЕКС( $A$12:$G$111 ;НАИМЕНЬШИЙ(ЕСЛИ( $I$12 = $C$12:$C$111 ;СТРОКА( $C$12:$C$111 )-11);СТРОКА( A1 ));1)
=INDEX($A$12:$G$111;SMALL(IF($I$12=$C$12:$C$111;ROW($C$12:$C$111)-11);ROW(A1));1)
где:
- $A$12:$G$111 — таблица с ФИО и всеми данными
- $I$12 — ячейка с названием отдела
- $C$12:$C$111 — столбец с названиями отделов в таблице $A$12:$G$111
А теперь начнем разбирать формулу по кусочкам
Предлагаю сразу скачать пример файла с данными и формулами — тогда понять будет проще:
Tips_All_VlookupAllVals.xls (84,5 KiB, 8 651 скачиваний)
- Первое и самое главное — формула вводится в ячейку как формула массива. Это значит, что для приложенного к статье примера необходимо будет выделить ячейку J12 , записать в неё формулу и завершить ввод нажатием сразу трех клавиш: Ctrl+Shift+Enter. После этого скопировать ячейку, выделить диапазон J13:J39 и вставить туда скопированную ячейку.
- За отбор ФИО указанного отдела отвечает этот кусок: ЕСЛИ( $I$12 = $C$12:$C$111 ;СТРОКА( $C$12:$C$111 )-11)
IF($I$12=$C$12:$C$111;ROW($C$12:$C$111)-11)
Как видно здесь идет сравнение отдела, записанного в $I$12 со всеми отделами в таблице: $C$12:$C$111 . Если отдел совпадает, то функция возвращает номер строки СТРОКА( $C$12:$C$111 ) . Но нам нужен не номер строки на листе, а номер строки внутри таблицы(потому что в формулу ИНДЕКС (INDEX) у нас передан диапазон $A$12:$G$111 и если передать в его второй аргумент( номер_строки ) 14, то получим не Александров Иван , а Андреев Олег ). Поэтому отнимаем от номера строки 11, чтобы было возвращено число 3(а не 14). Т.к. формула записана формулой массива — ЕСЛИ (IF) возвращает массив из номеров строк и логического ЛОЖЬ (FALSE) (если отдел не совпадает):
шаг 1: ЕСЛИ(<ЛОЖЬ:ЛОЖЬ: ИСТИНА :ЛОЖЬ:ЛОЖЬ: ИСТИНА :ЛОЖЬ:ЛОЖЬ:ЛОЖЬ>;<12:13: 14 :15:16: 17 :18:19:20>-11)
шаг 2: ЕСЛИ(<ЛОЖЬ:ЛОЖЬ: ИСТИНА :ЛОЖЬ:ЛОЖЬ: ИСТИНА :ЛОЖЬ:ЛОЖЬ:ЛОЖЬ>;<1:2: 3 :4:5: 6 :7:8:9>)
шаг 3: - Т.к. ЕСЛИ (IF) в данном случае возвращает массив значений, включая ненужные нам ЛОЖЬ (FALSE) — применяем НАИМЕНЬШИЙ (SMALL) , которая будет брать только числа (сначала 3, затем 6 и т.д.), а логические значения ЛОЖЬ (FALSE) будет игнорировать:
НАИМЕНЬШИЙ(<ЛОЖЬ:ЛОЖЬ: 3 :ЛОЖЬ:ЛОЖЬ: 6 :ЛОЖЬ:ЛОЖЬ:ЛОЖЬ>;СТРОКА(A1))
SMALL(<ЛОЖЬ:ЛОЖЬ: 3 :ЛОЖЬ:ЛОЖЬ: 6 :ЛОЖЬ:ЛОЖЬ:ЛОЖЬ>;ROW(A1))
Функция НАИМЕНЬШИЙ (SMALL) отбирает из указанного массива чисел наименьшее. При этом можно отобрать по рангу — первое наименьшее, второе наименьшее, третье наименьшее и т.д.
- с первым аргументом разобрались — это уже отобранные записи, где число — строка в таблице с нужной ФИО и ненужные нам логические ЛОЖЬ (FALSE) .
- второй аргумент СТРОКА(A1) для каждой следующей строки будет меняться. В приложенном примере первая ячейка с формулой — J12 . В ней СТРОКА(A1) равна 1, т.е. НАИМЕНЬШИЙ (SMALL) вернет первое наименьшее из массива чисел — 3 . В ячейке J13 это уже будет СТРОКА(A2) и она равна 2, а значит НАИМЕНЬШИЙ (SMALL) вернет второе наименьшее из массива чисел — 6 . И т.д. Когда все числа закончатся — НАИМЕНЬШИЙ (SMALL) вернет значение ошибки #ЧИСЛО! (#NUM!)
ячейка J12
шаг 1: НАИМЕНЬШИЙ(<ЛОЖЬ:ЛОЖЬ: 3 :ЛОЖЬ:ЛОЖЬ: 6 :ЛОЖЬ:ЛОЖЬ:ЛОЖЬ>;СТРОКА(A1))
шаг 2: НАИМЕНЬШИЙ(<ЛОЖЬ:ЛОЖЬ: 3 :ЛОЖЬ:ЛОЖЬ: 6 :ЛОЖЬ:ЛОЖЬ:ЛОЖЬ>;1)
шаг 3: НАИМЕНЬШИЙ( 3 )
ячейка J13
шаг 1: НАИМЕНЬШИЙ(<ЛОЖЬ:ЛОЖЬ: 3 :ЛОЖЬ:ЛОЖЬ: 6 :ЛОЖЬ:ЛОЖЬ:ЛОЖЬ>;СТРОКА(A2))
шаг 2: НАИМЕНЬШИЙ(<ЛОЖЬ:ЛОЖЬ: 3 :ЛОЖЬ:ЛОЖЬ: 6 :ЛОЖЬ:ЛОЖЬ:ЛОЖЬ>;2)
шаг 3: НАИМЕНЬШИЙ( 6 )
ячейка J12
шаг 1: =ИНДЕКС( $A$12:$G$111 ;НАИМЕНЬШИЙ( 3 );1)
шаг 2: =ИНДЕКС( $A$12:$G$111 ;3;1)
шаг 3: Александров Иван
ячейка J13
шаг 1: =ИНДЕКС( $A$12:$G$111 ;НАИМЕНЬШИЙ( 6 );1)
шаг 2: =ИНДЕКС( $A$12:$G$111 ;6;1)
шаг 3: Александров Петр
И в довершение неплохо бы убрать ошибку в случае, если ни одно значение не соответствует критерию или значений больше, чем ячеек с формулами. Более подробно подобное решение я описывал в этой статье: Как в ячейке с формулой вместо ошибки показать 0
Для всех версий Excel:
=ЕСЛИ(ЕОШ(ИНДЕКС( $A$12:$G$111 ;НАИМЕНЬШИЙ(ЕСЛИ( $I$12 = $C$12:$C$111 ;СТРОКА( $C$12:$C$111 )-11);СТРОКА( A1 ));1));»»;ИНДЕКС( $A$12:$G$111 ;НАИМЕНЬШИЙ(ЕСЛИ( $I$12 = $C$12:$C$111 ;СТРОКА( $C$12:$C$111 )-11);СТРОКА( A1 ));1))
=IF(ISERR(INDEX($A$12:$G$111;SMALL(IF($I$12=$C$12:$C$111;ROW($C$12:$C$111)-11);ROW(A1));1));»»;INDEX($A$12:$G$111;SMALL(IF($I$12=$C$12:$C$111;ROW($C$12:$C$111)-11);ROW(A1));1))
Для Excel 2007 и выше:
=ЕСЛИОШИБКА(ИНДЕКС( $A$12:$G$111 ;НАИМЕНЬШИЙ(ЕСЛИ( $I$12 = $C$12:$C$111 ;СТРОКА( $C$12:$C$111 )-11);СТРОКА( A1 ));1);»»)
=IFERROR(INDEX($A$12:$G$111;SMALL(IF($I$12=$C$12:$C$111;ROW($C$12:$C$111)-11);ROW(A1));1);»»)
Плюс к этому в приложенном к статье файле я привел формулу, которая возвращает список всех сотрудников выбранного отдела без повторений и формулу с возможностью просто поменять заголовок в результирующем столбце(в файле это столбец K, ячейка K11 ) на любой из исходной таблицы и данные будут отображены из этого столбца.
Например, если вместо столбца ФИО записать в K11 Адрес — будут отображены все адреса сотрудников выбранного отдела. Если записать Телефон — все телефоны сотрудников выбранного отдела.
Tips_All_VlookupAllVals.xls (84,5 KiB, 8 651 скачиваний)
Статья помогла? Поделись ссылкой с друзьями!
Поиск и подстановка по нескольким условиям
Постановка задачи
Если вы продвинутый пользователь Microsoft Excel, то должны быть знакомы с функцией поиска и подстановки ВПР или VLOOKUP (если еще нет, то сначала почитайте эту статью, чтобы им стать). Для тех, кто понимает, рекламировать ее не нужно 🙂 — без нее не обходится ни один сложный расчет в Excel. Есть, однако, одна проблема: эта функция умеет искать данные только по совпадению одного параметра. А если у нас их несколько?
Предположим, что у нас есть база данных по ценам товаров за разные месяцы:
Нужно найти и вытащить цену заданного товара (Нектарин) в определенном месяце (Январь), т.е. получить на выходе152, но автоматически, т.е. с помощью формулы. ВПР в чистом виде тут не поможет, но есть несколько других способов решить эту задачу.
Способ 1. Дополнительный столбец с ключом поиска
Это самый очевидный и простой (хотя и не самый удобный) способ. Поскольку штатная функция ВПР (VLOOKUP) умеет искать только по одному столбцу, а не по нескольким, то нам нужно из нескольких сделать один!
Добавим рядом с нашей таблицей еще один столбец, где склеим название товара и месяц в единое целое с помощью оператора сцепки (&), чтобы получить уникальный столбец-ключ для поиска:
Теперь можно использовать знакомую функцию ВПР (VLOOKUP) для поиска склеенной пары НектаринЯнварь из ячеек H3 и J3 в созданном ключевом столбце:
Плюсы : Простой способ, знакомая функция, работает с любыми данными.
Минусы : Надо делать дополнительный столбец и потом, возможно, еще и прятать его от пользователя. При изменении числа строк в таблице — допротягивать формулу сцепки на новые строки (хотя это можно упростить применением умной таблицы).
Способ 2. Функция СУММЕСЛИМН
Если нужно найти именно число (в нашем случае цена как раз число), то вместо ВПР можно использовать функцию СУММЕСЛИМН (SUMIFS) , появившуюся начиная с Excel 2007. По идее, эта функция выбирает и суммирует числовые значения по нескольким (до 127!) условиям. Но если в нашем списке нет повторяющихся товаров внутри одного месяца, то она просто выведет значение цены для заданного товара и месяца:
Плюсы : Не нужен дополнительный столбец, решение легко масштабируется на большее количество условий (до 127), быстро считает.
Минусы : Работает только с числовыми данными на выходе, не применима для поиска текста, не работает в старых версиях Excel (2003 и ранее).
Способ 3. Формула массива
О том, как спользовать связку функций ИНДЕКС (INDEX) и ПОИСКПОЗ (MATCH) в качестве более мощной альтернативы ВПР я уже подробно описывал (с видео). В нашем же случае, можно применить их для поиска по нескольким столбцам в виде формулы массива. Для этого:
- Выделите пустую зеленую ячейку, где должен быть результат.
- Введите в строке формул в нее следующую формулу:
Как это на самом деле работает:
Функция ИНДЕКС выдает из диапазона цен C2:C161 содержимое N-ой ячейки по порядку. При этом порядковый номер нужной ячейки нам находит функция ПОИСКПОЗ. Она ищет связку названия товара и месяца (НектаринЯнварь) по очереди во всех ячейках склеенного из двух столбцов диапазона A2:A161&B2:B161 и выдает порядковый номер ячейки, где нашла точное совпадение. По сути, это первый способ, но ключевой столбец создается виртуально прямо внутри формулы, а не в ячейках листа.
Плюсы : Не нужен отдельный столбец, работает и с числами и с текстом.
Минусы : Ощутимо тормозит на больших таблицах (как и все формулы массива, впрочем), особенно если указывать диапазоны «с запасом» или сразу целые столбцы (т.е. вместо A2:A161 вводить A:A и т.д.) Многим непривычны формулы массива в принципе (тогда вам сюда).