Содержание
- Работа Мастера функций
- Переход в Мастер функций
- Категории элементов в Мастере
- Выбор функции
- Аргументы функции
- Выполнение функции
- Вопросы и ответы
Функции в программе Excel позволяют выполнять различные, довольно сложные действия вычислительного характера буквально в несколько кликов. Ещё больше упрощает работу с ними такой удобный инструмент, как «Мастер функций». Давайте рассмотрим, как он устроен и что с его помощью можно делать.
Работа Мастера функций
Мастер функций представляет собой инструмент в виде небольшого окошка, в котором все имеющиеся функции в Excel упорядочены по категориям, что делает доступ к ним проще. Также, он предоставляет возможность ввести аргументы формулы через интуитивно понятный графический интерфейс.
Переход в Мастер функций
Мастер функций можно запустить сразу несколькими способами. Но прежде, чем активировать этот инструмент, нужно выделить ту ячейку, в которой будет находиться формула и, следовательно, выводиться результат.
Проще всего перейти в него, нажав на кнопку «Вставить функцию», расположенную слева от строки формул. Этот способ хорош тем, что им воспользоваться можно, находясь в любой вкладке программы.
Кроме того, нужный нам инструмент можно запустить, перейдя во вкладку «Формулы». Затем следует нажать на самую крайнюю слева кнопку на ленте «Вставить функцию». Она располагается в блоке инструментов «Библиотека функций». Это способ хуже предыдущего тем, что если вы не находитесь во вкладке «Формулы», то придется выполнять дополнительные действия.
Можно также кликнуть на любую другую кнопку блока инструментов «Библиотека функций». При этом, в выпадающем меню появится список, в самом низу которого есть пункт «Вставить функцию…». Вот по нему и нужно кликнуть. Но, данный способ является ещё запутаннее предыдущего.
Очень простым способом перехода в режим Мастера является нажатие комбинации горячих клавиш Shift+F3. Этот вариант предусматривает быстрый переход без дополнительных «телодвижений». Главный недостаток его состоит в том, что далеко не каждый пользователь способен удержать у себя в голове все комбинации горячих клавиш. Так что для новичков в освоении Excel этот вариант не подходит.
Категории элементов в Мастере
Какой бы способ активации из вышеуказанных вы не выбрали, в любом случае, после данных действий запускается окно Мастера. В верхней части окна расположено поле поиска. Сюда можно ввести наименование функции и нажать кнопку «Найти», чтобы быстрее отыскать нужный элемент и получить доступ к нему.
Средняя часть окна представляет выпадающий список категорий функций, которые представляет Мастер. Чтобы просмотреть данный перечень, жмем на пиктограмму в виде перевернутого треугольника справа от него. Таким образом открывается полный список доступных категорий. Прокручивать вниз его можно с помощью боковой полосы прокрутки.
Все функции разделены на следующие 12 категорий:
- Текстовые;
- Финансовые;
- Дата и время;
- Ссылки и массивы;
- Статистические;
- Аналитические;
- Работа с базой данных;
- Проверка свойств и значений;
- Логические;
- Инженерные;
- Математические;
- Определенные пользователем;
- Совместимость.
В категории «Определенные пользователем» находятся функции, составленные самим юзером или загруженные из внешних источников. В категории «Совместимость» расположены элементы из старых версий Excel, для которых уже существуют более новые аналоги. Они были собраны в эту группу для поддержки совместимости работы с документами, созданными в старых версиях приложения.
Кроме того, в этом же списке находятся две дополнительные категории: «Полный алфавитный перечень» и «10 недавно использовавшихся». В группе «Полный алфавитный перечень» располагается полный список всех функций в независимости от категории. В группе «10 недавно использовавшихся» находится список десяти последних элементов, к которым пользователь прибегал. Этот перечень постоянно обновляется: использовавшиеся раньше элементы убираются, а новые добавляются.
Выбор функции
Для того, чтобы перейти к окну аргументов, прежде всего необходимо выбрать нужную категорию. В поле «Выберите функцию» следует отметить то наименование, которое требуется для выполнения конкретной задачи. В самой нижней части окна находится подсказка в виде комментария к выделенному элементу. После того, как конкретная функция выбрана, требуется нажать на кнопку «OK».
Аргументы функции
После этого, открывается окно аргументов функции. Главным элементом этого окна являются поля аргументов. У различных функций аргументы отличаются, но принцип работы с ними остается одинаковыми. Их может быть несколько, а может быть и один. В качестве аргументов могут выступать числа, ссылки на ячейки или даже ссылки на целые массивы.
- Если мы работаем с числом, то просто вводим его с клавиатуры в поле, таким же образом, как вбиваем цифры в ячейки листа.
Если же в качестве аргумента выступают ссылки, то их также можно прописать вручную, но намного удобнее поступить иначе.
Установите курсор в поле аргумента. Не закрывая окно Мастера, выделите курсором на листе ячейку или целый диапазон ячеек, которые вам нужно обработать. После этого в поле окна Мастера автоматически заносятся координаты ячейки или диапазона. Если у функции несколько аргументов, то аналогичным образом можно занести данные и в следующее поле.
- После того, как все нужные данные введены, жмем на кнопку «OK», тем самым запуская процесс выполнения задачи.
Выполнение функции
После того, как вы нажали на кнопку «OK» Мастер закрывается и происходит выполнение самой функции. Результат выполнения может быть самый разнообразный. Он зависит от тех задач, которые ставятся перед формулой. Например, функция СУММ, которая была выбрана в качестве примера, производит суммирование всех введенных аргументов и показывает результат в отдельной ячейке. Для других вариантов из списка Мастера результат будет абсолютно иным.
Урок: Полезные функции Excel
Как видим, Мастер функций является очень удобным инструментом, который значительно упрощает работу с формулами в Excel. С его помощью можно производить поиск нужных элементов из списка, а также вводить аргументы через графический интерфейс. Для начинающих пользователей Мастер особенно незаменим.
Содержание
- Мастер функций в программе Microsoft Excel
- Работа Мастера функций
- Переход в Мастер функций
- Категории элементов в Мастере
- Выбор функции
- Аргументы функции
- Выполнение функции
- Мастер функций в Excel
- Работа Мастера функций
- Переход в Мастер функций
- Категории элементов в Мастере
- Выбор функции
- Аргументы функции
- Выполнение функции
- Работа с мастером функций в Microsoft Excel
- Шаг 1: вызов Мастера функций
- Шаг 2: выбор функции
- Шаг 3: заполнение аргументов функции
- Шаг 4: выполнение функции
- Заключение
Мастер функций в программе Microsoft Excel
Функции в программе Excel позволяют выполнять различные, довольно сложные действия вычислительного характера буквально в несколько кликов. Ещё больше упрощает работу с ними такой удобный инструмент, как «Мастер функций». Давайте рассмотрим, как он устроен и что с его помощью можно делать.
Работа Мастера функций
Мастер функций представляет собой инструмент в виде небольшого окошка, в котором все имеющиеся функции в Excel упорядочены по категориям, что делает доступ к ним проще. Также, он предоставляет возможность ввести аргументы формулы через интуитивно понятный графический интерфейс.
Переход в Мастер функций
Мастер функций можно запустить сразу несколькими способами. Но прежде, чем активировать этот инструмент, нужно выделить ту ячейку, в которой будет находиться формула и, следовательно, выводиться результат.
Проще всего перейти в него, нажав на кнопку «Вставить функцию», расположенную слева от строки формул. Этот способ хорош тем, что им воспользоваться можно, находясь в любой вкладке программы.
Кроме того, нужный нам инструмент можно запустить, перейдя во вкладку «Формулы». Затем следует нажать на самую крайнюю слева кнопку на ленте «Вставить функцию». Она располагается в блоке инструментов «Библиотека функций». Это способ хуже предыдущего тем, что если вы не находитесь во вкладке «Формулы», то придется выполнять дополнительные действия.
Можно также кликнуть на любую другую кнопку блока инструментов «Библиотека функций». При этом, в выпадающем меню появится список, в самом низу которого есть пункт «Вставить функцию…». Вот по нему и нужно кликнуть. Но, данный способ является ещё запутаннее предыдущего.
Очень простым способом перехода в режим Мастера является нажатие комбинации горячих клавиш Shift+F3. Этот вариант предусматривает быстрый переход без дополнительных «телодвижений». Главный недостаток его состоит в том, что далеко не каждый пользователь способен удержать у себя в голове все комбинации горячих клавиш. Так что для новичков в освоении Excel этот вариант не подходит.
Категории элементов в Мастере
Какой бы способ активации из вышеуказанных вы не выбрали, в любом случае, после данных действий запускается окно Мастера. В верхней части окна расположено поле поиска. Сюда можно ввести наименование функции и нажать кнопку «Найти», чтобы быстрее отыскать нужный элемент и получить доступ к нему.
Средняя часть окна представляет выпадающий список категорий функций, которые представляет Мастер. Чтобы просмотреть данный перечень, жмем на пиктограмму в виде перевернутого треугольника справа от него. Таким образом открывается полный список доступных категорий. Прокручивать вниз его можно с помощью боковой полосы прокрутки.
Все функции разделены на следующие 12 категорий:
- Текстовые;
- Финансовые;
- Дата и время;
- Ссылки и массивы;
- Статистические;
- Аналитические;
- Работа с базой данных;
- Проверка свойств и значений;
- Логические;
- Инженерные;
- Математические;
- Определенные пользователем;
- Совместимость.
В категории «Определенные пользователем» находятся функции, составленные самим юзером или загруженные из внешних источников. В категории «Совместимость» расположены элементы из старых версий Excel, для которых уже существуют более новые аналоги. Они были собраны в эту группу для поддержки совместимости работы с документами, созданными в старых версиях приложения.
Кроме того, в этом же списке находятся две дополнительные категории: «Полный алфавитный перечень» и «10 недавно использовавшихся». В группе «Полный алфавитный перечень» располагается полный список всех функций в независимости от категории. В группе «10 недавно использовавшихся» находится список десяти последних элементов, к которым пользователь прибегал. Этот перечень постоянно обновляется: использовавшиеся раньше элементы убираются, а новые добавляются.
Выбор функции
Для того, чтобы перейти к окну аргументов, прежде всего необходимо выбрать нужную категорию. В поле «Выберите функцию» следует отметить то наименование, которое требуется для выполнения конкретной задачи. В самой нижней части окна находится подсказка в виде комментария к выделенному элементу. После того, как конкретная функция выбрана, требуется нажать на кнопку «OK».
Аргументы функции
После этого, открывается окно аргументов функции. Главным элементом этого окна являются поля аргументов. У различных функций аргументы отличаются, но принцип работы с ними остается одинаковыми. Их может быть несколько, а может быть и один. В качестве аргументов могут выступать числа, ссылки на ячейки или даже ссылки на целые массивы.
- Если мы работаем с числом, то просто вводим его с клавиатуры в поле, таким же образом, как вбиваем цифры в ячейки листа.
Если же в качестве аргумента выступают ссылки, то их также можно прописать вручную, но намного удобнее поступить иначе.
Установите курсор в поле аргумента. Не закрывая окно Мастера, выделите курсором на листе ячейку или целый диапазон ячеек, которые вам нужно обработать. После этого в поле окна Мастера автоматически заносятся координаты ячейки или диапазона. Если у функции несколько аргументов, то аналогичным образом можно занести данные и в следующее поле.
Выполнение функции
После того, как вы нажали на кнопку «OK» Мастер закрывается и происходит выполнение самой функции. Результат выполнения может быть самый разнообразный. Он зависит от тех задач, которые ставятся перед формулой. Например, функция СУММ, которая была выбрана в качестве примера, производит суммирование всех введенных аргументов и показывает результат в отдельной ячейке. Для других вариантов из списка Мастера результат будет абсолютно иным.
Как видим, Мастер функций является очень удобным инструментом, который значительно упрощает работу с формулами в Excel. С его помощью можно производить поиск нужных элементов из списка, а также вводить аргументы через графический интерфейс. Для начинающих пользователей Мастер особенно незаменим.
Источник
Мастер функций в Excel
Функции в Excel позволяют выполнять множество довольно сложных вычислений всего несколькими щелчками мыши. Удобный инструмент, который делает работу с ними еще проще, — это Мастер функций. Давайте рассмотрим, как он работает и что вы можете с ним делать.
Работа Мастера функций
Мастер функций — это небольшое окно, в котором все функции Excel рассортированы по категориям. Он также предоставляет возможность вводить аргументы формул с помощью интуитивно понятного графического интерфейса.
Переход в Мастер функций
Мастер функций может быть запущен несколькими способами одновременно. Но прежде чем запускать этот инструмент, необходимо выбрать ячейку, в которой будет находиться формула, а значит и отображаемый результат.
Самый простой способ сделать это — нажать кнопку «Вставить функцию» слева от панели формул. Преимущество этого метода в том, что его можно использовать с любой вкладки программы.
Вы также можете запустить выбранный вами инструмент, перейдя на вкладку «Формулы». Затем нажмите на кнопку «Вставить функцию» в левой части ленты. Он находится в панели инструментов «Библиотека функций». Этот способ хуже предыдущего, так как если вы не находитесь на вкладке «Формулы», вам придется выполнять дополнительные операции.
Вы также можете нажать любую другую кнопку на панели инструментов библиотеки функций. Это вызовет список в выпадающем меню, в самом низу которого находится «Вставить функцию…». Здесь вам нужно нажать кнопку мыши. Но этот способ еще более запутанный, чем предыдущий.
Очень простой способ войти в режим мастера — нажать Shift+F3. Этот вариант обеспечивает быстрый переход без дополнительных «жестов». Его главный недостаток заключается в том, что не каждый пользователь способен запомнить все комбинации функциональных клавиш. Поэтому это не лучший вариант для новичков в Excel.
Категории элементов в Мастере
Независимо от того, какой из вышеперечисленных способов активации вы выберете, в любом случае после выполнения этих шагов откроется окно мастера. В верхней части окна находится поле поиска. Здесь вы можете ввести название функции и нажать кнопку «Найти» для более быстрого поиска и доступа к нужному элементу.
В центре окна находится раскрывающийся список категорий характеристик, которые представляет мастер. Чтобы просмотреть этот список, нажмите на значок перевернутого треугольника справа от него. Откроется полный список доступных категорий. Его можно прокрутить вниз с помощью боковой полосы прокрутки.
Все функции разделены на следующие 12 категорий:
- Текст;
- Финансовые;
- Дата и время;
- Ссылки и таблицы;
- Статистический;
- Аналитический;
- Операции с базой данных;
- Проверка свойств и стоимости;
- Логично;
- Инжиниринг;
- Математический;
- Определяется пользователем;
- Совместимость.
Категория «Определено пользователем» содержит функции, составленные самим пользователем или загруженные из внешних источников. Категория «Совместимость» содержит элементы из старых версий Excel, для которых уже существуют более новые эквиваленты. Они были собраны в эту группу для обеспечения совместимости с документами, созданными в старых версиях приложения.
В этом списке также есть две дополнительные категории: «Полный алфавитный список» и «10 недавно использованных». Группа «Полный алфавитный список» содержит полный список всех функций, независимо от категории. Группа «10 самых последних использованных» содержит список десяти самых последних использованных элементов. Этот список постоянно обновляется: удаляются ранее использовавшиеся пункты и добавляются новые.
Выбор функции
Чтобы перейти к окну аргументов, сначала выберите нужную категорию. В поле «Выбрать функцию» выберите имя, которое будет использоваться для задания. В самом низу окна появляется всплывающая подсказка в качестве комментария к выбранному элементу. После выбора указанной функции нажмите кнопку «OK».
Аргументы функции
Как только вы это сделаете, откроется окно аргументов функции. Основными элементами этого окна являются поля аргументов. Аргументы этих функций различны, но принцип работы с ними остается тем же. Их может быть несколько или один. Аргументами могут быть числа, ссылки на ячейки или даже целочисленные ссылки.
- После ввода всех необходимых данных нажмите кнопку «OK», тем самым запустив выполнение задания.
Выполнение функции
После нажатия на кнопку «OK» мастер закрывается, и выполняется сама функция. Результат выполнения может быть очень разным. Это зависит от задач, которые ставятся перед формулой. Например, выбранная в качестве примера функция СУММ просуммирует все введенные аргументы и отобразит результат в одной ячейке. Результат будет совершенно другим для каждого из других вариантов в мастере.
Источник
Работа с мастером функций в Microsoft Excel
Возможности Эксель позволяют не только создавать и редактировать таблицы, но и производить всевозможные расчеты: математические, финансовые, статистические и т.д. Делается это с помощью формул или функций (операторов), для выбора и настройки которых предусмотрен специальный инструмент под названием “Мастер функций”. Алгоритм его использования мы и разберем в данной статье.
Шаг 1: вызов Мастера функций
Для начала выбираем ячейку, в которую планируется вставить функцию.
Затем у нас есть несколько способов открытия Мастера функций:
- Первый способ, пожалуй, пользуется наибольшей популярностью. Независимо от того, в какой вкладке программы мы находимся, слева от строки формул есть значок “fx (Вставить функцию)”. Именно по нему и следует щелкнуть.
- Также мы можем переключиться во вкладку “Формулы”, в которой представлена аналогичная кнопка в левом углу ленты программы (группа “Библиотека функций”).
- Все в той же вкладке и группе (“Формулы” – “Библиотека функций”) представлены категории функций. Кликаем по требуемому варианту и в раскрывшемся перечне можем выбрать нужный оператор. Но т.к. нам нужен именно Мастер функций, то кликаем по пункту “Вставить функцию” в самом конце списка.
- И напоследок, можно воспользоваться комбинацией Shift+F3, хотя не все пользователи готовы запоминать горячие клавиши для работы в Excel.
Шаг 2: выбор функции
Итак, независимо от того, какой из описанных выше способов был выбран, перед нами появится окно Мастера функций (Вставка функции). Оно состоит из следующих элементов:
- В самом верху расположено поле для поиска конкретной функции. Все что мы делаем – это набираем название (например, “сумм”) и жмем “Найти”. Результаты отобразятся в поле под надписью “Выберите функцию”.
- Параметр “Категория”. Щелкаем по текущему значению и в раскрывшемся списке выбираем категорию, к которой относится наша функция (допустим, “Математические”).Всего предлагается 15 вариантов:
- После того, как категория задана, остается только определиться с функцией в поле “Выберите функцию” (выбираем ее с помощью щелчка левой кнопкой мыши). Когда все готово, жмем кнопку OK (или Enter).
Шаг 3: заполнение аргументов функции
В следующем окне предстоит заполнить аргументы (один или несколько), перечень и тип которых зависит от выбранной функции.
Рассмотрим на примере “СРЗНАЧ” (для вычисления среднего арифметического значения), работающего с числовыми данными.
Поле напротив аргумента можно заполнить вручную, введя конкретное число (или несколько числовых значений, разделенных точкой с запятой) с помощью клавиш на клавиатуре.
Либо можно указать ссылку на ячейку или диапазон ячеек, содержащих числа.
Здесь возможны два варианта – это можно сделать либо вручную (т.е. с помощью клавиатуры), либо с помощью мыши. Последний вариант удобнее – просто щелкаем по нужному элементу в самой таблице, находясь в поле напротив нужного аргумента.
Возможна комбинация способов заполнения значений аргументов, а переключаться между ними можно с помощью щелчков мыши внутри нужного поля или клавиши Tab.
Примечания:
- В нижней части окна представлено описание функции, а также комментарии/рекомендации касательно того, как именно следует заполнить тот или иной аргумент.
- Иногда количество аргументов может увеличиться. Например, как это произошло в нашем случае с функцией “СРЗНАЧ”. По умолчанию предусмотрено всего два аргумента, но если мы перейдем к заполнению второго, добавится третий и т.д.
- Принцип заполнения текстовых данных в других функциях, где это предполагается, аналогичен рассмотренному выше – либо мы указываем конкретные значения, либо ссылки на ячейки или диапазоны ячеек.
Шаг 4: выполнение функции
Как только все аргументы заполнены, жмем OK.
Окно Мастера функций закроется. И если все сделано правильно, мы увидим в выбранной ячейке результат согласно заданным значениям аргументов.
А в строке формул будет отображаться автоматически заполненная формула функции.
Заключение
Таким образом, Мастер функций позволяет максимально упростить работу с функциями, что делает его одним из самых незаменимых инструментов в Excel. Благодаря нему не нужно запоминать сложные формулы и правила их написания, т.к. все предельно просто реализовано через заполнение специальных полей.
Источник
Возможности Эксель позволяют не только создавать и редактировать таблицы, но и производить всевозможные расчеты: математические, финансовые, статистические и т.д. Делается это с помощью формул или функций (операторов), для выбора и настройки которых предусмотрен специальный инструмент под названием “Мастер функций”. Алгоритм его использования мы и разберем в данной статье.
- Шаг 1: вызов Мастера функций
- Шаг 2: выбор функции
- Шаг 3: заполнение аргументов функции
- Шаг 4: выполнение функции
- Заключение
Шаг 1: вызов Мастера функций
Для начала выбираем ячейку, в которую планируется вставить функцию.
Затем у нас есть несколько способов открытия Мастера функций:
- Первый способ, пожалуй, пользуется наибольшей популярностью. Независимо от того, в какой вкладке программы мы находимся, слева от строки формул есть значок “fx (Вставить функцию)”. Именно по нему и следует щелкнуть.
- Также мы можем переключиться во вкладку “Формулы”, в которой представлена аналогичная кнопка в левом углу ленты программы (группа “Библиотека функций”).
- Все в той же вкладке и группе (“Формулы” – “Библиотека функций”) представлены категории функций. Кликаем по требуемому варианту и в раскрывшемся перечне можем выбрать нужный оператор. Но т.к. нам нужен именно Мастер функций, то кликаем по пункту “Вставить функцию” в самом конце списка.
- И напоследок, можно воспользоваться комбинацией Shift+F3, хотя не все пользователи готовы запоминать горячие клавиши для работы в Excel.
Шаг 2: выбор функции
Итак, независимо от того, какой из описанных выше способов был выбран, перед нами появится окно Мастера функций (Вставка функции). Оно состоит из следующих элементов:
- В самом верху расположено поле для поиска конкретной функции. Все что мы делаем – это набираем название (например, “сумм”) и жмем “Найти”. Результаты отобразятся в поле под надписью “Выберите функцию”.
- Параметр “Категория”. Щелкаем по текущему значению и в раскрывшемся списке выбираем категорию, к которой относится наша функция (допустим, “Математические”).Всего предлагается 15 вариантов:
- После того, как категория задана, остается только определиться с функцией в поле “Выберите функцию” (выбираем ее с помощью щелчка левой кнопкой мыши). Когда все готово, жмем кнопку OK (или Enter).
Шаг 3: заполнение аргументов функции
В следующем окне предстоит заполнить аргументы (один или несколько), перечень и тип которых зависит от выбранной функции.
Рассмотрим на примере “СРЗНАЧ” (для вычисления среднего арифметического значения), работающего с числовыми данными.
Поле напротив аргумента можно заполнить вручную, введя конкретное число (или несколько числовых значений, разделенных точкой с запятой) с помощью клавиш на клавиатуре.
Либо можно указать ссылку на ячейку или диапазон ячеек, содержащих числа.
Здесь возможны два варианта – это можно сделать либо вручную (т.е. с помощью клавиатуры), либо с помощью мыши. Последний вариант удобнее – просто щелкаем по нужному элементу в самой таблице, находясь в поле напротив нужного аргумента.
Возможна комбинация способов заполнения значений аргументов, а переключаться между ними можно с помощью щелчков мыши внутри нужного поля или клавиши Tab.
Примечания:
- В нижней части окна представлено описание функции, а также комментарии/рекомендации касательно того, как именно следует заполнить тот или иной аргумент.
- Иногда количество аргументов может увеличиться. Например, как это произошло в нашем случае с функцией “СРЗНАЧ”. По умолчанию предусмотрено всего два аргумента, но если мы перейдем к заполнению второго, добавится третий и т.д.
- Принцип заполнения текстовых данных в других функциях, где это предполагается, аналогичен рассмотренному выше – либо мы указываем конкретные значения, либо ссылки на ячейки или диапазоны ячеек.
Шаг 4: выполнение функции
Как только все аргументы заполнены, жмем OK.
Окно Мастера функций закроется. И если все сделано правильно, мы увидим в выбранной ячейке результат согласно заданным значениям аргументов.
А в строке формул будет отображаться автоматически заполненная формула функции.
Заключение
Таким образом, Мастер функций позволяет максимально упростить работу с функциями, что делает его одним из самых незаменимых инструментов в Excel. Благодаря нему не нужно запоминать сложные формулы и правила их написания, т.к. все предельно просто реализовано через заполнение специальных полей.
На чтение 3 мин Опубликовано 14.01.2015
Мастер функций в Excel – это помощник, который позволяет быстро найти и вставить нужную функцию на рабочий лист. Внимательно изучите, как работает Мастер функций, эти знания обязательно пригодятся Вам в будущем. В данном уроке мы вставим нужную нам функцию с помощью Мастера, пройдя все этапы от начала и до конца.
Если у вас возникли проблемы с поиском необходимой функции, используйте Мастер функций, который позволяет находить функции при помощи ключевых слов. Хоть этот помощник и является очень полезным, все же могут возникнуть затруднения при его использовании. Если у Вас пока нет определенного опыта работы с функциями в Excel, то гораздо проще будет найти нужную функцию через библиотеку. Для более продвинутых пользователей Мастер функций является мощным средством быстрого поиска нужной функции.
Мастер функций – это последовательность диалоговых окон, в которых Excel ведет пользователя от выбора нужной функции до настройки всех аргументов. В Excel 2013, в отличие от более ранних версий Excel, это диалоговое окно называется не Мастер функций, а Вставка функции.
Как использовать Мастер функций в Excel
В следующем примере нам требуется найти функцию, которая подсчитывает общее количество заказанных товаров. Чтобы узнать количество, нам необходимо посчитать ячейки в столбце Товар, в которых используется текст. В данном случае мы не можем использовать функцию СЧЁТ, поскольку она подсчитывает ячейки только с числовыми значениями. Поэтому нам необходимо найти функцию, которая подсчитывает количество заполненных ячеек в диапазоне.
- Выделите ячейку, которая будет содержать формулу. В нашем примере мы выделим ячейку B16.
- Откройте вкладку Формулы на Ленте, а затем выберите команду Вставить функцию.
- Откроется Мастер функций. В появившемся диалоговом окне Вставка функции введите несколько ключевых слов, описывающих тип вычислений, которые осуществляет требуемая функция, а затем нажмите Найти. В нашем примере мы введем фразу «количество ячеек«, но вы также можете найти функцию по категории из раскрывающегося списка.
- Посмотрите список результатов, чтобы найти нужную функцию, затем нажмите OK. В нашем примере мы выберем СЧЁТЗ, поскольку она подсчитывает количество непустых ячеек в диапазоне.
- Появится диалоговое окно Аргументы функции. Выберите поле Значение1, а затем введите или выберите нужные ячейки. В нашем примере мы введем диапазон A3:A10. При необходимости Вы можете продолжить заполнять аргументы в полях Значение2, Значение3 и т.д. В этом же примере мы хотим посчитать количество позиций только в диапазоне A3:A10.
- Если все данные введены верно, нажмите ОК.
- Мастер функций закроется, и Вы увидите результат. В нашем примере результат показывает, что всего было заказано восемь позиций.
Если Вы уже хорошо разбираетесь в базовых функциях Excel, можете воспользоваться более сложными функциями, такими как ВПР. Для получения дополнительной информации изучите урок Функция ВПР в Excel на простых примерах или обратитесь к разделу ВПР от А до Я.
Оцените качество статьи. Нам важно ваше мнение:
Николай Павлов
Microsoft Excel: Мастер Формул
Подробное руководство по «высшему пилотажу»
в формулах и функциях Microsoft Excel
Москва
Издательство «Книга по Требованию»
2016
© Павлов Николай, 2017
П 12
Microsoft Excel: Мастер Формул. Подробное руководство по «высшему пилотажу» в формулах и функциях /
Николай Павлов – М., 2017. – 240 с. : ил.
ISBN 978-5-519-50143-9
В этой книге практикующий IT-тренер и MVP по Excel Николай Павлов делится секретами создания и отладки
сложных формул в программе Microsoft Excel. Подробно разбираются нюансы работы с дубликатами,
извлечение топовых значений, сравнение списков, поиск и подстановка данных, настройка связей между
таблицами и многое другое. Книга рассчитана на средних и продвинутых пользователей Microsoft Excel. Ко
всем описанным в книге задачам в комплекте идут живые файлы-примеры, которые можно использовать в
работе.
УДК 004,42(075.8)
ББК 32.81-018,2*32.973.26
Оглавление
ОТ АВТОРА ………………………………………………………………………………………………………………………………………………….. 4
ФАЙЛЫ ПРИМЕРОВ И ВИДЕОУРОКИ ……………………………………………………………………………………………………………… 5
ВВЕДЕНИЕ В ФОРМУЛЫ МАССИВОВ ……………………………………………………………………………………………………………… 6
ОПРЕДЕЛЕНИЕ И СПОСОБЫ ВВОДА ФОРМУЛ МАССИВА…………………………………………………………………………………………………….. 7
Способы ввода формул массива …………………………………………………………………………………………………………………… 7
КЛАССИФИКАЦИЯ ФОРМУЛ МАССИВА ………………………………………………………………………………………………………………………… 8
Тип 1. Массив(ы) на входе, массив на выходе ……………………………………………………………………………………………….. 8
Тип 2. Массив(ы) на входе, ячейка на выходе ………………………………………………………………………………………………… 8
Тип 3. Массив констант внутри формулы ………………………………………………………………………………………………….. 9
ПЛЮСЫ И МИНУСЫ ФОРМУЛ МАССИВА …………………………………………………………………………………………………………………….. 10
Плюсы формул массива ……………………………………………………………………………………………………………………………… 10
Минусы формул массива ……………………………………………………………………………………………………………………………. 10
ХИТРОСТИ ВВОДА И ОТЛАДКИ СЛОЖНЫХ ФОРМУЛ ……………………………………………………………………………………….11
ВЫЧИСЛЕНИЕ ФРАГМЕНТА ФОРМУЛЫ……………………………………………………………………………………………………………………….. 12
ПОШАГОВОЕ ВЫПОЛНЕНИЕ……………………………………………………………………………………………………………………………………. 13
БЫСТРОЕ ВЫДЕЛЕНИЕ ВСЕГО МАССИВА……………………………………………………………………………………………………………………… 14
НАГЛЯДНОСТЬ СЛОЖНЫХ ФОРМУЛ ………………………………………………………………………………………………………………………….. 15
УМНЫЕ ТАБЛИЦЫ……………………………………………………………………………………………………………………………………………….. 16
ИМЕНОВАННЫЕ ДИАПАЗОНЫ …………………………………………………………………………………………………………………………………. 19
ТОЧНОЕ КОПИРОВАНИЕ ФОРМУЛ БЕЗ СДВИГА ССЫЛОК…………………………………………………………………………………………………… 23
ВЫБОРОЧНЫЙ ПОДСЧЕТ ПО УСЛОВИЯМ ………………………………………………………………………………………………………25
СРЕДНЕЕ БЕЗ УЧЕТА НУЛЕЙ И ОШИБОК ………………………………………………………………………………………………………………………. 26
ВЫБОРОЧНОЕ СУММИРОВАНИЕ ОДНОМУ УСЛОВИЮ……………………………………………………………………………………………………… 27
ВЫБОРОЧНОЕ СУММИРОВАНИЕ ПО НЕСКОЛЬКИМ УСЛОВИЯМ………………………………………………………………………………………….. 29
Способ 1. Функция СУММЕСЛИМН ……………………………………………………………………………………………………………… 29
Способ 2. Функция баз данных БДСУММ …………………………………………………………………………………………………….. 30
Способ 3. Формула массива ……………………………………………………………………………………………………………………….. 31
ПОДСЧЕТ КОЛИЧЕСТВА И СУММЫ ПО УСЛОВИЮ С УЧЕТОМ РЕГИСТРА …………………………………………………………………………………. 32
СУММИРОВАНИЕ ЯЧЕЕК ЧЕРЕЗ ОДНУ, ДВЕ, ТРИ И Т.Д. ……………………………………………………………………………………………………. 34
СУММИРОВАНИЕ ЯЧЕЕК ПО ДИАГОНАЛИ……………………………………………………………………………………………………………………. 37
СУММИРОВАНИЕ ПО «ОКНУ» НА ЛИСТЕ ……………………………………………………………………………………………………………………. 39
СУММИРОВАНИЕ ТОЛЬКО ВИДИМЫХ ЯЧЕЕК ……………………………………………………………………………………………………………….. 41
СУММИРОВАНИЕ ЯЧЕЕК ПО ЦВЕТУ, ШРИФТУ, ФОРМАТУ И Т.Д. …………………………………………………………………………………………. 43
Оживляем призрака …………………………………………………………………………………………………………………………………… 43
Применение на практике ………………………………………………………………………………………………………………………….. 44
Ложка дегтя …………………………………………………………………………………………………………………………………………….. 45
СУММИРОВАНИЕ ЧИСЕЛ, НАПИСАННЫХ ЧЕРЕЗ ДРОБЬ ……………………………………………………………………………………………………. 47
ПОИСК И ПОДСТАНОВКА ……………………………………………………………………………………………………………………………..48
СЕКРЕТЫ ФУНКЦИИ ВПР (VLOOKUP) ……………………………………………………………………………………………………………………… 49
Стандартное использование ……………………………………………………………………………………………………………………. 49
Символы подстановки ………………………………………………………………………………………………………………………………. 49
Интервальный просмотр………………………………………………………………………………………………………………………….. 50
Перехват ошибок #Н/Д ……………………………………………………………………………………………………………………………… 51
Левый ВПР …………………………………………………………………………………………………………………………………………………. 52
Способ 1. ВПР и ВЫБОР ……………………………………………………………………………………………………………………………………………..52
Способ 2. ИНДЕКС и ПОИСКПОЗ …………………………………………………………………………………………………………………………………53
Способ 3. СУММЕСЛИ ……………………………………………………………………………………………………………………………………………….53
Мастер Формул
www.PlanetaExcel.ru
Несовпадение форматов …………………………………………………………………………………………………………………………… 54
Непечатаемые символы и лишние пробелы ……………………………………………………………………………………………….. 56
Вычисление номера столбца ……………………………………………………………………………………………………………………… 56
Поиск и подстановка с учетом регистра …………………………………………………………………………………………………… 57
Использование «умных таблиц» в связке с ВПР ………………………………………………………………………………………….. 59
Извлечение сразу нескольких столбцов ……………………………………………………………………………………………………… 60
Сравнение быстродействия разных видов ВПР ………………………………………………………………………………………….. 60
ПОИСК ПО НЕСКОЛЬКИМ УСЛОВИЯМ ………………………………………………………………………………………………………………………… 62
ДВУМЕРНЫЙ ПОИСК (ВПР 2D) ………………………………………………………………………………………………………………………………. 63
Способ 1. Функции ИНДЕКС и ПОИСКПОЗ …………………………………………………………………………………………………….. 63
Способ 2. Пересечение именованных диапазонов ……………………………………………………………………………………….. 64
ТРЕХМЕРНЫЙ ПОИСК СРАЗУ ПО НЕСКОЛЬКИМ ЛИСТАМ (ВПР 3D) …………………………………………………………………………………….. 67
ПОИСК ДАННЫХ В НЕСКОЛЬКИХ ТАБЛИЦАХ …………………………………………………………………………………………………………………. 70
Одинаковые таблицы………………………………………………………………………………………………………………………………… 70
Разные таблицы ……………………………………………………………………………………………………………………………………….. 71
ПОИСК БЛИЖАЙШЕГО ЧИСЛОВОГО ЗНАЧЕНИЯ……………………………………………………………………………………………………………… 74
Поиск ближайшего наименьшего……………………………………………………………………………………………………………….. 74
Поиск ближайшего наибольшего ……………………………………………………………………………………………………………….. 74
Поиск ближайшего значения (точно) …………………………………………………………………………………………………………. 75
ПОИСК ПОСЛЕДНЕГО ЗНАЧЕНИЯ ………………………………………………………………………………………………………………………………. 78
ПОИСК СРАЗУ ВСЕХ ЗНАЧЕНИЙ (МУЛЬТИВПР) …………………………………………………………………………………………………………….. 81
ПОИСК ЗАДАННОЙ ПОСЛЕДОВАТЕЛЬНОСТИ В СПИСКЕ ……………………………………………………………………………………………………. 84
ПОДСТАНОВКА ИЗ НИОТКУДА …………………………………………………………………………………………………………………………………. 85
Функция ВЫБОР …………………………………………………………………………………………………………………………………………. 85
Массив констант в формуле …………………………………………………………………………………………………………………….. 85
Массив констант с именем ………………………………………………………………………………………………………………………. 86
ПОИСК ЧАСТИЧНЫХ ТЕКСТОВЫХ СОВПАДЕНИЙ …………………………………………………………………………………………………………….. 88
ТОЧНЫЙ ПОИСК С УЧЕТОМ РЕГИСТРА СИМВОЛОВ …………………………………………………………………………………………………………. 90
ПОИСК ПЕРВОГО ИЛИ ПОСЛЕДНЕГО ЗНАЧЕНИЯ В СТРОКЕ ИЛИ СТОЛБЦЕ ………………………………………………………………………………. 92
Текст ………………………………………………………………………………………………………………………………………………………… 92
Числа …………………………………………………………………………………………………………………………………………………………. 93
Универсальный вариант ……………………………………………………………………………………………………………………………. 95
ФИЛЬТРАЦИЯ ФОРМУЛАМИ …………………………………………………………………………………………………………………………………… 97
Способ 1. Без формул массива, но с дополнительным столбцом ……………………………………………………………….. 97
Способ 2. Формулой массива без дополнительных столбцов …………………………………………………………………… 100
АНАЛИЗ ПРЕДЕЛЬНЫХ ЗНАЧЕНИЙ …………………………………………………………………………………………………………….. 103
ВЫЯВЛЕНИЕ ТОПОВЫХ ЗНАЧЕНИЙ ………………………………………………………………………………………………………………………….. 104
ПОИСК МИНИМАЛЬНОГО/МАКСИМАЛЬНОГО ПО УСЛОВИЮ …………………………………………………………………………………………… 106
ПОИСК МИНИМАЛЬНОГО/МАКСИМАЛЬНОГО ПО НЕСКОЛЬКИМ УСЛОВИЯМ ……………………………………………………………………….. 109
ПОИСК САМЫХ ЧАСТО ВСТРЕЧАЮЩИХСЯ ЗНАЧЕНИЙ ……………………………………………………………………………………………………. 111
Поиск самых часто встречающихся чисел функцией МОДА ……………………………………………………………………… 111
Частотный анализ по диапазонам функцией ЧАСТОТА ……………………………………………………………………………. 112
Поиск самого часто встречающегося текста …………………………………………………………………………………………. 112
ДУБЛИКАТЫ И УНИКАЛЬНЫЕ ……………………………………………………………………………………………………………………. 115
ПОДСЧЕТ КОЛИЧЕСТВА УНИКАЛЬНЫХ ЗНАЧЕНИЙ В СПИСКЕ ……………………………………………………………………………………………. 116
ИЗВЛЕЧЕНИЕ УНИКАЛЬНЫХ ЗНАЧЕНИЙ…………………………………………………………………………………………………………………….. 119
Необходимое вступление ………………………………………………………………………………………………………………………… 119
Способ 1. Вспомогательный столбец ………………………………………………………………………………………………………. 120
Способ 2. Формула массива ………………………………………………………………………………………………………………………. 123
УДАЛЕНИЕ ДУБЛИКАТОВ ……………………………………………………………………………………………………………………………………… 126
СРАВНЕНИЕ СПИСКОВ ………………………………………………………………………………………………………………………………. 127
СОВПАДАЮТ ИЛИ НЕТ?……………………………………………………………………………………………………………………………………….. 128
ПОДСВЕТКА ОТЛИЧИЙ-СОВПАДЕНИЙ В ДВУХ СПИСКАХ …………………………………………………………………………………………………. 132
1
Мастер Формул
www.PlanetaExcel.ru
ВЫЯВЛЕНИЕ РАЗЛИЧИЙ В ДВУХ СПИСКАХ …………………………………………………………………………………………………………………. 133
Способ 1. Простой — функция СЧЁТЕСЛИ ……………………………………………………………………………………………………. 133
Способ 2. Продвинутый – получаем отличия отдельным списком …………………………………………………………… 133
ПОИСК СОВПАДЕНИЙ В ДВУХ И БОЛЕЕ СПИСКАХ …………………………………………………………………………………………………………. 136
ТРАНСФОРМАЦИЯ ТАБЛИЦ ФОРМУЛАМИ…………………………………………………………………………………………………..139
РАЗМЕЩЕНИЕ ЭЛЕМЕНТОВ СПИСКА В ОБРАТНОМ ПОРЯДКЕ …………………………………………………………………………………………… 140
ТРАНСПОНИРОВАНИЕ (ПОВОРОТ) ТАБЛИЦ ……………………………………………………………………………………………………………….. 142
Способ 1. Функция ТРАНСП ……………………………………………………………………………………………………………………….. 142
Способ 2. Формируем адрес сами ……………………………………………………………………………………………………………… 143
УДАЛЕНИЕ ПУСТЫХ ЯЧЕЕК В СПИСКЕ ……………………………………………………………………………………………………………………….. 145
СОРТИРОВКА ФОРМУЛОЙ ……………………………………………………………………………………………………………………………………. 148
Для чисел…………………………………………………………………………………………………………………………………………………. 148
Для текста …………………………………………………………………………………………………………………………………………….. 148
Формулой массива на «умной таблице» ………………………………………………………………………………………………….. 150
СЛУЧАЙНАЯ ВЫБОРКА ЭЛЕМЕНТОВ ИЗ СПИСКА ………………………………………………………………………………………………………….. 153
Простой вариант ……………………………………………………………………………………………………………………………………. 153
Без повторов …………………………………………………………………………………………………………………………………………… 153
Одной формулой массива ………………………………………………………………………………………………………………………… 154
РАЗДЕЛЕНИЕ ОДНОГО СТОЛБЦА НА НЕСКОЛЬКО …………………………………………………………………………………………………………. 157
ФОРМУЛЫ ДЛЯ РАБОТЫ С ДАТАМИ …………………………………………………………………………………………………………..159
НЕОБХОДИМОЕ ВСТУПЛЕНИЕ ……………………………………………………………………………………………………………………………….. 160
ОКРУГЛЕНИЕ ДАТ ……………………………………………………………………………………………………………………………………………… 161
Округление даты до ближайшего рабочего дня ………………………………………………………………………………………. 161
Округление даты до заданного дня недели ……………………………………………………………………………………………… 163
ОПРЕДЕЛЕНИЕ ДАТЫ ПО ДНЮ И НОМЕРУ НЕДЕЛИ ………………………………………………………………………………………………………. 165
СКОЛЬКО ЗАДАННЫХ ДНЕЙ НЕДЕЛИ ПОПАДАЕТ В ИНТЕРВАЛ ДАТ …………………………………………………………………………………….. 166
Способ 1. Формула массива ……………………………………………………………………………………………………………………… 166
Способ 2. Новая функция ЧИСТРАБДНИ.МЕЖД ………………………………………………………………………………………….. 169
ВЫЧИСЛЕНИЕ НУЖНОЙ ДАТЫ КАЖДОГО МЕСЯЦА ……………………………………………………………………………………………………….. 170
ПЕРЕСЕЧЕНИЕ ДВУХ ИНТЕРВАЛОВ ДАТ …………………………………………………………………………………………………………………….. 172
Пересекаются или нет? ………………………………………………………………………………………………………………………….. 172
Сколько дней в пересечении? ……………………………………………………………………………………………………………………. 173
ВЫЯВЛЕНИЕ ВРЕМЕННЫХ ИНТЕРВАЛОВ, КУДА ВХОДИТ ЗАДАННАЯ ДАТА ……………………………………………………………………………. 176
ГЕНЕРАЦИЯ СЛУЧАЙНОГО СПИСКА ДАТ ……………………………………………………………………………………………………………………. 178
СКЛЕИВАНИЕ ДАТ И ТЕКСТА………………………………………………………………………………………………………………………………….. 180
ПРОДВИНУТОЕ УПРАВЛЕНИЕ СВЯЗЯМИ С ПОМОЩЬЮ ФОРМУЛ ……………………………………………………………………181
СОЗДАНИЕ ВНЕШНИХ ССЫЛОК ВРУЧНУЮ ………………………………………………………………………………………………………………….. 182
3D-ССЫЛКИ НА ГРУППУ ЛИСТОВ ……………………………………………………………………………………………………………………………. 183
СВЯЗЫВАНИЕ ЛИСТОВ СПЕЦИАЛЬНОЙ ВСТАВКОЙ ……………………………………………………………………………………………………….. 185
СОЗДАНИЕ ССЫЛОК НА ДРУГИЕ ЛИСТЫ ФОРМУЛОЙ …………………………………………………………………………………………………….. 187
КОНСОЛИДАЦИЯ ТАБЛИЦ ИЗ РАЗНЫХ ФАЙЛОВ СО СВЯЗЯМИ ………………………………………………………………………………………….. 189
РЕДАКТИРОВАНИЕ СВЯЗЕЙ МЕЖДУ КНИГАМИ ……………………………………………………………………………………………………………. 193
ПОЛУЧЕНИЕ ИМЕНИ ТЕКУЩЕГО ФАЙЛА И ЛИСТА ФОРМУЛОЙ …………………………………………………………………………………………. 195
ОГЛАВЛЕНИЕ КНИГИ С ГИПЕРССЫЛКАМИ …………………………………………………………………………………………………………………. 197
Шаг 1. Создаем список листов …………………………………………………………………………………………………………………. 197
Шаг 2. Добавляем автоматическое обновление ……………………………………………………………………………………… 198
Шаг 3. Скрываем ошибки …………………………………………………………………………………………………………………………. 198
Шаг 4. Добавляем гиперссылки ………………………………………………………………………………………………………………… 199
ДИНАМИЧЕСКИЕ ГИПЕРССЫЛКИ ИЗ ОДНОЙ ТАБЛИЦЫ В ДРУГУЮ …………………………………………………………………………………….. 200
ВИЗУАЛИЗАЦИЯ СВЯЗЕЙ С ПОМОЩЬЮ НАДСТРОЙКИ INQUIRE…………………………………………………………………………………………. 202
ДРУГИЕ ТРЮКИ С ФОРМУЛАМИ …………………………………………………………………………………………………………………205
ДИНАМИЧЕСКИЙ ДИАПАЗОН С АВТОПОДСТРОЙКОЙ РАЗМЕРОВ ………………………………………………………………………………………. 206
2
Мастер Формул
www.PlanetaExcel.ru
Способ 1. Умная таблица …………………………………………………………………………………………………………………………. 206
Способ 2. Динамический именованный диапазон формулами ……………………………………………………………………. 208
Ищем последнюю ячейку ……………………………………………………………………………………………………………………………………….. 208
Формируем ссылку с помощью ИНДЕКС………………………………………………………………………………………………………………….. 210
Создаем именованный диапазон ……………………………………………………………………………………………………………………………. 210
ИЗВЛЕЧЕНИЕ ДАННЫХ ИЗ СВОДНЫХ ТАБЛИЦ ……………………………………………………………………………………………………………… 211
Постановка задачи ………………………………………………………………………………………………………………………………….. 211
Прямая ссылка на ячейку в сводной ………………………………………………………………………………………………………….. 212
Функция ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ ……………………………………………………………………………………. 212
Ссылка на итоги ………………………………………………………………………………………………………………………………………. 214
Использование дат ………………………………………………………………………………………………………………………………….. 214
ИЗВЛЕЧЕНИЕ ЧИСЕЛ ИЗ ТЕКСТА ……………………………………………………………………………………………………………………………… 216
Извлечение номера счета из описания платежа ……………………………………………………………………………………… 216
Извлечение почтового индекса из адреса ………………………………………………………………………………………………… 217
Извлечение целых чисел из текста ………………………………………………………………………………………………………….. 219
СПРАВОЧНИК ПО ФУНКЦИЯМ ИЗ ЭТОЙ КНИГИ …………………………………………………………………………………………… 221
АДРЕС (ADDRESS) ……………………………………………………………………………………………………………………………………………………. 222
ВПР (VLOOKUP) ………………………………………………………………………………………………………………………………………………………. 222
ВЫБОР (CHOOSE) ……………………………………………………………………………………………………………………………………………………. 222
ГПР (HLOOKUP) ………………………………………………………………………………………………………………………………………………………. 223
ДАТА (DATE) …………………………………………………………………………………………………………………………………………………………… 223
ДВССЫЛ (INDIRECT) ………………………………………………………………………………………………………………………………………………… 224
ДЕНЬНЕД (WEEKDAY)………………………………………………………………………………………………………………………………………………. 224
ЕПУСТО (ISBLANK) …………………………………………………………………………………………………………………………………………………… 224
ЕСЛИ (IF) ………………………………………………………………………………………………………………………………………………………………… 224
ЕСЛИОШИБКА (IFERROR) …………………………………………………………………………………………………………………………………………. 225
ЕЧИСЛО (ISNUMBER) ………………………………………………………………………………………………………………………………………………. 226
ИНДЕКС (INDEX) ……………………………………………………………………………………………………………………………………………………… 226
ЛЕВСИМВ (LEFT)……………………………………………………………………………………………………………………………………………………… 228
МЕДИАНА (MEDIAN) ……………………………………………………………………………………………………………………………………………….. 228
НАИБОЛЬШИЙ (LARGE) …………………………………………………………………………………………………………………………………………… 228
НАИМЕНЬШИЙ (SMALL) ………………………………………………………………………………………………………………………………………….. 229
НАЙТИ (FIND) …………………………………………………………………………………………………………………………………………………………. 229
ПЕЧСИМВ (CLEAN) ………………………………………………………………………………………………………………………………………………….. 229
ПОИСК (SEARCH) …………………………………………………………………………………………………………………………………………………….. 230
ПОИСКПОЗ (MATCH)……………………………………………………………………………………………………………………………………………….. 230
ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ (GET.PIVOT.DATA) …………………………………………………………………………………….. 231
ПРАВСИМВ (RIGHT) ………………………………………………………………………………………………………………………………………………… 231
ПСТР (MID) …………………………………………………………………………………………………………………………………………………………….. 232
РАБДЕНЬ (WORKDAY) ……………………………………………………………………………………………………………………………………………… 232
РАБДЕНЬ.МЕЖД (WORKDAY.INTL) ……………………………………………………………………………………………………………………………. 232
СЖПРОБЕЛЫ (TRIM) ……………………………………………………………………………………………………………………………………………….. 233
СЛУЧМЕЖДУ (RANDBETWEEN) ………………………………………………………………………………………………………………………………… 233
СМЕЩ (OFFSET) ………………………………………………………………………………………………………………………………………………………. 233
СОВПАД (EXACT) …………………………………………………………………………………………………………………………………………………….. 234
СРЗНАЧЕСЛИ (AVERAGEIF)……………………………………………………………………………………………………………………………………….. 234
СТОЛБЕЦ (COLUMN) ……………………………………………………………………………………………………………………………………………….. 234
СТРОКА (ROW) ……………………………………………………………………………………………………………………………………………………….. 235
СУММЕСЛИ (SUMIF) ……………………………………………………………………………………………………………………………………………….. 235
СУММПРОИЗВ (SUMPRODUCT) ……………………………………………………………………………………………………………………………….. 236
СЧЁТЕСЛИ (COUNTIF) ………………………………………………………………………………………………………………………………………………. 236
ТЕКСТ (TEXT) …………………………………………………………………………………………………………………………………………………………… 237
ТРАНСП (TRANSPOSE) ……………………………………………………………………………………………………………………………………………… 237
ЯЧЕЙКА (CELL) ………………………………………………………………………………………………………………………………………………………… 237
ТРЕНИНГИ ………………………………………………………………………………………………………………………………………………… 239
3
От автора
Хочу сразу и честно вас предупредить.
Если вы только недавно окунулись в мир Excel – не покупайте эту книгу.
Вас и без нее будет ждать много восхитительных открытий. Я вам даже немного завидую. Радость и ощущение
всемогущества от использования сводных таблиц, или функции ВПР (VLOOKUP), или условного
форматирования первое время будет зашкаливать и без этого. Купите лучше любую хорошую книжку по
базовому набору функций Excel или мою предыдущую: «Microsoft Excel: сборник готовых рецептов – бери и
пользуйся!». Пользы будет больше.
Книга, которую вы держите в руках, – не для новичков. Эта книга для тех, кто в Microsoft Excel работает уже
давно. Достаточно давно, чтобы к радости от результатов работы порой примешивалось и разочарование от
осознания того, что не все, что хочется, возможно реализовать в этой программе. Для тех, кто «перерос ВПР» и
хочет с помощью формул творить на порядок более сложные вещи.
Если вы из таких – добро пожаловать. Мне есть, чем с вами поделиться.
Файлы примеров и видеоуроки
Нет ничего более раздражающего, чем хороший
пример.
(Марк Твен)
Книга – это хорошо, но живой пример с готовой формулой – еще лучше! Ко всем задачам из этой книги есть
файлы Excel, где можно посмотреть работающие формулы и даже скопировать их оттуда в свой проект. Не
стесняйтесь.
Имена файлов повторяют названия глав, так что найти нужное будет несложно:
Где взять эти файлы:
Если вы купили эту книгу в электронном виде, то файлы примеров должны идти в комплекте архивом.
Если в бумажном, то файлы можно скачать на моем сайте в разделе Книги: www.PlanetaExcel.ru/books
Также несколько задач из этой книги пошагово разобраны в видеоуроках, которые я выкладываю у себя на
сайте в разделе Видеоуроки www.PlanetaExcel.ru/video.
Если вы из тех, кому «лучше один раз увидеть» и по тексту разобраться сложновато, то загляните в этот раздел
– возможно, есть видео с разбором вашей задачи.
Введение в
формулы массивов
Абсолютное большинство пользователей Excel никогда даже не слышали про формулы массива. Меньшинство
– встречали их в чужих таблицах или в интернете и пытались копировать в своих проектах (далеко не всегда
удачно). И уже совсем немногие научились использовать их мощь и магию для решения своих задач.
В этой главе мы:
Разберемся с тем, что же такое массивы и формулы массива, как они работают, какова их внутренняя
логика.
Классифицируем формулы массива на 3 основных типа и изучим их особенности.
Научимся двум способам ввода формул массива.
Обсудим плюсы и минусы использования формул массивов, какие преимущества они дают
пользователю и чем за это приходится платить.
Мастер Формул
www.PlanetaExcel.ru
Определение и способы ввода формул массива
Мой совет: идите вперед не останавливаясь. Так
всякий раз оказываешься в новом месте.
(Джордж Карлин)
Давайте начнем, как положено, с синхронизации терминологии, чтобы быть уверенными далее, что мы с вами
одинаково понимаем ключевые понятия.
Массив – это набор элементов, состоящий из двух или более элементов. В терминах Excel, массив – это
диапазон, состоящий из нескольких ячеек. Как и диапазоны, массивы могут быть одномерными (строка или
столбец) или двумерными.
Любая обычная формула в Excel принимает на входе один или несколько массивов в виде исходных данных,
обрабатывает их и выдает значение в качестве результата.
Формула массива – это формула в ячейке листа Excel, которая обрабатывает на входе один или несколько
массивов, применяя к каждой ячейке какие-либо действия (математические или логические операторы,
функции и т.д.) и выдавая на выходе тоже массив. Иногда к результирующему массиву в конце тоже
применяется какая-либо функция (суммирование, среднее и т.п.) – тогда на выходе формулы массива будет
одно значение.
Способы ввода формул массива
Существует два основных способа ввести формулу массива:
Ввести формулу в ячейку листа и нажать сочетание Ctrl+Shift+Enter вместо просто Enter. Тогда Excel
воспримет ее уже не как обычную, а именно как формулу массива. Она будет автоматически заключена
в фигурные скобки (вводить их вручную не нужно – это не поможет).
В некоторых случаях можно вести формулу как аргумент функции СУММПРОИЗВ (SUMPRODUCT). Тогда
нажимать Ctrl+Shift+Enter не нужно и фигурных скобок вокруг формулы не появляется, но фактически
формула будет работать уже как формула массива.
Первый способ – это классика. Второй способ не совсем очевиден и не всегда применим, но позволяет
избежать проблем, возникающих, когда начинающие пользователи пытаются изменять (копировать) формулы
массива и, конечно же, не жмут в конце сочетание Ctrl+Shift+Enter.
7
Мастер Формул
www.PlanetaExcel.ru
Классификация формул массива
Условно можно классифицировать все формулы массива на три основных типа.
Тип 1. Массив(ы) на входе, массив на выходе
ФМ, принимающие на входе массивы (диапазоны) ячеек и выдающие на выходе массив (диапазон) ячеек.
Классический пример такой формулы – расчет таблицы умножения (помните обратную сторону обложки своей
тетрадки по математике в школе?):
Для ввода такой формулы нужно сначала выделить сразу все зеленые ячейки (D8:L16), ввести формулу в
первую ячейку диапазона (D5) и затем нажать сочетание Ctrl+Shift+Enter. Формула вычислит результаты
перемножения всех пар чисел и заполнит ими сразу весь выделенный диапазон.
Тип 2. Массив(ы) на входе, ячейка на выходе
Также весьма часто встречаются формулы массива, принимающие на входе массивы (диапазоны) и выдающие
на выходе одну ячейку. Обычно это вариация первого типа, но к результирующему массиву применена какаялибо агрегирующая функция (например, СУММ, СРЗНАЧ, МИН и т.п.):
8
Мастер Формул
www.PlanetaExcel.ru
Тип 3. Массив констант внутри формулы
Массивом может быть не только диапазон ячеек, но и массив констант (чисел и текстовых строк), явно
прописанный прямо в формуле в фигурных скобках:
В приведенном выше примере функция ИНДЕКС выбирает из массива констант дней недели нужный день по
номеру.
Причем в русской версии Excel для разделения элементов в строке используется точка с запятой, а для
разделения строк – двоеточие:
А в английской версии Excel для разделения элементов в строке может использоваться запятая либо обратный
слеш, а для разделения строк – точка с запятой:
Для ввода формул с массивами констант сочетание Ctrl+Shift+Enter нажимать не нужно, достаточно обычного
Enter.
9
Мастер Формул
www.PlanetaExcel.ru
Плюсы и минусы формул массива
Знак «плюс» состоит из двух знаков «минус».
(Наблюдение)
Как всегда, у любой палки два конца. Формулы массива (ФМ) – очень мощный инструмент, но не панацея от
всех проблем.
Плюсы формул массива
Иногда ФМ – единственный способ решить задачу, т.к. в Excel просто нет встроенных функций для
этого. Например, существуют функции СУММЕСЛИ и СРЗНАЧЕСЛИ (SUMIF и COUNTIF), но нет их
аналогов для нахождения максимума и минимума по условию (точнее говоря, эти функции появились
только в последних обновлениях Excel 2016). Простая ФМ эту задачу решает легко в любой версии Excel.
Конечно, есть еще и макросы, ими можно реализовать вообще все, но надо уметь программировать, а
это тема для другой (весьма толстой!) книги.
ФМ могут компактно заменить много промежуточных вычислений и столбцов со вспомогательными
формулами. Попробуйте реализовать ВПР (VLOOKUP), выдающую сразу все найденные значения, а не
только первое встретившееся, например.
ФМ можно использовать как вариант защиты данных, т.к. в ФМ, выдающих на выходе сразу массив
ячеек, нельзя менять отдельные ячейки – только весь массив сразу. Многие начинающие пользователи
не в курсе такого нюанса, и это становится для них непреодолимой преградой.
Минусы формул массива
Сложность понимания и отладки отпугивает на начальном этапе. Но к концу этой книги мы эту
проблему совместными усилиями решим, я надеюсь.
В отличие от обычных формул, Excel запускает пересчет всего массива при изменении хотя бы одной в
нем ячейки. Это плохо отражается на быстродействии – ФМ для обработки больших диапазонов
данных заметно тормозят Excel. Иногда альтернативные способы (вспомогательные столбцы с
обычными формулами, сводные таблицы) оказываются быстрее и эффективнее.
В ФМ, выдающих на выходе массив ячеек, невозможно отредактировать отдельные ячейки массива
– только всю ФМ целиком. Это создает определенные неудобства.
10
Хитрости ввода и отладки
сложных формул
Громоздкость и сложность формул (особенно формул массива) создают определенные трудности при их
написании и отладке. Однако есть несколько простых трюков, которые могут заметно облегчить жизнь в такой
ситуации.
В этой главе мы разберем:
Как быстро вычислить любой выделенный фрагмент любой формулы.
Как разложить сложную формулу на отдельные действия «по шагам».
Как добавить наглядность при вводе запутанных формул с вложенными функциями.
Как упростить себе жизнь, используя «умные таблицы» Excel и именованные диапазоны в своих
проектах.
Как скопировать ячейки, не нарушив формулы в них.
Мастер Формул
www.PlanetaExcel.ru
Вычисление фрагмента формулы
Простота – высшая ступень искусства.
(Брюс Ли)
Это мегапростой и мегаудобный трюк, позволяющий быстро определить правильность формулы или понять,
что именно и как она считает. Пожалуй, для меня он является основным способом отладки сложных формул. И
основным инструментом при попытке разобраться в чужих формульных «кружевах».
Суть его насколько проста – настолько же и гениальна. Если выделить мышью фрагмент любой сложной
формулы…
…и нажать на клавиатуре клавишу F9, то Excel вычислит выделенную часть и покажет ее результат:
Очень важно после нажатия на F9 не забыть потом нажать Ctrl+Z, чтобы вернуть формулу в исходное состояние,
или Esc, чтобы выйти из ячейки без сохранения изменений.
12
Мастер Формул
www.PlanetaExcel.ru
Пошаговое выполнение
Интересно взглянуть «за кулисы» любимого фильма или спектакля? В Excel любую длинную и сложную
формулу можно в специальном окне выполнить медленно и пошагово, наблюдая логику ее работы и
промежуточные значения вложенных функций. Для этого выделите ячейку с формулой и на вкладке Формулы
(Formulas) нажмите кнопку Вычислить формулу (Evaluate Formula). В появившемся диалоговом окне можно
несколько раз, не спеша, жать на кнопку Вычислить (Evaluate) и наблюдать за процессом «изнутри»:
13
Мастер Формул
www.PlanetaExcel.ru
Быстрое выделение всего массива
Если вы имеете дело с формулой массива первого типа (выдающей на выходе массив), то иногда не совсем
очевидно, в каких именно ячейках листа она работает. Чтобы выделить сразу весь массив ячеек, который
участвует в текущей формуле массива, достаточно выделить одну любую ячейку из него и нажать сочетание
клавиш Ctrl+/:
Это позволит быстро понять, с какими именно ячейками на листе работает данная формула, и изменить ее
сразу для всех ячеек, если нужно.
14
Мастер Формул
www.PlanetaExcel.ru
Наглядность сложных формул
Приходилось ли вам когда-нибудь разбираться с чужой сложной, многоэтажной формулой? Или даже со своей
собственной, но сделанной давно? Мои знакомые программисты называют такой случай «холодный код»,
имея в виду, что ты уже толком не можешь вспомнить, что именно и как ты пытался реализовать и почему
именно такую функцию использовал. Разобраться в таком бывает нелегко. Посмотрите, например, вот на такую
«матрешку» из вложенных функций:
Не очень-то понятная с ходу логика, правда?
На самом деле все можно весьма значительно упростить, если сделать следующее:
Увеличить высоту строки формул, потянув за ее нижний край:
В строке формул разнести формулу на несколько отдельных смысловых строк, ставя мигающий курсор
в точку разрыва и используя сочетание клавиш Alt+Enter:
Там же, в строке формул, с помощью пробелов добавить отступы для вложенных функций, наглядно
отобразив смысловые уровни «матрешки»:
15
Мастер Формул
www.PlanetaExcel.ru
Умные таблицы
Если размеры диапазона, с которым должна работать формула, постоянно меняются (например, к нему
периодически дописываются строки с новыми данными), то вместо постоянного отслеживания размеров и
исправления ссылок в формулах можно использовать «умную таблицу».
«Умная таблица» — неофициальный, но уже устаканившийся термин, который я ввел несколько лет назад, чтобы
отличать такие автоподстраивающиеся в размерах таблицы от обычных фиксированных диапазонов, т.к. кто-то
в Microsoft не придумал ничего лучше, как оригинально назвать их Таблицами (Tables). Подозреваю, что детей
этого человека зовут Ребенок1 и Ребенок2.
Для преобразования диапазона в Умную Таблицу нужно выделить ее (иногда достаточно выделить даже одну
любую ячейку в ней) и нажать на вкладке Главная кнопку Форматировать как таблицу (Home – Format as
Table):
Дизайн роли не играет – выбирайте любой из предложенных. Если принципиально не нужно перекрашивать
таблицу (например, у нее уже есть жестко заданное корпоративное оформление), то потом можно будет на
вкладке Конструктор (Design) в группе Стили (Styles) выбрать вариант без перекрашивания.
16
Мастер Формул
www.PlanetaExcel.ru
Главное удобство, которое мы получаем после превращения обычной таблицы в «умную», состоит в
использовании имен таблицы и ее столбцов в формулах. Имя самой таблицы можно посмотреть/изменить на
вкладке Конструктор (Design) в левом верхнем углу:
Чтобы сослаться на нужный элемент умной таблицы можно использовать следующие способы:
Таблица1 – ссылка на все ячейки таблицы с данными, кроме строки заголовка (A2:C7).
Таблица1[#Все] – ссылка на все ячейки таблицы вместе со строкой заголовка (A1:C7).
Таблица1[Доходы] – ссылка на все ячейки столбца Доходы кроме строки заголовка (B2:B7).
Таблица1[[#Все];[Доходы]] – ссылка на все ячейки столбца Доходы вместе со строкой заголовка
(B1:B7).
Таблица1[#Заголовки] – ссылка на строку заголовка (A1:C1).
Если добавить к таблице еще один столбец для расчета прибыли, то в нем в ячейке D2 можно будет
использовать универсальную формулу:
Символ @ в данном контексте означает «возьми из этой же строки» и заставляет Excel автоматически каждый
раз брать значения из соответствующих столбцов текущей строки.
Умные таблицы отлично «дружат» как с обычными, так и с формулами массива, весьма упрощая и делая их
более наглядными и понятными:
17
Мастер Формул
www.PlanetaExcel.ru
Главное же преимущество умных таблиц, как я уже упоминал, это автоподстройка размеров. Т.е. при
добавлении новых строк или столбцов к таблице совершенно не потребуется корректировать наши формулы,
т.к. в них используются имена столбцов, а не жестко зафиксированные в размерах диапазоны.
18
Мастер Формул
www.PlanetaExcel.ru
Именованные диапазоны
Вместо привычных, но громоздких адресов ячеек а-ля морской бой, можно использовать компактные и
понятные именованные диапазоны, т.е. давать ячейкам и диапазонам собственные имена.
Классический способ их сделать — с помощью Диспетчера имен на вкладке Формулы (Formulas – Name
Manager):
Чтобы создать именованный диапазон, нажмите кнопку Создать (New), введите имя диапазона (без пробелов!)
и выделите диапазон в строке Диапазон (Reference):
Область действия именованного диапазона (текущий лист или вся книга) задается в выпадающем списке
Область.
После создания именованные диапазоны можно смело использовать в любых формулах (в т.ч. формулах
массива), например:
=СУММ(Статьи_расходов)
или
=ВПР(A1;Статьи_расходов;2;0)
19
Мастер Формул
www.PlanetaExcel.ru
Именованные диапазоны по определению являются абсолютными, т.е. не сдвигаются при копировании
формул, в которых участвуют. Так, в приведенной выше формуле можно было бы использовать вместо имени
Статьи_расходов адрес $A$1:$B$3 (но обязательно с долларами!).
Еще один (самый быстрый) способ создать именованный диапазон – это выделить исходные ячейки и ввести
имя диапазона вместо адреса в левой части строки формул:
… и затем нажать на клавишу Enter.
Единственный нюанс: если именованный диапазон с таким именем уже существует, то Excel не пересоздает
его заново, а просто выделяет. Для замены или корректировки уже существующего диапазона придется
открывать окно Диспетчера Имен с вкладки Формулы (Formulas – Name Manager).
Также очень удобно, для последующего использования, давать имена целым столбцам (полям) в таблице,
причем это можно делать автоматически. Если выделить диапазон и нажать на вкладке Формулы кнопку
Создать из выделенного (Formulas – Create from Selection), то появится диалоговое окно:
Если включить первый флажок В строке выше (Top row), то Excel автоматически присвоит каждому столбцу
таблицы имя, взяв его из первой строки, т.е. A2:A7 будет называться Месяц, диапазон B2:B7 – Москва и т.д.
Если при этом включить еще опцию В столбце слева (Left column), то аналогичная ситуация произойдет и по
горизонтали: строка B2:D2 получит имя Январь, строка B3:D3 – Февраль и т.д.
Единожды проведя такое именование, можно в будущем свободно использовать имена столбцов в любых
формулах. Например, чтобы найти все апрельские продажи в Самаре, нужна будет формула:
20
Мастер Формул
www.PlanetaExcel.ru
=СУММЕСЛИ(Месяц;»Апрель»;Самара)
Забавный момент состоит в том, что если установить в Excel масштаб просмотра меньше 40% (ползунком в
правом нижем углу или вращая колесико мыши с Ctrl),
то Excel отобразит имена всех диапазонов прямо на листе:
Красиво.
И еще один не совсем очевидный с ходу трюк. Если создать именованный диапазон в Диспетчере Имен, но в
поле Диапазон ввести не адрес, а значение (число, текст или формулу), то мы создадим именованную
константу — имя, которое никуда не ссылается, но подразумевает под собой определенное значение:
Впоследствии можно пользоваться такой константой как переменной в любых формулах и расчетах:
=Цена*(1–НДС)
21
Мастер Формул
www.PlanetaExcel.ru
Подобным образом удобно задавать константы, которые редко меняются, но часто встречаются в ваших
отчетах (ставки налогов и сборов, банковские проценты и т.д.).
22
Мастер Формул
www.PlanetaExcel.ru
Точное копирование формул без сдвига ссылок
Предположим, что у нас есть вот такая несложная таблица, в которой подсчитываются суммы по каждому
месяцу в двух городах, а затем итог переводится в евро по курсу из ячейки J2.
Проблема в том, что если скопировать диапазон D2:D8 с формулами куда-нибудь в другое место на лист, то
Microsoft Excel автоматически скорректирует ссылки в этих формулах, сдвинув их на новое место и перестав
считать:
Нам же хотелось скопировать диапазон с формулами так, чтобы формулы не изменились и остались теми же
самыми, сохранив результаты расчета.
Чтобы формулы при копировании не менялись, надо (временно) их деактивировать — сделать так, чтобы Excel
перестал их рассматривать как формулы. Это можно сделать, заменив на время копирования знак «равно» (=)
на любой другой символ, не встречающийся обычно в формулах, например, на «решетку» (#) или на пару
амперсандов (&&). Для этого:
1. Выделяем диапазон с формулами (в нашем примере D2:D8).
2. Жмем Ctrl+H на клавиатуре или на вкладке Главная – Найти и выделить – Заменить (Home – Find &
Select – Replace):
23
Мастер Формул
www.PlanetaExcel.ru
3. В появившемся диалоговом окне вводим что ищем и на что заменяем и в Параметрах (Options) не
забываем уточнить Область поиска – Формулы. Жмем Заменить все (Replace All).
4. Копируем получившийся диапазон с деактивированными формулами в нужное место:
5. Заменяем # на = обратно с помощью того же окна, возвращая функциональность формулам.
24
Выборочный
подсчет по условиям
Если вдуматься, то любой отчет практически в любой сфере бизнеса – это, по сути, выборочное суммирование
или вычисления по условию. Microsoft Excel имеет много эффективных инструментов, позволяющих подобные
операции делать автоматически: быстро, без ошибок и с автоматическим обновлением результатов при
изменении исходных данных.
В этой главе мы разберем:
Как производить вычисления (сумму, среднее, количество) по одному или нескольким сложным
условиям с помощью функций СУММЕСЛИ, СУММЕСЛИМН, БДСУММ и формул массива.
Как вычислять по заданному «окну» (диапазону) на листе, если размеры «окна» заранее не известны.
Как суммировать только видимые ячейки или ячейки через одну, две, три и т.д.
Как суммировать ячейки по цвету без использования макросов с помощью недокументированных
возможностей Microsoft Excel.
Мастер Формул
www.PlanetaExcel.ru
Среднее без учета нулей и ошибок
Исходные данные, с которыми нам приходится работать, часто несовершенны — «человеческий фактор» дает о
себе знать. Одна ячейка с ошибкой или лишнее пустое или нулевое значение часто приводят к возникновению,
по цепочке, ошибок в итоговых строках, столбцах, а затем и во всей таблице.
Так, например, если нам необходимо рассчитать средний доход с клиента, то пустая или нулевая ячейка с
количеством клиентов будет приводить к ошибкам в строках и невозможности вычислить общее итоговое
среднее по всей таблице – мы получим ошибки деления на ноль:
Для перехвата ошибки можно воспользоваться функцией ЕСЛИОШИБКА (IFERROR), которая заменит ошибку на
пустое значение (пустые кавычки, а не ноль, из-за которого «просядет» общее среднее):
26
Мастер Формул
www.PlanetaExcel.ru
Выборочное суммирование одному условию
Если нужно выборочно просуммировать данные из таблицы только по одному условию, то задача легко
решается при помощи встроенной функции Excel СУММЕСЛИ (SUMIF) из категории Математические
(Math&Trig). Предположим, нам надо просуммировать все сделки по Самаре в представленной таблице:
У функции СУММЕСЛИ всего три аргумента:
Диапазон проверяемых значений (столбец с названиями городов – A2:A12).
Критерий – что мы ищем, т.е. Самара из D2.
Диапазон суммирования (столбец с суммами, которые хотим сложить).
Внимательный читатель уже заметил, наверное, что в 11-й строке таблицы нас подстерегают «грабли» — город
записан с «г.» Чтобы обойти подобные проблемы, можно использовать спецсимволы подстановки:
* (звездочка) – подменяет собой любое количество любых символов
? (вопросительный знак) – подменяет один любой символ
Таким образом, чтобы учитывать любой вариант написания Самары, нужно приклеить к ячейке с критерием по
одной звездочке перед и после с помощью символа сцепки (&):
27
Мастер Формул
www.PlanetaExcel.ru
При всей внешней простоте и прозрачности у функции СУММЕСЛИ есть и «темная сторона» — в некоторых
случаях она может вычислять сумму по условию неправильно. Для примера взгляните вот на такой случай:
Разница с предыдущим решением в том, что в качестве диапазона проверки выделен уже весь столбец (A:A), а
не конкретный диапазон A2:A12, т.е. количество ячеек в проверяемом и суммируемом диапазонах уже не
равно друг другу. Странно то, что в такой ситуации Excel выдает не ошибку (что было бы логично и объяснимо),
а продолжает вычисления, отображая некорректный результат.
Резюме: будьте осторожны с выделением диапазонов для функции СУММЕСЛИ (SUMIF).
28
Мастер Формул
www.PlanetaExcel.ru
Выборочное суммирование по нескольким условиям
Если при вычислении суммы нужно проверять не одно, а сразу несколько условий, то функция СУММЕСЛИ
(SUMIF) и ей подобные, к сожалению, не подойдут, т.к. умеют учитывать только один критерий. Давайте
рассмотрим другие способы решения такой задачи.
Способ 1. Функция СУММЕСЛИМН
Начиная с версии Excel 2007 Microsoft добавила в Excel «старших сестер» функциям выборочного подсчета
СУММЕСЛИ, СЧЁТЕСЛИ и СРЗНАЧЕСЛИ – функции СУММЕСЛИМН, СЧЁТЕСЛИМН и СРЗНАЧЕСЛИМН. В
английском варианте эти функции выглядят как SUMIFS, COUNTIFS и AVERAGEIFS, т.е. имеют на конце букву -S,
обозначающую в английском языке множественное число. В русской версии эту роль играет -МН.
Эти функции отличаются от классических тем, что умеют проверять и учитывать при вычислениях уже не одно,
а сразу несколько условий (если точно, то 127 включительно – хватит на все случаи жизни с большим запасом).
Так, например, если нам нужно сложить все сделки менеджера Кузнецова по Самаре, то можно применить
нашу функцию СУММЕСЛИМН (SUMIFS) следующим образом:
Как видно из предыдущего скриншота, первым аргументом этой функции идет Диапазон_суммирования, т.е.
те ячейки, которые мы фактически хотим складывать. Затем аргументы идут парами – диапазоны проверки и
условия, которые в них должны выполняться. Обратите внимание на полосу прокрутки справа – она позволит
добавить третью пару диапазон — условие, четвертую и т.д., если нужно.
Хорошим примером использования функции СУММЕСЛИ с двумя условиями является создание с ее помощью
упрощенного аналога сводной таблицы:
29
Мастер Формул
www.PlanetaExcel.ru
Достаточно ввести одну функцию СУММЕСЛИ в ячейку H4 и протянуть ее на весь диапазон H4:J8, чтобы все
вычислить. Только не забудьте правильно закрепить диапазоны в формуле знаками $.
Ну и на больших таблицах, конечно, такой способ может ощутимо тормозить – тогда лучше все-таки
использовать сводные таблицы, поскольку они пересчитываются не в реальном времени, а только по запросу
пользователя.
Способ 2. Функция баз данных БДСУММ
Если условий, по которым нужно провести выборочное суммирование, очень много, то можно воспользоваться
другим подходом – функцией баз данных БДСУММ (DSUM). Единственным минусом в данном случае будет
необходимость заранее создать мини-таблицу с условиями:
Первый аргумент этой функции – таблица с исходными данными, второй – имя суммируемого поля (столбца),
третий – таблица с условиями.
Обратите внимание на следующие нюансы:
Шапка таблицы условий может не совпадать один в один с шапкой таблицы данных, но названия
столбцов должны быть абсолютно идентичны.
Допускается дублирование столбцов (см. столбцы Дата), если по ним нужно задать больше одного
условия.
Условия в ячейках одной строки воспринимаются как связанные логическим И (AND). Например, в
первой строке мы ищем сумму всех сделок Кузнецова в Москве, а во второй – всех сделок по Самаре в
первом квартале 2014 года.
30
Мастер Формул
www.PlanetaExcel.ru
Условия, находящиеся в разных строках, Excel воспринимает как независимые, т.е. связанные
логическим ИЛИ (OR). Таким образом, на выходе мы получим сумму всех сделок по каждой из строк:
Результат = (Все сделки Кузнецова в Москве) + (Все сделки в 1 квартале 2014 по Самаре) + (Все сделки
Пупкина на сумму больше 1 млн).
Способ 3. Формула массива
Для суммирования по нескольким условиям также можно использовать хитрую формулу массива с функцией
СУММПРОИЗВ (SUMPRODUCT) и двойным бинарным отрицанием.
Эта формула проверяет условия с помощью двух выражений (A5:A30=I14) и (B5:B30=K14), каждое из которых
на выходе выдает набор значений ИСТИНА или ЛОЖЬ для каждой из проверяемых ячеек. Два знака «минус»
перед каждой проверкой в скобках по науке мудрено называются «двойным бинарным отрицанием» и делают,
по факту, очень простую вещь – дважды умножают содержимое скобок на -1. Такое умножение нужно для того,
чтобы конвертировать логические значения ИСТИНА и ЛОЖЬ в 1 и 0 и получить из наших проверок в скобках
наборы нулей и единиц. Это будет хорошо видно, если выделить по очереди оба условия проверки и нажать
на клавишу F9:
Затем эти наборы перемножаются функцией СУММПРОИЗВ друг на друга и на массив суммируемых значений
(столбец Выручка). Таким образом, после всех этих операций «выживут» только те суммы, где оба условия дали
ИСТИНУ, т.е. 1. Если хоть одно условие не выполнилось, то значение ЛОЖЬ по нему, превратившееся после
двойного бинарного отрицания в ноль, обратит в ноль и сумму по этой строке.
31
Мастер Формул
www.PlanetaExcel.ru
Подсчет количества и суммы по условию с учетом регистра
В обычном режиме функции СУММЕСЛИ, СЧЁТЕСЛИ и СРЗНАЧЕСЛИ и их братья-близнецы с -МН на конце
нечувствительны к регистру, т.е. не различают строчные и прописные буквы. Если же необходимо выборочно
подсчитывать с учетом регистра, то вместо них придется применить другую формулу:
Формула в ячейке F2 подсчитывает количество ячеек в столбце A1:A8, содержащих слово Планета (причем
именно с большой буквы, остальные – маленькие). Давайте разберем логику работы этой формулы
поподробнее:
Функция НАЙТИ(что_искать; где_искать) ищет заданную строку внутри другой строки и выдает порядковый
номер символа, начиная с которого обнаружено вхождение. Так, например:
=НАЙТИ(«трон»;»электронный»)
…выдаст в качестве результата число 5, т.к. слово «трон» встречается в слове «электронный» начиная с 5-й
позиции. Для нас в данном случае критически важен один аспект работы этой функции – она чувствительна к
регистру, в отличие от ее аналога – функции ПОИСК. В случае если искомый текст не найден, функция выдает
на выходе ошибку #ЗНАЧ! (#VALUE!). Если выделить фрагмент нашей формулы с функцией НАЙТИ и нажать на
клавиатуре F9, то мы наглядно увидим результат ее работы:
Затем мы используем функцию ЕЧИСЛО (ISNUMBER), которая для чисел выдает в качестве результата
логическое значение ИСТИНА, а для ошибок – соответственно ЛОЖЬ:
32
Мастер Формул
www.PlanetaExcel.ru
Чтобы превратить логические значения ЛОЖЬ и ИСТИНА в удобные для подсчета числа 1 и 0 соответственно,
используем двойное бинарное отрицание или, говоря по-простому, двойное умножение на -1:
И, наконец, используем функцию СУММПРОИЗВ (SUMPRODUCT), которая выполняет двойную функцию: вопервых, суммирует полученные вхождения-единички; и, во-вторых, позволяет ввести нашу формулу без
сочетания Ctrl+Shift+Enter, хотя она, по сути, является формулой массива.
Если же необходимо не просто подсчитать количество вхождений, а просуммировать какие-либо данные по
условию с учетом регистра, то к нашей функции СУММПРОИЗВ просто добавится еще один аргумент – диапазон
суммируемых значений:
33
Мастер Формул
www.PlanetaExcel.ru
Суммирование ячеек через одну, две, три и т.д.
При особо изощренном дизайне таблиц периодически возникает необходимость выполнения математических
действий над ячейками, расположенными не одним монолитным массивом, а через одну, две и т.д.
Если решать проблему «в лоб», то придется вводить длинную формулу с перебором всех ячеек, т.к. сразу весь
диапазон одним движением выделить не получится:
Также можно попробовать применить штатную функцию СУММЕСЛИ (SUMIF), которая суммирует ячейки по
условию:
Первый аргумент этой функции — диапазон проверяемых ячеек, второй — критерий отбора (слово «Выручка»),
третий — диапазон ячеек с числами для суммирования.
Если же удобного отдельного столбца с признаком для выборочного суммирования с помощью встроенной
функции СУММЕСЛИ (SUMIF) нет или значения в нем непостоянные (где-то «Выручка», а где-то «Revenue» и
34
Мастер Формул
www.PlanetaExcel.ru
т.д.), то можно написать формулу массива, которая будет проверять номер строки для каждой ячейки и
суммировать только те из них, где номер четный, т.е. кратен двум.
Давайте подробно разберем формулу в G2. «Читать» эту формулу лучше из середины наружу:
Функция СТРОКА (ROW) выдает номер строки для каждой по очереди ячейки из диапазона B2:B15.
Функция ОСТАТ (MOD) вычисляет остаток от деления каждого полученного номера строки на 2.
Функция ЕСЛИ (IF) проверяет остаток, и если он равен нулю (т.е. номер строки четный, кратен 2), то
выводит содержимое очередной ячейки или, в противном случае, не выводит ничего.
И, наконец, функция СУММ (SUM) суммирует весь набор значений, которые выдает ЕСЛИ, т.е.
суммирует каждое 2-е число в диапазоне.
Если же нужно суммировать каждую третью, четвертую и т.д. ячейки, то изменяется только делитель номера
строки:
35
Мастер Формул
www.PlanetaExcel.ru
В качестве альтернативы можно использовать функцию СУММПРОИЗВ (SUMPRODUCT), которая хоть и
вводится уже как обычная функция (т.е. обходится без Ctrl+Shift+Enter), но работает по той же логике формулы
массива:
Или в англоязычном варианте:
=SUMPRODUCT(—(MOD(ROW(C5:C20);4=1);C5:C20)
Эта функция перемножает поэлементно два массива:
Первый массив: —(ОСТАТ(СТРОКА(C5:C20);4)=1) – это результаты проверки остатков от деления
номеров строк ячеек на 4. Чтобы преобразовать логические значения ИСТИНА и ЛОЖЬ, получившиеся
в результате проверки формулой ОСТАТ(СТРОКА(C5:C20);4)=1, в единицы и нули, используется двойной
минус – он равносилен двукратному умножению на -1, т.е. не меняет значения, но конвертирует
ИСТИНУ в 1, а ЛОЖЬ в 0. Если выделить первый аргумент функции СУММПРОИЗВ в строке формул:
… и нажать клавишу F9, то это станет хорошо видно:
Второй массив: C5:C20 – все значения из столбца Сумма.
Эти два массива попарно перемножаются друг на друга и все полученные произведения складываются. Таким
образом, на выходе суммируются только строки с нужными номерами.
Со столбцами ситуация совершенно аналогичная, но нужно использовать функцию СТОЛБЕЦ (COLUMN), а не
СТРОКА (ROW):
36
Мастер Формул
www.PlanetaExcel.ru
Суммирование ячеек по диагонали
Эта ситуация возникала в моей практике не так часто, но хотелось ее описать в этой книге, потому что она очень
наглядно иллюстрирует мощь формул массива и их внутреннюю логику при обработке данных.
Предположим, что у нас есть квадратный массив 10 на 10 ячеек, заполненный числами, и нам необходимо
просуммировать ячейки, находящиеся на диагонали от левого верхнего до правого нижнего угла. Можно
красиво решить подобную задачу с помощью изящной формулы массива:
В англоязычном варианте это будет соответственно:
{=SUM(A1:J10*(ROW(A1:J10)=COLUMN(A1:J10)))}
Главная идея этой формулы в том, что у нужных нам ячеек номера строк и столбцов совпадают. Поэтому с
помощью выражения (СТРОКА(A1:J10)=СТОЛБЕЦ(A1:J10) мы, по сути, последовательно проверяем каждую из
100 ячеек на предмет такого совпадения. В результате получим массив из 100 значений ИСТИНА или ЛОЖЬ, в
случае совпадения или несовпадения соответственно.
А затем этот массив умножается на исходный диапазон, причем ИСТИНУ Excel интерпретирует как 1, а ЛОЖЬ
как 0, так что остаются в итоге только числа с диагонали, которые потом и суммирует функция СУММ.
37
Мастер Формул
www.PlanetaExcel.ru
Легко сообразить, что если таблица расположена в другом месте листа (не начиная с А1), то необходимо будет
всего лишь ввести поправку на отступ в виде количества пустых строк и столбцов от начала листа до первой
ячейки с данными:
38
Мастер Формул
www.PlanetaExcel.ru
Суммирование по «окну» на листе
Иногда возникает необходимость просуммировать значения из определенного диапазона в таблице – своего
рода «окна» заданного размера, расположенного в определенном месте на листе.
Рассмотрим для примера калькулятор расчета стоимости проезда в пригородной электричке:
Предполагается, что пользователь выбирает из выпадающих списков в ячейках G6 и G8 станции отправления и
назначения, а в ячейке G10 автоматически должна вычисляться стоимость проезда. Другими словами, нужно
рассчитать стоимость проезда, просуммировав числа в «окне» В8:В11, соответствующем выбранным
перегонам между станциями. Для решения этой задачи, кроме банальной СУММ, нам потребуются всего две
функции – ПОИСКПОЗ (MATCH) и СМЕЩ (OFFSET).
Сначала определим порядковые номера строк для станций отправления и назначения с помощью функций
ПОИСКПОЗ (MATCH):
Теперь используем наш главный козырь – функцию СМЕЩ (OFFSET), которая умеет выдавать ссылку на
заданный диапазон «окна». У этой функции пять аргументов:
1.
2.
3.
4.
Стартовая ячейка (нужна как точка отсчета – обычно берут первую ячейку списка).
Сдвиг окна вниз на А строк.
Сдвиг вправо на B столбцов.
Высота диапазона окна – C.
39
Мастер Формул
www.PlanetaExcel.ru
5. Ширина диапазона окна – D.
Если брать в качестве стартовой ячейки A4, то наше окно, выделенное на предыдущей иллюстрации, сдвинуто
вниз на 4 строки, вправо – на 1 столбец и имеет размеры 4 строки × 1 столбец.
Таким образом, финальная формула для расчета стоимости будет выглядеть как:
Или в англоязычном варианте:
=SUM(OFFSET(A4;H6+1;1;H8-H6;1))
Само собой, все вышеперечисленное можно уложить и в одну формулу, не используя промежуточных
вычислений в ячейках H6 и H8, а вложив функции ПОИСКПОЗ прямо в СМЕЩ (я использовал сочетание
Alt+Enter для переноса аргументов на разные строки для наглядности):
=СУММ(СМЕЩ(A4;
ПОИСКПОЗ(G6;A5:A51;0)+1;
1;
ПОИСКПОЗ(G8;A5:A51;0)-ПОИСКПОЗ(G6;A5:A51;0);
1))
40
Мастер Формул
www.PlanetaExcel.ru
Суммирование только видимых ячеек
Если у нас имеется таблица, по которой должны считаться промежуточные или общие итоги, то важную роль
играет, какой именно функцией они вычисляются, т.к. в таблице могут быть:
Включены фильтры – надо ли учитывать в итогах только отфильтрованные данные или брать все?
Скрыты некоторые строки – то же самое: нужно ли считать в итогах только видимые строки или все
имеющиеся?
Свернуты сгруппированные строки – аналогично.
Промежуточные итоги внутри таблицы – если в таблице уже есть внутренние итоги, а мы считаем
общий итог – не получится ли, что мы просуммируем уже имеющиеся итоги вместе с данными, получив
задвоенные результаты?
Ошибки в формулах – как повлияет на итоги наличие в таблице ошибок (#Н/Д, #ЗНАЧ, #ДЕЛ/0 и других)?
Некоторые из приведенных ниже способов чувствительны к этим факторам, некоторые – нет. Это нужно
учитывать при выполнении вычислений.
СУММ (SUM) – тупо суммирует все в выделенном диапазоне без разбора, т.е. и скрытые строки в том числе.
Если хотя бы в одной ячейке есть любая ошибка – перестает считать и тоже выдает ошибку на выходе.
ПРОМЕЖУТОЧНЫЕ.ИТОГИ (SUBTOTALS) с кодом 9 – суммирует все видимые после фильтра ячейки. Игнорирует
другие функции ПРОМЕЖУТОЧНЫЕ.ИТОГИ, которые могут считать внутренние подытоги в исходном
диапазоне.
ПРОМЕЖУТОЧНЫЕ.ИТОГИ (SUBTOTALS) с кодом 109 – суммирует все видимые после фильтра и группировки
(или скрытия) ячейки. Также игнорирует функции ПРОМЕЖУТОЧНЫЕ.ИТОГИ, которые могут считать
внутренние подытоги в исходном диапазоне.
АГРЕГАТ (AGREGATE) – самая мощная функция, появившаяся в Office 2010, имеет множество опций по
суммированию, которые можно указать вторым аргументом:
41
Мастер Формул
www.PlanetaExcel.ru
42
Мастер Формул
www.PlanetaExcel.ru
Суммирование ячеек по цвету, шрифту, формату и т.д.
Фильтровать и сортировать ячейки по цвету Microsoft Excel научился с 2007 версии, а вот суммировать до сих
пор (2016 год, на момент написания этой книги) не умеет. Обычно этот недостаток восполняют с помощью
нехитрых макросов, но если их использование по каким-либо причинам нежелательно, то можно попробовать
обойтись и без них – только с помощью формул.
Основная трудность здесь в том, что в Excel изначально не существует инструмента или функции для
определения цвета заливки ячеек. Если бы мы смогли определить код цвета заливки нужных нам ячеек, то
дальнейший подсчет свелся бы к банальному суммированию по условию с помощью уже знакомых нам
функций СУММЕСЛИ (SUMIF), СУММЕСЛИМН (SUMIFS) и им подобных, которые мы подробно разбирали в
предыдущих главах.
Так что задача сводится, по сути, к созданию такой функции.
Оживляем призрака
Откройте вкладку Формулы (Formulas) и нажмите кнопку Диспетчер имен (Name Manager). Обычно при
помощи этого диалогового окна создают и редактируют именованные диапазоны, которые затем можно
использовать в формулах вместо обычных ссылок на ячейки в стиле «морской бой». Создайте новый диапазон,
введите его имя (например, ЦветЯчейки) и вот такую формулу в поле Диапазон (Reference):
=ПОЛУЧИТЬ.ЯЧЕЙКУ(63;ДВССЫЛ(«RC[-1]»;0))
В английском варианте это будет соответственно:
=GET.CELL(63;INDIRECT(«RC[-1]»;0))
Несмотря на краткость, в этой формуле скрыто много нюансов. Давайте разберем ее по кусочкам:
Функция ПОЛУЧИТЬ.ЯЧЕЙКУ (GET.CELL) – это очень древняя функция, появившаяся в Excel в начале девяностых
годов, когда для создания макросов еще не использовали Visual Basic, а делали это на специальных листах (XL4
macro sheets). На данный момент в Excel уже не осталось упоминаний об этой и других подобных функциях в
справке или Мастере Функций, но, на самом деле, Excel все еще умеет с ними работать (для обеспечения
обратной совместимости). Этим мы и воспользуемся.
В общем, эта функция выдает информацию о состоянии заданной ячейки и имеет следующий синтаксис:
=ПОЛУЧИТЬ.ЯЧЕЙКУ(код_сведений; адрес_ячейки)
Где первый аргумент – это число (1-66), которое определяет, какую именно информацию о ячейке нам нужно
получить. Из наиболее полезных значений для него можно упомянуть:
Код
6
7
Параметр ячейки
Формула ячейки в текстовом виде
Числовой формат ячейки в виде текста, например «Основной» или «ДД.ММ.ГГГГ»
43
Мастер Формул
9-12
14
17
18
19
20
21
22
28
29
33
53
62
63
66
www.PlanetaExcel.ru
Тип линии, используемой для обрамления ячейки слева (9), справа (10), сверху (11) и
снизу (12)
Защищенная ячейка или нет
Высота ячейки (в пунктах)
Имя шрифта, применяемого для текста в ячейке
Размер шрифта (в пунктах)
Выделен ли текст в ячейке жирным
Выделен ли текст в ячейке курсивом
Подчеркнут ли текст в ячейке
Уровень вложенности при группировке строк
Уровень вложенности при группировке столбцов
Включен ли в ячейке перенос по словам
Содержимое ячейки, как оно выглядит на экране (с учетом разрядности и числового
формата)
Имя текущей книги и листа в виде «[Книга1.xlsx]Лист1»
Код цвета заливки ячейки
Имя текущей книги с расширением
Как видно из приведенной выше таблицы, наш выбор тут 63 – код цвета заливки.
Второй аргумент функции ПОЛУЧИТЬ.ЯЧЕЙКУ – это адрес ячейки, которую мы проверяем. Само собой, здесь
можно не изощряться, а задать ссылку жестко, в виде стандартного адреса (A1, E4 и т.п.), но нам хотелось бы
получить универсальный инструмент, способный определять цвет любой ячейки. Поэтому вместо адреса здесь
используется функция ДВССЫЛ (INDIRECT), превращающая текст своего первого аргумента в живую ссылку. В
режиме R1C1, когда столбцы на листе обозначаются не буквами, а цифрами, ссылка на соседнюю слева ячейку
всегда выглядит как:
Именно этот вариант мы и используем. Второй аргумент функции ДВССЫЛ, равный нулю, как раз уточняет, что
адрес задан в режиме R1C1, а не в привычном «морском бое».
Таким образом, на выходе мы получаем формулу, которая определяет цвет заливки ячейки слева от текущей.
Применение на практике
Использовать созданный инструмент очень просто. Выделите ячейку справа от залитой цветом и введите в нее
знак «равно» и имя нашей формулы, а затем скопируйте ячейку вниз:
44
Мастер Формул
www.PlanetaExcel.ru
Теперь с помощью стандартных функций выборочного подсчета можно легко вычислить сумму, среднее или
количество ячеек с определенным цветом:
Естественно, подобным же образом можно подсчитывать ячейки не только по цвету заливки, но и по числовому
формату, имени шрифта, выделению жирным и т.п., подставляя в нашу формулу вместо 63 другие коды
параметров ячейки.
Ложка дегтя
У созданной нами формулы есть, к сожалению, и несколько заметных недостатков:
В старых версиях Excel (до 2007 года) было только 56 цветов, поэтому наша функция умеет определять
только их. В последних версиях Excel количество возможных оттенков заливки превышает 4 млн,
поэтому наша функция может определять их не всегда корректно, например:
45
Мастер Формул
www.PlanetaExcel.ru
Хорошо видно, что ячейки A3 и A4 залиты разным цветом, но наша функция этого, к сожалению, не
определяет. Вывод: если планируете использовать этот инструмент для суммирования по цвету, то
лучше применять только базовую палитру цветов для заливки (лучше посмотреть ее «вживую» в
оригинальных
цветах
в
файле-примере
к
этой
главе):
Microsoft Excel не считает изменение цвета ячейки изменением данных и, как следствие, не запускает
пересчет формул на листе. Поэтому, например, перекрашивание ячеек в столбце A не приведет к
автоматическому изменению кодов заливки в столбце B. Для этого нужно либо ввести нашу формулу
еще раз, либо нажать на клавиатуре сочетание клавиш Ctlr+Alt+F9, запускающее принудительный
пересчет листа.
Не забудьте в конце сохранить документ в формате с поддержкой макросов (XLSM), т.к. хоть в нашей
книге и нет ни строчки кода на Visual Basic, но для Excel это уже формально макрофункция.
46
Мастер Формул
www.PlanetaExcel.ru
Суммирование чисел, написанных через дробь
Это одна из реальных задач, с которой мне пришлось столкнуться недавно. Врачи в одной небольшой частной
клинике вели учет пациентов вот в такой таблице:
Как видно из картинки, число детских и взрослых пациентов записывалось в одну ячейку через дробь, а чтобы
Excel не преобразовывал такие дроби в дату (3/5 в 3 мая и т.п.), для ячеек диапазона B3:F5 установили
текстовый формат.
Если оставить в стороне вопрос адекватности таблицы, то главной задачей становится подсчитать сумму чисел
до и после дроби, т.е. общее число детей и взрослых среди пациентов. Сделать это, например, для ячейки G2
можно с помощью вот такой формулы массива:
=СУММПРОИЗВ(—ЛЕВСИМВ(B3:F3;ПОИСК(«/»;B3:F3)-1))
В английской версии эта формула будет выглядеть как:
=SUMPRODUCT(—LEFT(B3:F3;SEARCH(«/»;B3:F3)-1))
Давайте разберем ее логику:
1. ПОИСК(«/»;B3:F3) – ищет в каждой ячейке положение символа дроби.
2. ЛЕВСИМВ(B3:F3;ПОИСК(«/»;B3:F3)-1) – берет из каждой ячейки слева символы от начала строки до
символа дроби.
3. Чтобы преобразовать полученные символы в число, перед функцией ЛЕВСИМВ стоят два минуса. Это
равносильно двойному умножению на -1, что не меняет результат, но заставляет относиться к нему
Excel как к числу (ведь умножать можно только числа!).
4. И, наконец, функция СУММПРОИЗВ суммирует получившиеся числа. В принципе, можно было бы
использовать и обычное суммирование (т.е. функцию СУММ), но тогда пришлось бы вводить нашу
формулу с помощью сочетания клавиш Ctrl+Shift+Enter.
Для подсчета сумм чисел после дроби (взрослых) можно использовать похожую конструкцию, заменив только
функцию ЛЕВСИМВ (LEFT) на ПСТР (MID) для извлечения данных начиная со следующего символа после дроби
и до конца строки:
47
Поиск и
подстановка
Искать нужные значения по одному или нескольким (иногда очень сложным) критериям и подставлять
найденное потом в другие таблицы – очень частая задача при анализе данных в Excel. В базовом варианте она
решается известной функцией ВПР (VLOOKUP), но в очень многих чуть более сложных случаях эта функция
пасует и приходится искать решение другими способами.
В этой главе мы разберем:
12 секретов использования «легендарной» функции ВПР (VLOOKUP).
Как реализовать двумерный поиск на листе и трехмерный поиск сразу по нескольким листам или
таблицам.
Как находить не только первое встретившееся значение при нескольких совпадениях.
Как искать ближайшее (наименьшее, наибольшее) при неточном поиске.
Как искать наиболее похожий текст при ошибках и опечатках в исходных данных.
Мастер Формул
www.PlanetaExcel.ru
Секреты функции ВПР (VLOOKUP)
Секреты – это та роскошь, которую мы себе
больше позволить не можем.
(Дэн Браун)
Функция ВПР (VLOOKUP), наверное, одна из самых известных функций Excel. При правильном применении она
способна сэкономить вам многие часы и миллионы нервных клеток. Если вы не использовали ее раньше, то эта
глава станет настоящим откровением. Если уже применяли, то должны были замечать, то функция ВПР, порой,
ведет себя весьма капризно, странно и неочевидно. Давайте разберем все ее явные и скрытые возможности.
Стандартное использование
В базовом варианте эта функция предназначена для поиска и подстановки данных из одной таблицы в другую
по совпадению заданного параметра. У нее четыре аргумента:
=ВПР(Искомое_значение; Массив; Номер_столбца; Интервальный_просмотр)
… где:
Искомое_значение – то, что мы ищем.
Массив – диапазон ячеек, в первом столбце которого мы ищем искомое значение.
Номер_столбца в массиве, из которого мы извлекаем результат.
Интервальный_просмотр – точный (0) или приблизительный (1) поиск нужно использовать.
Так, например, эта функция в ячейке B2 ищет название товара (из ячейки А2) в прайс-листе (диапазон D2:E7) и
затем выдает из второго столбца (третий аргумент функции =2) прайс-листа найденную там в той же строке
цену (56):
Обратите внимание на абсолютные ссылки во втором аргументе функции (массиве). Они нужны, чтобы ссылка
на прайс не соскользнула при копировании функции ВПР с первой ячейки B2 вниз.
Символы подстановки
При поиске с помощью ВПР можно использовать стандартные символы подстановки, как и в некоторых других
функциях Excel, например СУММЕСЛИ, СЧЕТЕСЛИ и т.д.
* (звездочка) – любое количество любых символов (в том числе и их полное отсутствие)
? (вопросительный знак) – один любой символ
Так, например, если мы хотим искать в прайс-листе не точное совпадение, а те строки, которые просто
содержат нужный нам текст, то можно подклеить к искомому значению (A2) символы звездочки перед и после
с помощью оператора склеивания (&):
49
Мастер Формул
www.PlanetaExcel.ru
Само собой, подобный вариант предполагает отсутствие повторений: если в правой таблице есть, например,
несколько разных типов вишни, то такая функция ВПР с символами подстановки выдаст просто первое
совпадение, т.е. первую встретившуюся вишню.
Интервальный просмотр
Последний четвертый аргумент функции ВПР называется Интервальный просмотр (Range Lookup) и позволяет
задать режим поиска, в котором ВПР должна работать – точный или приблизительный. Это логический
параметр, т.е. он может принимать два возможных значения:
0 или ЛОЖЬ – интервальный просмотр выключен (поиск точного совпадения)
1 или ИСТИНА – интервальный просмотр включен (поиск приблизительного совпадения)
В подавляющем большинстве случаев используется точный поиск: если в прайс-листе найдется точное
совпадение названия товара, то функция выведет его цену. В противном случае мы получим ошибку #Н/Д:
Интервальный просмотр используется гораздо реже – обычно в двух типовых случаях.
Во-первых, при поиске не текста, а чисел ВПР в режиме приблизительного поиска находит ближайшее
наименьшее число. Это очень удобно при проверке попадания исходного числового значения в один из
нескольких интервалов. Например, когда процент скидки ступенчато зависит от количества купленного товара:
50
Мастер Формул
www.PlanetaExcel.ru
Точно так же можно приблизительно искать и даты, т.к. они в Microsoft Excel представляют собой числа.
Во-вторых, ВПР в режиме интервального просмотра ищет гораздо быстрее – в зависимости от конструкции
таблиц ускорение может составлять 10 и более раз! Поэтому при связывании большого количества крупных
таблиц имеет смысл включать Интервальный просмотр = 1.
При этом важно помнить два щекотливых момента:
При использовании приблизительного поиска таблица, в которой производится поиск (прайс), должна
быть обязательно отсортирована по возрастанию по столбцу наименования. Если вы используете
точный поиск, то сортировка роли не играет, а для интервального просмотра она принципиальна.
Если вы ищете не числа, а текст и искомое значение отсутствует в таблице, то при точном поиске ВПР
выдаст просто ошибку #Н/Д, а при приблизительном – значение фактически «с потолка», т.к. будет
искать товар с ближайшими наименьшими кодами символов из его названия.
Перехват ошибок #Н/Д
Если функция ВПР не находит точного совпадения или искомого объекта просто пока нет в таблице, то она
выдает ошибку #Н/Д. Иногда это не очень удобно, т.к. такие ошибки потом порождают ошибки в итогах,
попадают в распечатку и т.д. Можно легко перехватить ошибки и заменить их на любое другое подходящее
значение (например, на ноль) с помощью функции ЕСЛИОШИБКА (IFERROR):
У этой функции два аргумента:
1. Проверяемая формула, выражение или ячейка (наша ВПР в данном случае).
2. Значение, которое надо вывести, если в первом аргументе возникает любая ошибка (0). Если ошибки
не будет, то функция просто выведет результат работы ВПР.
51
Мастер Формул
www.PlanetaExcel.ru
Левый ВПР
Как многим известно, функция ВПР (VLOOKUP) может выдавать в качестве результата значения, которые
находятся строго правее того столбца, где производится поиск. Это обусловлено тем, что третий аргумент
функции, который задает номер столбца результатов, не может быть отрицательным. На практике же сплошь
и рядом возникают ситуации, когда искать данные надо в столбце, который находится правее, а не левее
столбца результатов, например:
На моих тренингах я слышу такой вопрос регулярно в формулировке: «А как сделать левый ВПР?»
Способ 1. ВПР и ВЫБОР
В любой версии Microsoft Excel есть штатная функция ВЫБОР (CHOOSE). Основное ее предназначение –
выбирать нужный элемент из списка по заданному номеру. Ее, например, можно использовать для замены
номера дня недели на его текстовый аналог:
Ничего сверхъестественного, на первый взгляд, но тут есть пара хитрых моментов.
Во-первых, вместо текстовых названий выбираемых элементов списка можно использовать адреса
диапазонов. И тогда функция вернет ссылку на выбранный диапазон. Так, например, формула:
=ВЫБОР(2;A1:A10;D1:D10;B1:B10)
… выдаст на выходе ссылку на второй указанный диапазон (D1:D10).
Во-вторых, вместо простого одиночного номера извлекаемого элемента в первом аргументе функции ВЫБОР
можно задать массив констант в фигурных скобках, например, так:
=ВЫБОР({1;2};A1:A10;D1:D10;B1:B10)
Тогда на выходе мы получим два первых диапазона (A1:A10 и D1:D10), склеенных в единое целое.
И вот теперь все это можно вложить внутрь нашей ВПР, чтобы реализовать «левый поиск»:
52
Мастер Формул
www.PlanetaExcel.ru
По сути, функция ВЫБОР виртуально меняет местами наши столбцы прайс-листа, чтобы потом ВПР могла
стандартно их обработать.
Способ 2. ИНДЕКС и ПОИСКПОЗ
Другой способ реализовать «левый ВПР» — это использовать связку функций ИНДЕКС (INDEX) и ПОИСКПОЗ
(MATCH):
Тут логика работы формулы немного другая. Функция ПОИСКПОЗ ищет порядковый номер ячейки со словом
Бананы в столбце Товар (т.е. выдаст нам 4). Затем ИНДЕКС вытаскивает из столбца Цена ячейку с порядковым
номером, который определила ПОИСКПОЗ, т.е. четвертое число – цену бананов.
Способ 3. СУММЕСЛИ
Еще один вариант – использовать вместо ВПР функцию выборочного суммирования СУММЕСЛИ (SUMIF).
Технически эта функция предназначена не для выбора, а для суммирования чисел по условию. Но если товар
встречается в прайс-листе только один раз (а обычно так и есть), то СУММЕСЛИ просто выдаст его цену.
Диапазоны проверки условия и суммирования в этой функции задаются отдельно, так что ей будет все равно,
что в нашей таблице они поменяны местами:
53
Мастер Формул
www.PlanetaExcel.ru
Важный нюанс этого способа состоит в том, что он подходит только для нахождения чисел, в то время как
предыдущие способы могут извлекать данные любого типа.
Несовпадение форматов
Иногда причиной возникновения ошибок #Н/Д при использовании ВПР бывает несовпадение форматов
данных. Обычно это встречается при поиске чисел, т.к. в Microsoft Excel число в ячейке может быть в двух
принципиально разных состояниях – как число и как текст. Причем зачастую визуально их различить почти
невозможно. Например, в исходной таблице числовой артикул в некоторых ячейках хранится в виде текста
(иногда на таких ячейках видно пометку зеленым уголком), а в поисковой таблице – в виде числа (или
наоборот):
Можно, конечно, долго и тщательно зачищать исходные данные, а можно преобразовать формат «на лету»
прямо в самой формуле.
Для преобразования числа-как-текст в нормальное число можно использовать двойной минус или двойное
бинарное отрицание. Фактически это то же самое, что два раза умножить число на -1. Само число при этом не
изменится, но сам факт проведения математической операции преобразует данные в число:
54
Мастер Формул
www.PlanetaExcel.ru
Если же числа-как-текст у нас не в исходной (левой) таблице, а в поисковом диапазоне справа, то для обратного
преобразования из числа в текст можно использовать похожую хитрость — подклеивать к числу пустую строку с
помощью оператора склейки (&):
Идея та же: приклеивание к данным пустой строки их не меняет, но сам факт проведения с числом чисто
текстовой операции превращает число в текст. Просто и элегантно.
Ну а если в обеих таблицах творится полный ад и числовой и текстовый форматы беспорядочно перемешаны?
Тогда можно скомбинировать оба приведенных способа, вложив функции ВПР внутрь функции ЕСЛИОШИБКА
(IFERROR):
Другой способ: использовать формулу массива с функциями ИНДЕКС (INDEX) и ПОИСКПОЗ (MATCH), которая
будет в обеих таблицах все сначала принудительно приводить к текстовому формату, а потом уже производить
поиск нужной цены:
55
Мастер Формул
www.PlanetaExcel.ru
Не забудьте после ввода этой формулы в ячейку нажать сочетание клавиш Ctrl+Shift+Enter, чтобы ввести ее как
формулу массива.
Непечатаемые символы и лишние пробелы
Иногда причиной возникновения проблем при поиске с ВПР бывают лишние пробелы «для красоты»
поставленные другими пользователями либо невидимые непечатаемые символы, попадающие в наши
таблицы из внешнего мира (при копировании данных из Word, интернета, 1С и т.д.). Для борьбы с ними можно
использовать функции СЖПРОБЕЛЫ (TRIM) и ПЕЧСИМВ (CLEAR):
В английской версии эта формула будет выглядеть как:
=VLOOKUP(TRIM(CLEAN(A2));$D$2:$E$7;2;0)
Функция СЖПРОБЕЛЫ убирает из исходного текста все лишние пробелы (начальные, концевые, двойныетройные и т.д.), оставляя только одиночные пробелы между словами.
Функция ПЕЧСИМВ убирает из текста непечатаемые символы (например, невидимый символ переноса строки,
появляющийся, когда мы используем сочетание Alt+Enter, чтобы разместить текст в ячейке в несколько строк).
Вычисление номера столбца
Третий аргумент функции ВПР – это номер столбца в поисковой таблице (прайс-листе), из которого необходимо
извлечь найденное значение. Если таблица небольшая, то определить номер легко, но если прайс содержит
десятки столбцов, да они еще и могут меняться местами с течением времени, то определять номер столбца
лучше не вручную, а с помощью функции ПОИСКПОЗ (MATCH):
56
Мастер Формул
www.PlanetaExcel.ru
ПОИСКПОЗ ищет заданное значение (название столбца из B1) в определенном диапазоне (шапка прайс-листа)
и выдает порядковый номер ячейки, где она это значение нашла, т.е. фактически номер столбца в прайсе,
который называется Цена.
Побочным эффектом от такого способа будет то, что при изменении текста в ячейке B1 со слова Цена на,
например, Цена розн, функция ВПР автоматически будет выдавать уже оптовую цену из другой колонки и т.д.
Поиск и подстановка с учетом регистра
Все подстановочные функции Excel из категории Ссылки и массивы (Lookup and Reference), такие как ВПР
(VLOOKUP), ГПР (HLOOKUP), ПОИСКПОЗ (MATCH), не учитывают регистр символов (т.е. разницу между
прописными и строчными буквами) при поиске данных. Таким образом, при использовании, например,
функции ВПР для поиска суммы, соответствующей клиенту с кодом Exo в данной таблице:
… мы получим 8222, а не 3215, как изначально требовалось при точном совпадении.
Если регистр необходимо учитывать, то функция ВПР не поможет и придется пойти другим путем. В Microsoft
Excel есть встроенная функция СОВПАД (EXACT), которая проверяет идентичность двух текстовых строк (с
учетом регистра) и выдает на выходе логическое значение ИСТИНА или ЛОЖЬ соответственно. Давайте
добавим к нашей таблице временный вспомогательный столбец, где проверим точное совпадение с помощью
этой функции:
57
Мастер Формул
www.PlanetaExcel.ru
Как и ожидалось, логическая ИСТИНА получилась там, где регистр совпадает с искомым значением один в
один.
Теперь используем функцию ПОИСКПОЗ (MATCH), чтобы найти порядковый номер строки с ИСТИНОЙ, и
добавим функцию ИНДЕКС (INDEX), чтобы извлечь из столбца с суммами элемент с порядковым номером,
который для нас перед этим нашла ПОИСКПОЗ:
От вспомогательного столбца тоже можно избавиться, добавив проверку функцией СОВПАД прямо в нашу
формулу. Только не забудьте ввести ее уже как формулу массива, т.е. с помощью Ctrl+Shift+Enter:
Еще один вариант заключается в использовании функции ПРОСМОТР (LOOKUP):
58
Мастер Формул
www.PlanetaExcel.ru
Фрагмент формулы 1/СОВПАД(A2:A7;F2) проверяет точное совпадение с учетом регистра, как и раньше, но при
этом дополнительно производится деление 1 на полученное значение ИСТИНА или ЛОЖЬ. Поскольку Excel
интерпретирует ИСТИНУ как 1, а ЛОЖЬ как 0, то мы получаем в результате массив:
Ошибки деления на ноль соответствуют несовпадениям, а числа – точному соответствию с искомым значением.
Если совпадений несколько, то вместо 1 в массиве будут дроби. Затем функция ПРОСМОТР (LOOKUP) ищет
ближайшее наименьшее к 2 число и выдает соответствующее ему по положению значение из массива C2:C7,
т.е. нужную нам сумму.
Особенно приятно, что эту формулу можно ввести уже как обычную (не формулу массива), т.е. без
Ctrl+Shift+Enter.
Использование «умных таблиц» в связке с ВПР
Я уже упоминал про умные таблицы во второй главе этой книги, но стоит отдельно уточнить это еще раз в
случае с функцией ВПР. Бывает очень удобно сначала преобразовать поисковую таблицу (прайс-лист) в
«умную» с помощью команды Главная – Форматировать как таблицу (Home – Format as Table) и затем указать
во втором аргументе функции ВПР имя созданной таблицы:
В этом случае размеры таблицы нас уже не будут беспокоить в будущем – при добавлении новых товаров в
прайс-лист, либо их удалении размеры «умной таблицы» подстроятся автоматически.
Имя таблицы всегда можно посмотреть/изменить на вкладке Конструктор (Design), которая появится, если
щелкнуть левой кнопкой мыши в любую ячейку созданной умной таблицы.
59
Мастер Формул
www.PlanetaExcel.ru
Извлечение сразу нескольких столбцов
Изначально функция ВПР (VLOOKUP) может вытащить значение только из одного (указанного в третьем
аргументе) столбца таблицы с данными. Иногда же возникает необходимость сделать это сразу для нескольких
столбцов. Например, нужно извлечь и просуммировать все значения для второго квартала по каждому городу:
Само собой, можно не изощряться, а решить задачу «в лоб», просто сделав три ячейки с ВПР, каждая из которых
будет извлекать данные из своего столбца, а потом сложить получившиеся результаты.
А можно использовать изящную формулу массива, подставив вместо номера столбца массив констант {5;6;7}.
Тогда на выходе мы получим массив из трех значений-результатов, который потом и суммируем с помощью
функции СУММ.
В английской версии это будет:
=SUM(VLOOKUP(A2;$D$2:$J$7;{5;6;7};0))
И не забудьте после ввода формулы нажать сочетание Ctrl+Shift+Enter, чтобы ввести ее как формулу массива.
Сравнение быстродействия разных видов ВПР
Скорость вычислений в приведенных выше способах весьма различается. Если в вашей таблице до 1000 строк,
то по этому поводу можно особо не напрягаться. Если же в ваших списках число строк исчисляется десятками
тысяч, то время ожидания пересчета листа может доходить до десятков секунд, что создает ощутимые
неудобства в работе.
Для тестирования я взял список товаров в 500 000 строк (слева), куда подставлялись цены из прайс-листа
размером в 600 строк (справа):
60
Мастер Формул
www.PlanetaExcel.ru
Делалось по 3 повтора для вычислений для каждого способа, затем бралось среднее арифметическое время.
Замер производился специальным макросом-таймером. Результаты получились следующие:
Способ
ВПР (Интервальный просмотр = 0)
ВПР (Интервальный просмотр = 1)
ВПР с ЕСЛИОШИБКА для перехвата #Н/Д
ИНДЕКС и ПОИСКПОЗ вместо ВПР
СУММЕСЛИ вместо ВПР
«Левый ВПР» с ВЫБОР
Длительность, сек
5,44
0,53
5,43
5,46
19,25
34,54
Конкретные числовые значения зависят от многих факторов (конфигурации ПК, версии Excel и т.д.) и большой
роли не играют, но соотношение полученных результатов весьма показательно. Выводы можно сделать
следующие:
ВПР с включенным интервальным просмотром минимум на порядок быстрее любых других способов.
Но при этом нужно помнить, что таблица, в которой производится поиск (прайс-лист в нашем примере),
обязательно должна быть отсортирована по возрастанию. Также необходимо помнить, что если в
прайсе не окажется какого-то из товаров, то ВПР с интервальным просмотром уже не выдаст ошибку
#Н/Д, а подставит цену ближайшего похожего товара (что вряд ли хорошо).
ВПР с точным поиском не отличается от связки ИНДЕКС+ПОИСКПОЗ по скорости. Но
ИНДЕКС+ПОИСКПОЗ могут искать значения и левее ключевого столбца, в отличие от ВПР, которая
выдает результаты только правее.
Функция ЕСЛИОШИБКА, добавляемая к ВПР для перехвата ошибки #Н/Д практически не влияет на
скорость.
Экзотические способы поиска и подстановки типа ВПР+ВЫБОР или СУММЕСЛИ – самые медленные.
Причем СУММЕСЛИ еще и работает только с числами. Лучше ими не увлекаться или заменять потом
формулы на значения, чтобы ускорить пересчет книги.
61
Мастер Формул
www.PlanetaExcel.ru
Поиск по нескольким условиям
Если нужно подставить данные из одной таблицы в другую по одному условию, то замечательно сгодится
функция ВПР (VLOOKUP) или связка функций ПОИСКПОЗ+ИНДЕКС (MATCH+INDEX). Но что делать, если нужно
найти и подставить данные не по одному, а по совпадению сразу нескольких параметров?
Обычное решение, к которому приходит большинство пользователей в этом случае, – склеить нужные столбцы
с помощью функции СЦЕПИТЬ (CONCATENATE) или символа &, чтобы получить необходимый уникальный
столбец с ключом, по которому потом подтягивать данные классическим ВПР (VLOOKUP). Это, безусловно,
вариант, но есть и другие способы – в частности, использовать формулы массива.
Предположим, что нам нужно подставить в правую таблицу с рецептурой цены из базы данных по
ингредиентам, причем каждый продукт определяется двумя параметрами – типом и наименованием:
Для решения достаточно будет ввести в первую ячейку H4 и скопировать потом на весь столбец следующую
формулу массива, состоящую из связки двух функций – ИНДЕКС и вложенной в нее ПОИСКПОЗ:
=ИНДЕКС($C$4:$C$90;ПОИСКПОЗ(F4&G4;$A$4:$A$90&$B$4:$B$90;0))
Давайте разберем ее «по косточкам»:
F4&G4 – склеивает содержимое двух ячеек с искомыми типом и наименованием, чтобы получить
уникальный ключ «активыкофеин», по которому потом будет произведен поиск в базе ингредиентов;
ПОИСКПОЗ(F4&G4;$A$4:$A$90&$B$4:$B$90;0) – ищет склеенный ключ «активыкофеин» в паре
склеенных столбцов типа и наименования A4:A90&B4:B90 и выдает порядковый номер строки в базе,
где наш ключ найдется, т.е. число 5;
Функция ИНДЕКС выдает содержимое 5-й ячейки из столбца C4:C90, т.е. стоимость для связки «активыкофеин».
Не забудьте после ввода формулы в ячейку H4 нажать сочетание клавиш Ctrl+Shift+Enter, т.к. это формула
массива. Фигурные скобки дописывать руками не нужно – они добавятся автоматически. Затем формулу можно
скопировать вниз на достаточное количество строк.
Чтобы наша конструкция не выдавала ошибку #Н/Д на пустых строчках в рецептуре, можно воспользоваться
функцией ЕСЛИОШИБКА (IFERROR), которая будет перехватывать #Н/Д и заменять на пустую строку:
=ЕСЛИОШИБКА(ИНДЕКС($C$7:$C$97;ПОИСКПОЗ(F7&G7;$A$7:$A$97&$B$7:$B$97;0));»»)
62
Мастер Формул
www.PlanetaExcel.ru
Двумерный поиск (ВПР 2D)
Чем дальше, тем любопытственнее…
(Макс Фрай)
Функции ВПР (VLOOKUP) и ее горизонтальный аналог ГПР (HLOOKUP) ищут информацию только по одному
параметру и в одномерном массиве — по строке или по столбцу. А если нам необходимо выбирать данные из
двумерной таблицы по совпадению сразу двух параметров — и по строке и по столбцу одновременно?
Предположим, что у нас имеется вот такой двумерный массив данных по городам и товарам:
Пользователь вводит (или выбирает из выпадающих списков) в желтых ячейках нужный товар и город. В
зеленой ячейке нам нужно формулой найти и вывести число из таблицы, соответствующее выбранным
параметрам. Фактически мы хотим найти значение ячейки с пересечения определенной строки и столбца в
таблице.
В такой ситуации можно использовать два принципиально разных подхода.
Способ 1. Функции ИНДЕКС и ПОИСКПОЗ
Для наглядности разобьём задачу на три этапа.
Во-первых, нам нужно определить номер строки, соответствующей выбранному пользователем в желтой
ячейке J2 товару. Это поможет сделать функция ПОИСКПОЗ (MATCH) из категории Ссылки и массивы (Lookup
and Reference). В частности, формула
=ПОИСКПОЗ(J2;A2:A10;0)
… даст нам нужный результат (для Яблока это будет число 6). Первый аргумент этой функции — искомое
значение (Яблоко из желтой ячейки J2), второй — диапазон ячеек, где мы ищем товар (столбец с товарами в
таблице — A2:A10), третий аргумент задает тип поиска (0 — точное совпадение наименования).
Во-вторых, совершенно аналогичным способом мы должны определить порядковый номер столбца в таблице
с нужным нам городом. Функция
=ПОИСКПОЗ(J3;B1:F1;0)
сделает это и выдаст, например, для Киева, выбранного пользователем в желтой ячейке J3, значение 4.
И, наконец, в-третьих, нам нужна функция, которая умеет выдавать содержимое ячейки из таблицы по номеру
строки и столбца — функция ИНДЕКС (INDEX) из той же категории Ссылки и массивы (Lookup and Reference).
63
Мастер Формул
www.PlanetaExcel.ru
Первый аргумент этой функции — диапазон ячеек (в нашем случае это вся таблица, т.е. B2:F10), второй — номер
строки, третий — номер столбца (а их мы определили выше с помощью функций ПОИСКПОЗ).
Итого, соединяя все вышеперечисленное в одну формулу, получаем для зеленой ячейки решение:
=ИНДЕКС(B2:F10;ПОИСКПОЗ(J2;A2:A10;0);ПОИСКПОЗ(J3;B1:F1;0))
или в английском варианте
=INDEX(B2:F10;MATCH(J2;A2:A10;0);MATCH(J3;B1:F1;0)).
Способ 2. Пересечение именованных диапазонов
Этот способ гораздо экзотичнее и не так универсален, как первый, но тоже по-своему красив. Суть его
заключается в том, что мы дадим имена товаров и городов нашим строкам и столбцам и будем искать
пересечение двух именованных диапазонов – нужного товара и города.
Для начала выделим весь наш диапазон с данными и подписями к ним, т.е. A1:F10.
Затем на вкладке Формулы (Formulas) выберем команду Создать из выделенного (Create from selection) и в
открывшемся окне включим флажки В строке выше (Top row) и В столбце слева (Left column):
После нажатия на ОК Excel автоматически присвоит каждому столбцу имя, взяв его из верхней строки, и каждой
строке – взяв его из левого столбца. Например, диапазон B2:B10 будет называться Москва, D2:D10 – Самара,
B2:F2 – Банан и т.д. Увидеть все созданные имена можно в Диспетчере имен на вкладке Формулы (Formulas –
Name Manager):
64
Мастер Формул
www.PlanetaExcel.ru
А дальше начинается самое интересное.
Что вы знаете о пробеле?
Да-да, тот самый пробел. Длинная клавиша на клавиатуре. На самом деле, в Microsoft Excel он играет не только
роль привычного разделителя между словами. Пробел, если его использовать в формуле, может выполнять
роль оператора пересечения диапазонов. Например, вот такая формула:
… выдаст нам в качестве результата число 13 – содержимое пересечения вертикального и горизонтального
диапазонов B7:F7 и E2:E10.
Теперь осталось подменить фиксированные диапазоны на именованные, взяв их названия из ячеек J2 и J3:
65
Мастер Формул
www.PlanetaExcel.ru
Функция ДВССЫЛ (INDIRECT) нужна, чтобы преобразовать текстовые названия именованных диапазонов в
настоящие ссылки.
66
Мастер Формул
www.PlanetaExcel.ru
Трехмерный поиск сразу по нескольким листам (ВПР 3D)
Продолжая развивать идею предыдущего пункта, давайте рассмотрим решение задачи поиска не в двух, а в
трех измерениях, когда к нахождению нужной строки и столбца добавляется еще и лист. Рассмотрим
следующий пример.
Допустим, у нас есть несколько листов по городам с данными продаж по товарам и магазинам:
Причем в таблицах товары и магазины перемешаны, т.е. их последовательность различается. Количество строк
и столбцов тоже может быть разным.
На отдельном листе создана форма ввода, куда пользователь с помощью выпадающих списков вводит
желаемый город, товар и магазин в желтые ячейки D5, D7 и D9:
67
Мастер Формул
www.PlanetaExcel.ru
Содержимое выпадающих списков автоматически подгружается из трех таблиц справа. Необходимо в зеленой
ячейке D11 получить сумму, соответствующую заданному товару и магазину, причем с нужного листа.
Для решения нам потребуется всего три функции: ПОИСКПОЗ (MATCH), ИНДЕКС (INDEX) и ДВССЫЛ (INDIRECT).
ПОИСКПОЗ(искомое_значение; массив; тип_поиска) – ищет заданное значение в диапазоне (строка или
столбец) и выдает порядковый номер ячейки, где оно было найдено. Нам эта функция поможет найти
порядковые номера строки и столбца в таблице, где расположено нужное число. Для примера, формула:
=ПОИСКПОЗ(«Альфа»;A2:G1;0)
… вычислит номер столбца в таблице, где расположен столбец Альфа. Последний аргумент этой функции (0)
означает, что нам нужен точный поиск.
ИНДЕКС(диапазон; номер_строки; номер_столбца) – выбирает значение из диапазона по номеру строки и
столбца. Так, например, формула:
=ИНДЕКС(B2:G9;3;2)
… выдаст нам содержимое ячейки в 3-й строке 2-го столбца из диапазона B2:G9.
ДВССЫЛ(адрес_как_текст) – превращает адресную строку в виде текста в настоящий адрес. Причем адрес
запросто может склеиваться из фрагментов с помощью оператора сцепки &. Например, формула:
=ДВССЫЛ(A1&»!B3″)
… берет имя листа из ячейки A1, приклеивает к нему восклицательный знак-разделитель и адрес ячейки B3.
Если в ячейке A1 будет лежать слово Москва, то на выходе мы получим ссылку Москва!B3, т.е. содержимое
ячейки B3 с листа Москва.
Теперь сводим все в единое целое для решения нашей задачи (я использовал сочетание клавиш Alt+Enter,
чтобы разнести аргументы нашей формулы на разные строки для наглядности):
=ИНДЕКС(ДВССЫЛ(D5&»!B2:G9″);
ПОИСКПОЗ(D7;ДВССЫЛ(D5&»!A2:A9″);0);
ПОИСКПОЗ(D9;ДВССЫЛ(D5&»!B1:G1″);0))
Единственный оставшийся нюанс в том, что по синтаксису Excel, если в именах листов есть пробел, то их нужно
дополнительно заключать в апострофы (одинарные кавычки), т.е. ссылка на ячейку A1 на листе Нижний
Новгород, например, должна выглядеть так:
=’Нижний Новгород’!A1
Таким образом, для универсальности нужно добавить апострофы и к нашей формуле:
68
Мастер Формул
www.PlanetaExcel.ru
В английской версии наша формула будет выглядеть аналогично:
=INDEX(INDIRECT(«‘»&D5&»‘!B2:G9»);
MATCH(D7;INDIRECT(«‘»&D5&»‘!A2:A9»);0);
MATCH(D9;INDIRECT(«‘»&D5&»‘!B1:G1»);0))
69
Мастер Формул
www.PlanetaExcel.ru
Поиск данных в нескольких таблицах
— У девушки небольшой беспорядок.
— Да формула Мандельброта всего лишь кучка
цифр, если это небольшой беспорядок!
(Шелдон, The Big Bang Theory)
По аналогии с поиском на нескольких листах давайте разберем поиск нужных данных, когда они разделены на
несколько таблиц. Принципиально важным моментом здесь будет — одинаковы ли эти таблицы по структуре
или нет?
Одинаковые таблицы
Предположим, что у нас есть четыре однотипных по конструкции таблицы с данными по продажам товаров в
трех странах (России=RU, Казахстане=KZ и Беларуси=BY):
В трех ячейках на этом или любом другом листе задаются название товара, страны и номер квартала, и наша
задача – найти в нужной таблице данные по продажам заданного товара в указанной стране.
Для начала нам нужно найти два вспомогательных параметра: номер строки с требуемым товаром и номер
столбца со страной. Для этого можно применить две функции ПОИСКПОЗ (MATCH), используя в качестве
основы для поиска любую из наших таблиц, например четвертую:
А затем в качестве «главного калибра» используем функцию ИНДЕКС (INDEX) – одну из самых многоликих
функций Excel. Один из ее вариантов использования как раз и умеет извлекать данные из набора нескольких
таблиц. Ее синтаксис таков:
=ИНДЕКС((несколько_диапазонов);номер_строки; номер_столбца; номер_диапазона)
Т.е. в нашем случае это будет:
=ИНДЕКС((C4:E8;H4:J8;M4:O8;R4:T8);X3;X4;W5)
Обратите внимание, что все поисковые диапазоны должны быть перечислены в скобках.
Ну и, само собой, можно обойтись без вспомогательных ячеек X3 и X4, вставив функции ПОИСКПОЗ прямо
внутрь нашей формулы:
70
Мастер Формул
www.PlanetaExcel.ru
Если использовать сочетание Alt+Enter, то можно удобно разделить аргументы функции ИНДЕКС по разным
строчкам:
=ИНДЕКС((C4:E8;H4:J8;M4:O8;R4:T8);
ПОИСКПОЗ(W3;Q4:Q8;0);
ПОИСКПОЗ(W4;R3:T3;0);W5)
В английской версии это будет, соответственно:
=INDEX((C4:E8;H4:J8;M4:O8;R4:T8);
MATCH(W3;Q4:Q8;0);
MATCH(W4;R3:T3;0);W5)
Разные таблицы
Продолжим разбором более сложного случая, когда таблицы, в которых нужно искать данные, не одинаковые
по структуре и размеру:
Обратите внимание, что:
Одни и те же товары могут находиться в разных таблицах в разных строчках.
То же самое со странами-столбцами.
В 3-м и 4-м кварталах ассортимент товаров увеличился.
Сначала дадим таблицам имена, т.е. создадим именованные диапазоны, которые на них указывают. Для этого
нажмите на вкладке Формулы кнопку Диспетчер имен (Formulas – Name Manager) и создайте четыре
именованных диапазона:
Имя
Ссылка
Квартал1
Квартал2
Квартал3
Квартал4
B3:E8
G3:J8
L3:O9
Q3:T10
Как и в предыдущем случае, основой нашего решения будет функция ИНДЕКС, извлекающая данные из
диапазона по номеру строки и столбца. Чтобы найти номер строки с нужным нам товаром, придется
использовать вот такую формулу:
71
Мастер Формул
www.PlanetaExcel.ru
=ПОИСКПОЗ(W4;ИНДЕКС(ДВССЫЛ(W3);0;1);0)
Разберем ее подробно, т.к. в ней скрыты два неочевидных, но принципиально важных момента.
Во-первых, функция ДВССЫЛ(W3) в данном случае представляет собой ссылку на именованный диапазон 4-го
квартала. Прямую ссылку на ячейку с именем W3 использовать нельзя, т.к. Excel будет воспринимать ее как
текст. Чтобы превратить текст «Квартал4» в живую ссылку на именованный диапазон «Квартал4», и нужна
функция ДВССЫЛ (INDIRECT).
Во-вторых, фрагмент:
ИНДЕКС(ДВССЫЛ(W3);0;1)
… представляет собой ссылку на первый столбец именованного диапазона «Квартал4», т.е. на Q3:Q10.
Как это получилось?
Классический вариант использования функции ИНДЕКС на одной двумерной таблице, напомним, предполагает
три аргумента:
=ИНДЕКС(диапазон; номер_строки; номер_столбца)
В этом случае мы получим содержимое ячейки в указанном диапазоне с пересечения строки и столбца с
заданными номерами.
Хитрость в том, что если номер строки равен 0, то ИНДЕКС выдает уже не содержимое ячейки, а ссылку на
весь столбец с указанным номером, т.е. на первый столбец именованного диапазона заданного ДВССЫЛ(W3),
т.е. на ячейки Q3:Q10.
Ну а затем уже знакомая нам функция ПОИСКПОЗ (MATCH) ищет в этом диапазоне требуемый товар (Рис) и
возвращает его позицию (4 строка, т.к. пустая Q3 тоже считается).
Совершенно аналогично можно найти номер столбца с нужной страной:
Только в этом случае нулю равен не номер строки, а номер столбца, чтобы получить ссылку на первую строку
именованного диапазона «Квартал4», где затем функция ПОИСКПОЗ будет искать «BY».
И, наконец, останется вытащить нужную нам сумму функцией ИНДЕКС:
72
Мастер Формул
www.PlanetaExcel.ru
Вот так. Не самая простая логика, но позволяет находить данные в любых разношерстных таблицах.
Единственное условие: заголовки строк и столбцов (названия товаров и стран) должны быть идентичными во
всех таблицах.
73
Мастер Формул
www.PlanetaExcel.ru
Поиск ближайшего числового значения
В случае поиска среди числовых значений иногда возникает необходимость найти не точное, а ближайшее
число, т.е. число, минимально отличающееся от искомого значения.
Допустим, у нас имеется в наличии в прайс-листе несколько насосов разной номинальной мощности. К нам
приходит покупатель со своим, требуемым по его проекту, значением мощности, под которое нужно подобрать
подходящий насос. Если нет точного попадания в одну из моделей, то нужно будет подобрать максимально
подходящую, но остается открытым вопрос округления. Давайте рассмотрим разные варианты решения этой
задачи.
Поиск ближайшего наименьшего
Быстро найти ближайшее наименьшее число в массиве по отношению к искомому значению можно с помощью
функции ВПР (VLOOKUP) с включенным приблизительным поиском, т.е. с четвертым аргументом
Интервальный просмотр = 1 (Range Lookup). Таблица, в которой производится поиск, обязательно должна
быть отсортирована по возрастанию по тому столбцу, где производится поиск, т.е. по мощности:
Поиск ближайшего наибольшего
Если нужно найти ближайшее наибольшее, чтобы гарантированно перекрыть требования по мощности, то
можно использовать связку функций ИНДЕКС и ПОИСКПОЗ (INDEX и MATCH). В отличие от ВПР, функция
ПОИСКПОЗ умеет искать не только ближайшее наименьшее, но и ближайшее наибольшее – для этого третий
аргумент функции ПОИСКПОЗ, который называется Тип_сопоставления, нужно задать равным минус единице:
74
Мастер Формул
www.PlanetaExcel.ru
Функция ПОИСКПОЗ найдет порядковый номер строки в таблице с ближайшим наибольшим значением, а
затем ИНДЕКС выведет это значение по номеру из столбца с мощностью. Также необходимо помнить, что
таблица в этом случае должна быть обязательно отсортирована по убыванию мощности.
Естественно, можно использовать этот способ и для поиска ближайшего наименьшего – достаточно заменить
Тип_сопоставления с -1 на +1 и отсортировать таблицу по возрастанию. И выводить можно не само значение
мощности из столбца B2:B13, а модель насоса из столбца A2:A13:
Поиск ближайшего значения (точно)
Если же нужно найти просто ближайшее значение к заданному, то придется немного «пошаманить». Для
понимания сначала добавим справа от таблицы столбец, где вычислим разницу между мощностью каждой
модели насоса и тем, что требуется клиенту:
75
Мастер Формул
www.PlanetaExcel.ru
Чтобы не учитывать знак, а брать разницу только по модулю, используется функция ABS.
Самая подходящая модель будет той, где вычисленное отклонение минимально. Чтобы найти в добавленном
столбце порядковый номер ячейки с наименьшим числом, можно использовать функцию ПОИСКПОЗ (MATCH):
=ПОИСКПОЗ(МИН(C2:C13);C2:C13;0)
И, наконец, извлечь ближайшее число из столбца мощности можно с помощью функции ИНДЕКС (INDEX),
используя порядковый номер, который перед этим найдет ПОИСКПОЗ:
=ИНДЕКС(B2:B13;ПОИСКПОЗ(МИН(C2:C13);C2:C13;0))
Всю описанную выше логику можно завернуть в одну формулу массива, чтобы не делать дополнительный
столбец (я использовал сочетание клавиш Alt+Enter, чтобы разложить формулу на несколько строк для
наглядности):
{=ИНДЕКС(B2:B13;
ПОИСКПОЗ(МИН(ABS(B2:B13-E2));
ABS(B2:B13-E2);
0))}
76
Мастер Формул
www.PlanetaExcel.ru
Сортировка таблицы при этом роли не играет.
В английской версии эта формула будет:
{=INDEX(B2:B13;MATCH(MIN(ABS(B2:B13-E2));ABS(B2:B13-E2);0))}
Аналогично предыдущему способу можно немного изменить формулу, чтобы она находила не мощность, а
модель насоса – достаточно подправить первый аргумент в функции ИНДЕКС на A2:A13.
77
Мастер Формул
www.PlanetaExcel.ru
Поиск последнего значения
Как многим известно, функция ВПР (VLOOKUP) выводит первое встретившееся ей совпадение в таблице.
Иногда же задача меняется на прямо противоположную – нужно найти, не первое, а последнее значение.
Допустим, что у нас имеется таблица с продажами наших клиентов в хронологическом порядке. Причем
покупать они могли несколько раз, т.е. фамилия клиента в списке запросто может повторяться. Нужно найти
сумму последней покупки заданного клиента:
Для понимания зайдем немного издалека. Добавим к нашей таблице еще один столбец справа с формулой,
которая проверяет каждого клиента на предмет совпадения с нужным и выводит затем номер текущей строки:
Если выбрать из получившегося столбца первое наибольшее число с помощью функции НАИБОЛЬШИЙ
(LARGE), то мы получим как раз номер строки с последним вхождением нужного нам менеджера:
78
Мастер Формул
www.PlanetaExcel.ru
Теперь останется вытащить из столбца стоимости значение по полученному номеру строки с помощью функции
ИНДЕКС (INDEX):
Ну и, само собой, можно свернуть все вышеописанное в одну формулу массива, не используя вспомогательных
столбцов и вычислений:
79
Мастер Формул
www.PlanetaExcel.ru
В английском Excel эта формула выглядела бы как:
=INDEX(B2:B16;LARGE(IF(A2:A16=F4;ROW(A2:A16)-1);1))
Если таблица, в которой производится поиск, расположена начиная не с первой строки листа, то нашу формулу
лучше немного скорректировать для универсальности, добавив отсчет номеров строк не с 1, а с первой ячейки
таблицы:
80
Мастер Формул
www.PlanetaExcel.ru
Поиск сразу всех значений (МультиВПР)
Чтобы найти иголку в стоге сена, достаточно
сжечь сено и провести магнитом над пеплом.
(Бернар Вербер)
Функция ВПР (VLOOKUP) и ей подобные выдают при поиске только одно значение – первое найденное в списке
соответствие. Зачастую же в списке нужный нам объект (например, товар) может встречаться несколько раз и
хочется, чтобы на выходе мы видели сразу все найденные результаты, а не только первый. Функция ВПР с таким
не справится, но для формул массива пределов возможного нет.
Предположим, что у нас имеется вот такой список сделок по различным товарам:
В ячейке F2 создан выпадающий список, из которого пользователь выбирает нужный товар (например, Киви).
Нужно найти и вывести все суммы сделок по выбранному товару (на рисунке эти сделки подсвечены для
наглядности).
Чтобы решить задачу, для начала давайте найдем номера строк в таблице, где расположены сделки по Киви.
Добавим к нашей таблице справа дополнительный столбец, где с помощью функций ЕСЛИ проверим товар и
выведем номер строки в таблице, если это Киви:
81
Мастер Формул
www.PlanetaExcel.ru
В английской версии это было бы:
=IF($F$2=A2;ROW(A2)-1)
Из получившегося столбца нужно выбрать только числа – это может легко сделать функция НАИМЕНЬШИЙ
(SMALL), которая выберет последовательно первое наименьшее число (3), потом второе наименьшее (11),
затем третье (17) и т.д.:
На ошибки #ЧИСЛО!, возникающие в лишних ячейках, куда мы протянули формулу «про запас», можно пока
внимания не обращать – мы их потом скроем.
82
Мастер Формул
www.PlanetaExcel.ru
Теперь можно вытащить из столбца сумм нужные нам значения по их номерам с помощью функции ИНДЕКС
(INDEX):
Теперь свернем все описанные выше операции в одну формулу массива:
Чтобы спрятать ошибку #ЧИСЛО!, возникающую, когда найденных значений меньше, чем формул, можно
использовать функцию ЕСЛИОШИБКА (IFERROR). Она будет выводить пустую строку вместо ошибки:
В английской версии наша формула будет выглядеть как:
{=IFERROR(INDEX($B$2:$B$27;SMALL(IF($F$2=$A$27;ROW($A$2:$A$27)-1);F4));»»)}
83
Мастер Формул
www.PlanetaExcel.ru
Поиск заданной последовательности в списке
Предположим, что у нас есть хронологический список с городами, которые посещает наш водитель, доставляя
товары. Также допустим, что «Москва» в этом списке означает возвращение на склад за новой партией товара.
Задача: найти ближайший заказ, который водитель повезет из Москвы в Коломну, т.е., другими словами, найти
первое вхождение последовательности Москва — Коломна в нашем списке:
Как видно из предыдущей картинки, для решения потребуется всего одна знакомая нам уже функция
ПОИСКПОЗ (MATCH), но в слегка непривычном варианте применения, а именно:
Искомое значение – это два склеенных между собой города из ячеек E2 и E3.
В качестве массива, где производится поиск, мы используем, опять же, два склеенных диапазона
B2:B16 и B3:B17. На практике это даст нам массив попарно сцепленных значений городов, который
можно легко увидеть, если выделить второй аргумент нашей функции в строке формул и нажать
клавишу F9:
Ну и поскольку обычные формулы не позволяют склеивать целые столбцы, то нашу функцию необходимо
ввести как формулу массива, т.е. с использованием сочетания клавиш Ctrl+Shift+Enter.
Легко сообразить, что подобным же образом можно искать вхождения и из трех элементов и более.
84
Мастер Формул
www.PlanetaExcel.ru
Подстановка из ниоткуда
Фокусы — это, всего лишь, ловкость рук и
никакого мошенства!
(Поросенок Фунтик)
Это несложный, но интересный прием, позволяющий подставлять данные из небольших таблиц без
использования ячеек вообще. Его суть в том, что можно «зашить» массив подстановочных значений прямо в
формулу, используя массивы констант или именованные диапазоны. Рассмотрим несколько способов это
сделать.
Функция ВЫБОР
Если нужно подставить данные из одномерного массива по номеру, то можно использовать функцию ИНДЕКС
(INDEX) или ее более простой и подходящий в данном случае аналог – функцию ВЫБОР (CHOOSE). Она выводит
элемент массива по его порядковому номеру. Так, например, если нам нужно вывести название дня недели по
его номеру, то можно использовать вот такую конструкцию:
Аналогичным образом можно преобразовать и номер месяца в его название.
Массив констант в формуле
Предположим, что у нас есть список городов, куда с помощью функции ВПР (VLOOKUP) подставляются
значения коэффициентов зарплаты из второго столбца желтой таблицы справа:
Хитрость в том, что можно заменить ссылку на диапазон с таблицей $E$3:$F$5 массивом констант прямо в
формуле, и правая таблица будет уже не нужна. Чтобы не вводить константы вручную, можно пойти на
небольшую хитрость. Выделите любую пустую ячейку. Введите с клавиатуры знак «равно» и выделите диапазон
с таблицей – в строке формул должен отобразиться его адрес:
85
Мастер Формул
www.PlanetaExcel.ru
Выделите с помощью мыши ссылку E3:F5 в строке формул и нажмите клавишу F9 – ссылка превратится в массив
констант:
Осталось скопировать получившийся массив и вставить его в нашу формулу с ВПР, а саму таблицу удалить за
ненадобностью:
Массив констант с именем
Развивая идею предыдущего способа, можно попробовать еще один вариант – сделать именованный диапазон
констант, который использовать затем в формуле. Для этого нажмите на вкладке Формулы (Formulas) кнопку
Диспетчер Имен (Name Manager). Затем нажмите кнопку Создать, придумайте и введите имя (пусть будет,
например, Города) и в поле Диапазон (Reference) вставьте скопированный в предыдущем способе массив
констант:
86
Мастер Формул
www.PlanetaExcel.ru
Нажмите ОК и закройте Диспетчер имен. Теперь добавленное имя можно смело использовать на любом листе
книги в любой формуле – например, в нашей функции ВПР:
Компактно, красиво и можно использовать как один из способов защиты от непрофессионалов. Ну, а от
профессионала не спасет ничего.
87
Мастер Формул
www.PlanetaExcel.ru
Поиск частичных текстовых совпадений
А «обедня» — это то же, что и «обед»?
(Альф)
Очень часто (к сожалению!) встречаемая бизнес-задача в Microsoft Excel. Есть криво заполненный несколькими
пользователями список клиентов, где одна и та же компания может быть введена несколько раз, но поразному:
Нужно превратить «плохой» список в «хороший», найдя соответствие каждому нестандартному названию
компании по таблице подстановки. Легко догадаться, что функции а-ля ВПР (VLOOKUP) тут не помогут, т.к.
умеют искать только точные совпадения, а нам нужно, чтобы подстановка происходила, если требуемое
ключевое слово из первого столбца таблицы подстановки содержится в элементе плохого списка (а не точно
ему равно!).
Чтобы выкрутиться в такой ситуации, можно использовать небольшую, но очень эффективную формулу
массива, введенную в первую ячейку B2 и скопированную затем вниз на всю длину хорошего списка:
Давайте разберем эту магическую формулу из B2 «по косточкам» на примере первой ячейки (B2):
88
Мастер Формул
www.PlanetaExcel.ru
Функция ПОИСК (FIND) ищет в ячейке A2 (а при копировании формулы вниз затем в А3, А4 и т.д.) каждый
элемент из первого столбца таблицы подстановки. Если нашла, то выдает порядковый номер символа, начиная
с которого искомый текст был обнаружен. В нашем случае это будет число 10, т.к. в строке «Компания Морозко
ОАО» слово «Морозко» встречается начиная с 10-го символа.
В случае если нужный текст не найден (для слов «Ромашка» и «Булкина»), функция ПОИСК выдаст ошибку
#ЗНАЧ. Таким образом, на выходе функции ПОИСК мы получаем массив-столбец из числа и двух ошибок:
{#ЗНАЧ!:10:#ЗНАЧ!}.
Затем в дело вступает функция ПРОСМОТР (LOOKUP). Она похожа по принципу на известную ВПР (VLOOKUP).
Ее синтаксис:
=ПРОСМОТР(Искомое_значение; Просматриваемый_массив; Массив_результатов)
Эта функция ищет заданное значение в Просматриваемом массиве, и если нашла, то выдает соответствующее
ему значение из Массива результатов. Просматриваемый массив в нашем случае – это полученный на
предыдущем шаге {#ЗНАЧ!:10:#ЗНАЧ!}, а Массив результатов – правильные названия компаний из второго
столбца Таблицы подстановки.
Поскольку функция ПРОСМОТР при поиске игнорирует ошибки #ЗНАЧ! и берет ближайшее наименьшее
числовое значение, то мы можем искать любое заведомо большое число, например 2 15=32768, что равно
максимальному количеству символов в ячейке листа Excel в принципе. Тогда ПРОСМОТР найдет в нашем
входном массиве {#ЗНАЧ!:10:#ЗНАЧ!} ближайшее наименьшее к 32768 число 10 и выдаст второй элемент из
массива результатов, т.е. для кривого «Компания Морозко ОАО» мы получим правильно-эталонное ОАО
«Морозко».
Шикарная формула, выручавшая меня не раз в реальных проектах.
89
Мастер Формул
www.PlanetaExcel.ru
Точный поиск с учетом регистра символов
Все подстановочные функции Excel из категории Ссылки и массивы (Lookup and Reference), такие как ВПР
(VLOOKUP), ГПР (HLOOKUP), ПОИСКПОЗ (MATCH), не учитывают регистр символов (т.е. разницу между
прописными и строчными) при поиске данных.
В большинстве случаев это не создает проблем, но иногда все же требуется именно полноценный точный поиск
— с учетом регистра. Тогда при использовании, например, функции ВПР для поиска суммы, соответствующей
клиенту с кодом aC7 в данной таблице:
…в итоге мы получим 90, а не 100 — ибо функция не видит разницы между aC7 и AC7 и выводит первое
встретившееся значение из таблицы.
Формула, которая нам нужна, выглядит следующим образом:
Внутренняя логика ее работы следующая:
Функция СОВПАД (EXACT) проверяет каждый код заказа из диапазона A2:A10 на предмет совпадения с F2 (с
учетом регистра!) и выдает на выходе логическую ИСТИНУ или ЛОЖЬ как результат.
{ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ}
ИСТИНУ Excel интерпретирует как 1, а ЛОЖЬ как 0, поэтому массив превращается в:
{0:0:0:0:0:0:0:1:0}
90
Мастер Формул
www.PlanetaExcel.ru
А затем элементы этого массива попарно умножаются на значения стоимости из диапазона B2:B10, т.е.
{0:0:0:0:0:0:0:1:0}
… умножается на:
{31:96:98:21:90:74:26:100:33}
… и мы получаем нули везде, кроме точного совпадения, т.е.
{0:0:0:0:0:0:0:100:0}
И, наконец, все элементы полученного массива суммируются с помощью функции СУММПРОИЗВ
(SUMPRODUCT). Эта функция выполняет здесь двойную функцию. Во-первых, очевидно, суммирует, а вовторых, позволяет обойтись без ввода формулы массива обязательным сочетанием Ctrl+Shift+Enter. Благодаря
СУММПРОИЗВ достаточно будет обычного Enter.
Если же нужно извлекать не числа, а текст, то суммирование уже не подходит и формулу нужно будет немного
изменить:
Здесь функция ПОИСКПОЗ (MATCH) будет искать порядковый номер первого вхождения логической ИСТИНЫ
(т.е. совпадения) в массиве результатов проверки функцией СОВПАД, а затем функция ИНДЕКС извлечет из
столбца с именами клиентов нужного человека по вычисленному номеру.
91
Мастер Формул
www.PlanetaExcel.ru
Поиск первого или последнего значения в строке или столбце
Кто не знает начала — не поймет и конца.
(Грузинская пословица)
Если таблица заполняется не монолитно и содержит внутри пустые ячейки, то иногда возникает необходимость
извлечь из определенной строки или столбца первое или же последнее непустое значение. Решение в данном
случае сильно будет зависеть от того, с чем мы имеем дело в таблице – с числами или с текстом. Давайте
разберем оба варианта.
Текст
Допустим, что у нас имеется вот такой график командировок, где указано, кто из менеджеров в каком месяце
в какой из наших филиалов поедет:
Для нахождения первого имени в каждой строке можно использовать младшего брата общеизвестной функции
ВПР (VLOOKUP) – функцию ГПР (HLOOKUP):
Заметьте, что в качестве первого аргумента функции (искомого значения) указан символ звездочки в кавычках.
Звездочка – символ подстановки, подразумевающий, что в этом месте может быть любое количество любых
символов, т.е., другими словами, нам все равно, что будет в ячейке. К сожалению, такой подход не сработает,
если в ячейке число (см. строчку с Ижевском), но с текстом он работает «на ура».
Последнее текстовое значение в строке проще всего найти с помощью функции ПРОСМОТР (LOOKUP):
92
Мастер Формул
www.PlanetaExcel.ru
В английской версии это будет:
=LOOKUP(«яяяяяяя»;B2:M2)
Эта функция работает аналогично ВПР или ГПР, т.е. выполняет поиск заданного значения в указанном
диапазоне (по строке – слева направо, по столбцу – сверху вниз). Причем если точного совпадения с искомым
значением не было, то функция выдаст ближайшее наименьшее значение (это примерно как Интервальный
просмотр =1 у функции ВПР, если вы понимаете, о чем я).
Т.к. мы ищем не числа, а текст, то ПРОСМОТР будет работать вместо символов с их внутренним компьютерным
представлением — кодами. Так, например, в стандартной кодировке английская заглавная буква «A» имеет код
65, а строчная русская «ж» — 230. Самый большой код 255 у последней буквы в алфавите — маленькой русской
«я».
Если ПРОСМОТР не найдет точного совпадения, то будет искать слово с ближайшими наименьшими кодами
символов. Тогда если в качестве поисковой строки задать «слово» из нескольких букв «я», то любое другое
нормальное слово или фраза будет «меньше». Таким образом, наша функция выдаст содержимое последней
заполненной ячейки, чем бы оно ни было.
Формально функция ПРОСМОТР устарела и оставлена в новых версиях Excel больше для совместимости, но в
данном случае отлично выполняет свою задачу.
Числа
Что делать, если наша таблица содержит числовые данные и много пустых ячеек внутри?
Последнее числовое значение можно легко найти, используя ту же логику, что и в предыдущем пункте, т.е.
искать ближайшее наименьшее к заведомо большему, чем есть, числу с помощью функции ПРОСМОТР
(LOOKUP):
Перебирая в поисках совпадения все значения и не найдя точного соответствия, функция ПРОСМОТР выдаст
последнее встретившееся число в строке. Если вы маньяк-астроном, считаете расстояния до звезд и не знаете
даже примерно верхнего предела ваших данных, то можно использовать значение 9,999 999 999 999 99E+307,
93
Мастер Формул
www.PlanetaExcel.ru
т.е. 9,999 999 999 999 99*10307 — максимально возможное число, которое может обработать Microsoft Excel, его
«потолок». Ну или любое число поменьше
Другой весьма изящный способ найти последнее ненулевое значение в строке также использует функцию
ПРОСМОТР, но в другом варианте:
В данном случае функция ищет первый аргумент (число 2) в массиве дробей 1/(B2:M2) и выдает, при
совпадении, соответствующий по номеру элемент из третьего аргумента – диапазона B2:M2. Логику хорошо
видно, если выделить, например, второй аргумент нашей функции и нажать клавишу F9, чтобы увидеть, чему
именно равен внутри Excel:
При делении на пустую ячейку возникает ошибка деления на ноль #ДЕЛ/0. Если в ячейке есть числа, то в
результате получается дробь меньше единицы. Если искать заведомо большее, чем любая получившаяся
дробь, число 2, то ПРОСМОТР найдет последнее ненулевое значение и выдаст его нам.
Единственное ощутимое отличие от предыдущей формулы состоит в том, что нулевые значения этот вариант
не воспринимает и считает пустыми ячейкам (см. строку Москва). Иногда это хорошо, иногда плохо – по
ситуации.
Первое же непустое значение найти будет чуть сложнее:
Давайте разберем эту формулу массива поподробнее:
1. Функция ЕПУСТО (ISBLANK) проверяет по очереди каждую из ячеек строки B2:M2, выдавая на выходе
значения ИСТИНА (1) или ЛОЖЬ (0).
94
Мастер Формул
www.PlanetaExcel.ru
2. Вычитая из единицы полученное значение, мы получим массив, где первая 1 будет соответствовать
первой
непустой
ячейке
в
строке:
3. Функция ПОИСКПОЗ (MATCH) ищет позицию единицы в этом массиве, но, в отличие от ПРОСМОТР,
останавливается после первого совпадения, т.е. выдаст число 4 – номер первой непустой ячейки.
4. Функция ИНДЕКС (INDEX) извлекает из диапазона B2:M2 значение с пересечения строки (1) и столбца
(4) с заданными номерами.
Не забудьте после ввода этой формулы нажать сочетание клавиш Ctrl+Shift+Enter, чтобы ввести ее как формулу
массива. Обычные формулы так не умеют!
Универсальный вариант
Если же ваша таблица не чисто текстовая или числовая, а содержит числа и текст вперемешку, то придется
думать над универсальным вариантом.
Первое непустое значение в строке можно извлечь с помощью уже упоминавшейся в предыдущем пункте
формулы массива – она для этого отлично подходит.
А вот чтобы извлечь последнее непустое значение, придется «шаманить» вот с такой формулой массива:
Логика ее работы следующая:
1. Формула C3:N3″» проверяет каждую ячейку диапазона C3:N3 на предмет пустоты. Для пустых ячеек
выдается логическая ЛОЖЬ (или 0), для заполненных – логическая ИСТИНА (или 1).
2. Полученный набор нулей и единиц умножается на порядковый номер столбца в таблице, который
получается вычитанием номера столбца для текущей ячейки из номера первого столбца в таблице
формулой СТОЛБЕЦ(C3:N3)-СТОЛБЕЦ(B3). Таким образом, номера столбцов с пустыми ячейками будут
умножаться на ноль и останутся только номера столбцов, где ячейки непустые:
95
Мастер Формул
www.PlanetaExcel.ru
3. Затем функция МАКС (MAX) выбирает наибольший номер столбца, т.е. мы получаем номер последней
заполненной ячейки в строке. Ну а потом функция ИНДЕКС (INDEX) извлекает по этому номеру
содержимое ячейки.
96
Мастер Формул
www.PlanetaExcel.ru
Фильтрация формулами
Нет ничего интереснее, чем пробовать новое.
(Ганнибал Лектер)
Классический Фильтр с вкладки Данные (Data – Filter) – безусловно, одна из самых востребованных и часто
используемых возможностей Microsoft Excel при работе со списками. Однако встречаются ситуации, где
хотелось бы проводить фильтрацию автоматически, т.е. при изменении исходных данных или критериев
результаты отбора должны обновляться «на лету». Если не использовать для этого тяжелое оружие в виде
макросов на VBA, то можно попробовать обойтись несколькими формулами.
Допустим, что у нас есть диапазон с исходными данными (A3:D22), справа от него – критерии (J3 и L3), и в
ячейках I8:L14 нужно получить результаты отбора (подсвечены в таблице условным форматированием для
наглядности):
Давайте рассмотрим два принципиально разных способа решения такой задачи.
Способ 1. Без формул массива, но с дополнительным столбцом
Добавим справа от таблицы исходных данных вспомогательный столбец, с помощью значений которого потом
можно будет извлечь нужные нам строки. Введем в ячейку E4 и скопируем вниз следующую формулу:
97
Мастер Формул
www.PlanetaExcel.ru
Как легко сообразить, эта формула проверяет для каждой строки наши условия и выдает логическое значение
ИСТИНА или ЛОЖЬ. Используется функция И (AND), а не ИЛИ (OR), т.к. нам важно, чтобы оба условия
выполнялись одновременно.
Теперь немного изменим нашу формулу в E4, добавив к ней функцию суммирования с предыдущей ячейкой в
столбце:
Технически Excel воспринимает логическое значение ЛОЖЬ как 0, а ИСТИНА — как 1. Поэтому мы получаем
возрастающую последовательность чисел, которые увеличиваются на единицу на каждом совпадении с
критериями. Другими словами, для каждой извлекаемой строки мы получаем уникальный номер, используя
98
Мастер Формул
www.PlanetaExcel.ru
который можно извлечь нужные нам данные. Это можно сделать буквально при помощи одной формулы,
введенной в ячейку I8 и скопированной потом на весь диапазон результатов вправо и вниз:
Давайте разберем ее подробнее:
Функция ПОИСКПОЗ (MATCH) ищет первое вхождение номера строки в созданном нами
вспомогательном столбце E и выдает порядковый номер ячейки, где она нашла совпадение (для строки
1 это будет 5).
Функция ИНДЕКС (INDEX) извлекает из очередного столбца исходных данных содержимое ячейки с
порядковым номером, который перед этим нашла функция ПОИСКПОЗ.
Для пущей красоты можно скрыть ошибки #Н/Д, которые образуются в лишних строчках диапазона
результатов. Для этого можно использовать, например, функцию перехвата ошибок ЕСЛИОШИБКА (IFERROR),
которая заменит их на пустую строку:
99
Мастер Формул
www.PlanetaExcel.ru
Способ 2. Формулой массива без дополнительных столбцов
Этот способ будет ощутимо сложнее, но не требует создания вспомогательного столбца. Для начала давайте
найдем номера строк, которые нужно извлечь. Это можно сделать с помощью хитрой формулы массива,
введенной в ячейку I8 и скопированной потом вниз на весь столбец:
Давайте разберем ее пошагово.
Сначала функция ЕСЛИ (IF) проверяет оба наши условия на столбцах Менеджер и Город:
ЕСЛИ(($A$4:$A$22=$J$3)*($B$4:$B$22=$L$3)
Каждое проверяемое выражение в скобках даст на выходе набор логических значений ИСТИНА или ЛОЖЬ.
Первое условие:
($A$4:$A$22=$J$3)
…превратится в:
{ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:
ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ}
А второе условие:
($B$4:$B$22=$L$3)
…превратится в:
{ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ИСТИНА:ЛО
ЖЬ:ИСТИНА:ИСТИНА:ЛОЖЬ}
Как я уже неоднократно упоминал ранее, Excel воспринимает ЛОЖЬ как ноль и ИСТИНУ как единицу. Так что
перемножение этих двух массивов, в свою очередь, даст нам массив, где 1 будет соответствовать выполнению
обоих условий (т.е. будет стоять в 5-й, 13-й и 18-й позиции). Это легко увидеть, если выделить этот фрагмент
формулы и нажать на клавишу F9:
100
Мастер Формул
www.PlanetaExcel.ru
Если мы получаем 1, то вступает в дело функция СТРОКА (ROW), которая будет выдавать номер очередной
строки за вычетом 3, т.к. наша таблица расположена на листе начиная с 3-й строчки. Таким образом, на выходе
функции ЕСЛИ мы получим массив, где ЛОЖЬ соответствует ненужным строчкам, а для строк, которые надо
отобрать, мы получаем их номер в таблице.
Наконец, чтобы вытащить полученные номера (5,13 и 18) по порядку, мы используем функцию НАИМЕНЬШИЙ
(SMALL). Эта функция выдает N-е по счету наименьшее значение из набора, т.е. для N=1 мы получим самое
маленькое число, для N=2 – второе по счету наименьшее и т.д. Логические значения ЛОЖЬ эта функция
игнорирует.
Дальше все проще.
Теперь, когда у нас есть порядковые номера нужных нам строк, можно извлечь нужные данные из таблицы
при помощи все той же функции ИНДЕКС, как и в первом способе:
Только не забудьте правильно расставить знаки $ для закрепления ссылок при копировании формулы.
Ну и ошибки можно скрыть аналогичным образом – добавив функцию ЕСЛИОШИБКА (IFERROR) для перехвата
#ЧИСЛО! и замены ее на пустую строку:
101
Мастер Формул
www.PlanetaExcel.ru
Формула получается, конечно, жутковатая, но задачу свою она выполняет. Единственный серьезный ее минус
(кроме сложности) — это скорость. Формула массива из второго способа будет в 40-50 раз (!) медленнее считать,
чем в варианте со вспомогательным столбцом из способа 1. На больших таблицах этот фактор может быть
решающим.
Для ускорения можно избавиться от медленной функции ЕСЛИОШИБКА (IFERROR), которая, на самом деле,
ощутимо ухудшает быстродействие.
Добавим одну вспомогательную ячейку, где с помощью штатной функции СЧЁТЕСЛИМН (COUNTIFS) посчитаем
количество строк, которое должно получиться в результате:
Теперь можно заменить медленную ЕСЛИОШИБКА, на гораздо более быструю ЕСЛИ, чтобы скрыть ошибки:
Такой вариант формулы массива уже примерно в 5-6 раз быстрее, чем предыдущий.
102
Анализ предельных
значений
В бизнесе очень часто приходится выявлять и анализировать предельные значения:
Товары, которые лучше всего продаются
Лучших клиентов
Искать наименьшую цену на товар/услугу на рынке среди поставщиков и т.д.
Это можно делать разными способами, при наличии условий и ограничений и без.
В этой главе мы разберем:
Как быстро находить наименьшие и наибольшие значения и выстраивать рейтинги с помощью функций
НАИБОЛЬШИЙ и НАИМЕНЬШИЙ.
Как искать максимальное и минимальное по одному или нескольким условиям.
Как выявлять самые часто встречающиеся значения (для чисел и текста).
Как выполнить частотный анализ данных одной формулой массива с функцией ЧАСТОТА.
Мастер Формул
www.PlanetaExcel.ru
Выявление топовых значений
Скорее всего вам известны простые функции МИН (MIN) и МАКС (MAX), позволяющие быстро найти
минимальное или максимальное значение в таблице. Но что если нам требуется найти, например, не самое
большое, а 2-е или 5-е значение в ТОПе? Здесь помогут функции НАИБОЛЬШИЙ (LARGE) и НАИМЕНЬШИЙ
(SMALL). Синтаксис этих функций похож:
НАИБОЛЬШИЙ(диапазон; позиция)
НАИМЕНЬШИЙ(диапазон; позиция)
Диапазон – диапазон ячеек с числами, которые мы проверяем.
Позиция – целое число, представляющее собой позицию (ранг, номер в рейтинге) извлекаемого
элемента.
где
Например, если у нас есть таблица с прибылями по товарам, то с помощью функции НАИБОЛЬШИЙ можно
легко определить максимальное (первое в рейтинге) значение из диапазона прибыли (B2:B22), которое
фактически будет тождественно формуле МАКС(B2:B22):
Аналогичным образом, функция
=НАИБОЛЬШИЙ(B2:B22;2)
… выдаст следующее за ним максимальное (2-е в рейтинге) и т.д.
Что интересно, аргумент Позиция может быть не просто числом. Так, например, для получения суммы первых
трех максимальных значений в диапазоне можно использовать формулу массива с прописанным внутри
массивом констант для первых трех позиций (сочетание Ctrl+Shift+Enter в конце можно не нажимать):
104
Мастер Формул
www.PlanetaExcel.ru
Если же нам нужно извлечь не числовые значения, а соответствующие им названия товаров (имена клиентов),
то придется использовать более сложную конструкцию, похожую на разобранный ранее пример с «левым ВПР»
(я использовал перенос строк с помощью Alt+Enter для наглядности):
{=ИНДЕКС($A$5:$A$25;
ПОИСКПОЗ(НАИБОЛЬШИЙ($B$5:$B$25;G10);
$B$5:$B$25;
0))}
В английской версии это будет:
{=INDEX($A$5:$A$25;MATCH(LARGE($B$5:$B$25;G10);$B$5:$B$25;0))}
Разберем эту формулу по частям:
НАИБОЛЬШИЙ($B$5:$B$25;G10) – ищет наибольшее значение с заданным рейтингом (1) в столбце
Прибыль.
ПОИСКПОЗ(НАИБОЛЬШИЙ($B$5:$B$25;G10);$B$5:$B$25;0) – определяет порядковый номер ячейки в
столбце Прибыль, где лежит наибольшее значение (это будет число 17, т.к. наибольшее значение 9539
лежит в 17-й по счету ячейке в столбце Прибыль).
ИНДЕКС($A$5:$A$25;ПОИСКПОЗ(НАИБОЛЬШИЙ($B$5:$B$25;G10);$B$5:$B$25;0)) – выдает
содержимое 17-й ячейки из столбца Наименования, т.е. Мука.
105
Мастер Формул
www.PlanetaExcel.ru
Поиск минимального/максимального по условию
В Microsoft Excel давно есть в стандартном наборе функции СЧЁТЕСЛИ (COUNTIF), СУММЕСЛИ (SUMIF) и
СРЗНАЧЕСЛИ (AVERAGEIF) и их аналоги СЧЁТЕСЛИМН (COUNTIFS), СУММЕСЛИМН (SUMIFS) и СРЗНАЧЕСЛИМН
(AVERAGEIFS), позволяющие искать количество, сумму и среднее в таблице по одному или нескольким
условиям. Но только в июньском обновлении последней версии Microsoft Excel 2016 появились функции,
которые умеют искать по условию максимум и минимум — они называются МАКСЕСЛИМН (MAXIFS) и
МИНЕСЛИМН (MINIFS). Но что же делать, если у вас не последняя версия Excel?
Чтобы обойти это ограничение и решить проблему, можно использовать небольшую формулу массива.
Предположим, нам нужно найти минимальную цену для каждого товара в базе данных по поставщикам:
В английской версии это будет соответственно
{=MIN(IF(A7=$F$7:$F$34;$H$7:$H$34))}
Разберем логику работы этой формулы.
Функция ЕСЛИ проверяет каждую ячейку массива из столбца Товар (F7:F34) на предмет равенства текущему
товару. Если это так, то выдается соответствующее ему значение из столбца Цена (H7:H34). В противном случае
– логическое значение ЛОЖЬ, которое игнорируется потом функцией МИН.
Для наглядности можно выделить мышью всю функцию ЕСЛИ(…) и нажать на клавиатуре F9, чтобы увидеть
результирующий массив, из которого потом функция МИН и выбирает минимальное значение:
106
Мастер Формул
www.PlanetaExcel.ru
Если же нужно найти не только значение цены, но и название поставщика, то можно использовать уже не
формулу массива, а простую связку функций ИНДЕКС-ПОИСКПОЗ (INDEX-MATCH), для реализации поиска
минимальной цены в столбце H и вывода имени поставщика для нее из столбца левее:
Функция ПОИСКПОЗ (MATCH) ищет порядковый номер ячейки в столбце Цена, где лежит найденная нами
ранее минимальная цена, а функция ИНДЕКС (INDEX) выдает содержимое ячейки с этим номером из столбца
Поставщик.
Такая конструкция сработает, правда, только в том случае, если в столбце с ценами нет дубликатов, т.к. если
будет существовать несколько одинаковых минимальных цен, то связка ИНДЕКС-ПОИСКПОЗ выдаст
поставщика для первого попавшегося совпадения. Например, если в третьей строке базы данных по
поставщикам будет число 127, то наша формула выдаст поставщика Кобальт, хотя его цена по чаю совсем не
минимальная, но случайно с ней совпала.
Чтобы исключить такую возможность, придется использовать более сложную формулу массива:
107
Мастер Формул
www.PlanetaExcel.ru
Она работает аналогично предыдущей, но ищет склеенную с помощью оператора конкатенации «&» пару
Чай127 (A7&B7) в склеенных столбцах ТоварЦена ($F$7:$F$34&$H$7:$H$34).
108
Мастер Формул
www.PlanetaExcel.ru
Поиск минимального/максимального по нескольким условиям
При поиске минимальных или максимальных значений по двум, трем и более условиям можно использовать
конструкцию, похожую на предыдущий пример. Предположим, что у нас есть вот такая таблица с данными по
продажам автомобилей:
Чтобы найти, например, минимальную прибыль по KIA в Москве, можно использовать вот такую формулу:
Она полностью аналогична разобранной в предыдущем пункте, за исключением того, что первым аргументом
функции ЕСЛИ здесь служит не одно равенство, а перемножение двух проверок — модели машины и города:
(D5:D28=L14)*(E5:E28=N14)
Поскольку в данном случае Excel интерпретирует логическую ЛОЖЬ как 0, а ИСТИНУ как 1, то такое выражение
даст на выходе попарное перемножение двух массивов нулей и единиц, так что на выходе единицы останутся
только там, где продается именно KIA и именно в Москве:
109
Мастер Формул
www.PlanetaExcel.ru
И в итоге функция МИН будет выбирать минимальное не из всех значений, а только из отобранных функцией
ЕСЛИ:
Максимальное по условию можно найти совершенно аналогичным образом, просто заменив функцию МИН
(MIN) на МАКС (MAX).
Если условий для поиска совсем много, то, возможно, самым удобным вариантом окажется использование
функций баз данных ДМИН (DMIN) и ДМАКС (DMAX). Эти функции очень похожи на функцию выборочного
суммирования БДСУММ (DSUM), которую мы разбирали ранее:
110
Мастер Формул
www.PlanetaExcel.ru
Поиск самых часто встречающихся значений
Иногда приходится искать в таблицах не самые большие, а наиболее часто встречающиеся значения.
Применительно к магазину, это могут быть не самые дорогие, а самые часто покупаемые товары или самое
часто встречающееся количество позиций в заказе. Иногда такую процедуру называют частотным анализом.
В этом случае нужно по-разному решать задачу в зависимости от того, с чем мы имеем дело – с числами или с
текстом.
Поиск самых часто встречающихся чисел функцией МОДА
Предположим, перед нами стоит задача проанализировать имеющиеся данные по продажам в магазине, с
целью определить наиболее часто встречающееся количество купленных товаров. В нашем распоряжении
имеется статистика в следующей таблице:
Для определения самого часто встречающегося числа в диапазоне можно использовать функцию МОДА
(MODE):
Т.е., согласно нашей статистике, чаще всего покупатели приобретают 3 шт. товара.
Если существует не одно, а сразу несколько значений, встречающихся одинаково максимальное количество раз
(несколько мод), то для их выявления можно использовать функцию МОДА.НСК (MODE.MULT). Ее нужно
вводить как формулу массива, т.е. выделить сразу несколько пустых ячеек, ввести в строку формул:
=МОДА.НСК(B2:B100)
… и нажать сочетание клавиш Ctrl+Shift+Enter.
На выходе мы получим список всех мод из наших данных:
111
Мастер Формул
www.PlanetaExcel.ru
Т.е., судя по нашим данным, часто берут не только по 3, но и по 16 шт. товаров. Обратите внимание, что в наших
данных только две моды (3 и 16), поэтому третья ячейка, выделенная «про запас», будет с ошибкой #Н/Д.
Частотный анализ по диапазонам функцией ЧАСТОТА
Если же нужно проанализировать не целые, а дробные числа, то правильнее будет оценивать не количество
одинаковых значений, а попадание их в заданные диапазоны. Например, нам необходимо понять, какой вес
чаще всего бывает у покупаемых товаров, чтобы правильно выбрать для магазина тележки и упаковочные
пакеты подходящего размера. Другими словами, нам нужно определить, сколько чисел попадает в интервал
1..5 кг, сколько в интервал 5..10 кг и т.д.
Для решения подобной задачи можно воспользоваться функцией ЧАСТОТА (FREQUENCY). Для нее нужно
заранее подготовить ячейки с интересующими нас интервалами (карманами) и затем выделить пустой
диапазон ячеек (G2:G5), по размеру на одну ячейку больший, чем диапазон карманов (F2:F4), и ввести ее как
формулу массива, нажав в конце сочетание Ctrl+Shift+Enter:
Поиск самого часто встречающегося текста
Если мы имеем дело не с числами, а с текстом, то подход к решению будет принципиально другой.
Предположим, что у нас есть таблица из 100 строк с данными о проданных в магазине товарах:
112
Мастер Формул
www.PlanetaExcel.ru
Нужно определить, какие товары покупались наиболее часто?
Самым простым и очевидным решением будет добавить рядом столбец с функцией СЧЁТЕСЛИ (COUNTIF),
чтобы подсчитать количество вхождений каждого товара в столбце А:
Затем, само собой, отсортировать получившийся столбец по убыванию и посмотреть на первые строчки. Или
же вместо всех перечисленных действий использовать небольшую формулу массива:
Если использовать Alt+Enter для разнесения аргументов формулы на разные строки, то получится более
наглядно:
=ИНДЕКС(A2:A100;
ПОИСКПОЗ(МАКС(СЧЁТЕСЛИ(A2:A100;A2:A100));
СЧЁТЕСЛИ(A2:A100;A2:A100);
0))
Давайте разберем ее по кусочкам:
113
Мастер Формул
www.PlanetaExcel.ru
СЧЁТЕСЛИ(A2:A100;A2:A100) – формула массива, которая ищет по очереди количество вхождений
каждого товара в диапазоне A2:A100 и выдаст на выходе массив {2,18,17,1,19,13 и т.д.}, т.е. фактически
заменяет собой дополнительный столбец.
МАКС – находит в массиве вхождений {2,18,17,1,19,13 и т.д.} самое большое число, т.е. товар, который
покупали чаще всего.
ПОИСКПОЗ – вычисляет порядковый номер строки в таблице, где МАКС нашла самое большое число.
ИНДЕКС – выдает из таблицы содержимое ячейки с номером, который нашла ПОИСКПОЗ.
В англоязычном варианте наша формула будет выглядеть как:
=INDEX(A2:A100;
MATCH(MAX(COUNTIF(A2:A100;A2:A100));
COUNTIF(A2:A100;A2:A100);
0))
114
Дубликаты
и уникальные
Есть ли повторы в моем списке? Сколько уникальных элементов в нем, на самом деле, содержится? Как их
вывести отдельным списком? Похожие вопросы регулярно возникают, пожалуй, перед всеми пользователями
Microsoft Excel. И если инструмент удаления дубликатов был добавлен, начиная с версии Excel 2007, то по
остальным задачам придется импровизировать.
В этой главе мы подробно разберем:
Как при помощи формул массива быстро подсчитать количество уникальных элементов в списке.
Как извлечь из большого списка набор уникальных значений без дубликатов.
Как удалить дубликаты (формулами и без них) в наших таблицах.
Мастер Формул
www.PlanetaExcel.ru
Подсчет количества уникальных значений в списке
Одна из первых задач при работе с большими таблицами, содержащими повторы, – подсчет количества
уникальных значений, которые присутствуют в списке. Это можно сделать разными способами, в зависимости
от ситуации.
Предположим, что у нас имеется вот такой список с повторяющимися в нем значениями:
Легко заметить, что, на самом деле, в нем упоминается всего лишь 5 городов. Чтобы вычислить это количество,
можно использовать простую, но красивую технику. Для понятности сначала добавим к нашей таблице еще
один столбец с функцией СЧЁТЕСЛИ (COUNTIF), которая вычислит количество вхождений каждого элемента в
общем списке:
Теперь добавим рядом еще один столбец, где с помощью простой формулы вычислим значение обратной
дроби 1/Число вхождений:
116
Мастер Формул
www.PlanetaExcel.ru
Если теперь просуммировать все значения по этому столбцу, то мы как раз и получим количество уникальных
элементов в списке!
Теперь, когда логика вычислений стала понятна, можно свернуть все вышеперечисленные действия в одну
компактную формулу массива без дополнительных столбцов (не забудьте нажать Ctrl+Shift+Enter в конце):
Если в диапазоне могут встречаться пустые ячейки, то нашу формулу придется немного модернизировать, т.к.
на пустых ячейках будет возникать ошибка деления на ноль. С помощью функций ЕСЛИ (IF) и ЕПУСТО (ISBLANK)
придется дополнительно проверять ячейку на заполненность:
117
Мастер Формул
www.PlanetaExcel.ru
В английской версии это будет, соответственно:
{=SUM(IF(ISBLANK(A2:A15);0;1/COUNTIF(A2:A15;A2:A15)))}
118
Мастер Формул
www.PlanetaExcel.ru
Извлечение уникальных значений
Продолжением предыдущего пункта является не подсчет количества, а извлечение уникальных элементов.
Предположим, что у нас есть список, где каждое из значений может встречаться более одного раза, т.е. с
повторениями:
Легко заметить, что, как и в прошлом примере, в этом списке встречаются, на самом деле, всего лишь 5 городов
(Тамбов, Воронеж, Калуга, Смоленск и Тверь) – их отдельным списком нам и нужно получить.
Необходимое вступление
Прежде чем рассматривать решение этой задачи с помощью формул, необходимо честно отметить, что во
многих случаях другие способы могут оказаться удобнее и про них не стоит забывать. А именно:
Удаление дубликатов. Вкладка Данные – Удалить дубликаты (Data – Remove Duplicates) удаляет из
списка все повторы, оставляя только по одному вхождению каждого элемента. Плюс этого способа в
очевидной простоте – не нужны формулы, а лишь два движения мышью. Минусы же в том, что мы
удаляем элементы (это не всегда хорошо), и в том, что при изменении исходного списка придется
заново повторять всю процедуру. Формулы для удаления дубликатов не самые простые и быстрые, но
пересчитываются автоматически – иногда это принципиально важно.
Сводная таблица. Если построить на основе исходного списка сводную таблицу (вкладка Вставка –
Сводная таблица) и затем поместить поле Города в область строк, то мы также получим желаемое, т.к.
сводная таблица всегда отображает список элементов без повторов:
119
Мастер Формул
www.PlanetaExcel.ru
При большом размере исходного списка этот способ может оказаться гораздо эффективнее, т.к.
формулы (особенно формулы массива) пересчитываются относительно медленно. Отрицательный
момент состоит в том, что сводные таблицы не пересчитываются автоматически и их придется вручную
обновлять (щелчок правой кнопкой мыши по сводной – Обновить) при изменении исходных данных.
Если же перечисленные выше способы вас не устраивают, то можно попробовать решить задачу удаления
дубликатов с помощью формул.
Способ 1. Вспомогательный столбец
Для понимания зайдем немного издалека. Добавим к нашей таблице еще один столбец с функцией СЧЁТЕСЛИ
(COUNTIF), которая будет подсчитывать порядковый номер вхождения очередного элемента:
120
Мастер Формул
www.PlanetaExcel.ru
Обратите внимание, что в адресе проверяемого диапазона ($A$1:A2) первая ссылка закреплена, а вторая – нет.
Таким образом, при копировании формулы вниз на весь столбец будет выдаваться порядковый номер каждого
города с начала списка.
Среди полученных чисел нас интересуют первые вхождения, т.е. единички. Если мы сумеем отобрать все
города, напротив которых 1, то успешно решим нашу задачу. Для этого немного модернизируем нашу
предыдущую формулу:
При помощи функции ЕСЛИ (IF) мы в ней проверяем номер вхождения и в случае, если он равен 1, выводим
порядковый номер текущей строки в списке, полученный с помощью функции СТРОКА (ROW). Единицу из
номера строки вычитаем, т.к. наша таблица содержит шапку и фактические данные начинаются со второй
строчки. Если вхождение не первое, то ничего особого не делаем, и функция ЕСЛИ будет выдавать ЛОЖЬ
(FALSE).
Теперь сделаем рядом с нашим списком городов мини-табличку для вывода результатов с порядковыми
номерами строк и извлечем туда номера из столбца В с помощью функции НАИМЕНЬШИЙ (SMALL):
121
Мастер Формул
www.PlanetaExcel.ru
Как мы уже разбирали ранее, эта функция выдает N-e по счету наименьшее число из списка (см. главу Анализ
предельных
значений). Таким образом, мы получаем последовательно по возрастанию все номера строк первых
вхождений каждого города.
Осталось с помощью функции ИНДЕКС (INDEX) извлечь названия городов из первого столбца по известным
номерам строк:
Для маскировки ошибок #ЧИСЛО, возникающих на избыточных ячейках, можно использовать классический
способ их перехвата с помощью функции ЕСЛИОШИБКА (IFERROR) с заменой на пустую текстовую строку:
122
Мастер Формул
www.PlanetaExcel.ru
В английской версии:
=IFERROR(INDEX($A$2:$A$13;SMALL($B$2:$B$13;E3));»»)
Если же принципиально хочется не использовать дополнительных столбцов и сделать все одной формулой, то
придется пойти немного другим путем.
Способ 2. Формула массива
Чтобы понять главную идею, сначала добавьте к исходному списку еще один столбец с простой формулой:
Функция ПОИСКПОЗ (MATCH) выдает порядковый номер заданного элемента в таблице. Если таких элементов
несколько, то выдается номер первого из них. Т.к. наша таблица имеет шапку и данные начинаются со второй
строки, то мы прибавляем дополнительную единичку.
Обратите внимание на важный нюанс: результат работы этой формулы для первых вхождений каждого города
совпадает с номером строки (подсвеченные ячейки). Этот момент и можно использовать в дальнейшем для
извлечения уникальных значений.
Добавим еще один столбец с проверкой на совпадение с номером строки с помощью функции ЕСЛИ (IF), чтобы
вывести номера нужных нам строк:
123
Мастер Формул
www.PlanetaExcel.ru
По аналогии с предыдущим примером добавим рядом таблицу для результатов и используем функцию
НАИМЕНЬШИЙ (SMALL), чтобы извлечь из столбца С номера строк по возрастанию:
Теперь осталось вытащить названия городов из столбца А по известным номерам строк. Это можно сделать с
помощью функции ИНДЕКС (INDEX):
124
Мастер Формул
www.PlanetaExcel.ru
Ну и, наконец, всю описанную выше логическую цепочку можно свернуть в одну формулу массива, чтобы не
использовать вспомогательных столбцов (не забудьте нажать Ctrl+Shift+Enter):
Если разнести аргументы на разные строки с помощью сочетания Alt+Enter, то станет нагляднее:
{=ИНДЕКС($A$2:$A$13;
НАИМЕНЬШИЙ(ЕСЛИ((ПОИСКПОЗ($A$2:$A$13;$A$2:$A$13;0)+1)=СТРОКА($A$2:$A$13);
СТРОКА($A$2:$A$13));
E3)-1)}
Опять же, если в списке могут встречаться пустые строки, то необходимо будет еще дополнительно добавить
проверку с помощью функции ЕСЛИОШИБКА (IFERROR), т.к. функция ПОИСКПОЗ (MATCH) в нашей формуле
будет выдавать #Н/Д:
{=ИНДЕКС($A$2:$A$13;
НАИМЕНЬШИЙ(ЕСЛИ((ЕСЛИОШИБКА(ПОИСКПОЗ($A$2:$A$13;$A$2:$A$13;0);0)+1)=СТРОКА($A$2:$A$13);
СТРОКА($A$2:$A$13));
E3)-1)}
Не самая приятная для ввода и весьма медленная формула, прямо скажем. Так что, особенно для больших
таблиц, стоит рассмотреть альтернативные варианты со сводными таблицами или расширенным фильтром.
125
Мастер Формул
www.PlanetaExcel.ru
Удаление дубликатов
Жизнь – это не кино. Дублей не будет.
(Брюс Уиллис)
Если в списке есть повторы, которые надо удалить, но не сдвигать при этом нижестоящие элементы вверх на
освободившееся после удаления место, то можно воспользоваться относительно простой формулой:
Все очень просто. Функция СЧЁТЕСЛИ (COUNTIF) подсчитывает количество вхождений очередного элемента
списка, начиная с первой его ячейки. Если это количество = 1, т.е. элемент встретился первый раз, то мы
выводим его в соседний столбец, иначе выводим пустую строку.
В английской версии это будет:
=IF(COUNTIF($A$1:A2;A2)=1;A2;»»)
126
Сравнение
списков
Вопрос из Топ-10 на любом тренинге – «как сравнить два списка между собой?». Задача, с которой сталкивается
абсолютно любой пользователь, а некоторые – не один раз в день.
В этой главе мы разберем:
Как быстро найти отличия-совпадения в двух таблицах и подсветить их цветом.
Как определить, совпадают или нет два набора элементов.
Если не совпадают, то как вывести отличия отдельным списком.
Как выявлять совпадения в двух, трех и более списках.
Мастер Формул
www.PlanetaExcel.ru
Совпадают или нет?
Теперь ты детектив, сынок. Отныне тебе
запрещается верить в совпадения.
(Джим Гордон. Темный рыцарь: Возрождение
легенды)
Прежде чем искать различия, ответим на фундаментальный вопрос – совпадают ли два списка или нет, в
принципе? Может и сравнивать ничего не нужно?
Для начала рассмотрим простой случай, когда в наших списках нет дубликатов, они одинакового размера и
отсортированы (т.е. элементы в них синхронизированы в одинаковом порядке). В этом случае найти количество
несовпадений можно с помощью одной формулы массива:
Фрагмент формулы A2:A10C2:C10 попарно сравнивает ячейки из двух списков и выдает на выходе результаты
проверки в виде логических значений ИСТИНА (если пара не совпадает) и ЛОЖЬ (если совпадает):
Чтобы преобразовать их в более удобные для подсчета 1 и 0, используется двойной минус. Фактически это
умножение на -1 дважды, что не меняет результат, но конвертирует его в число.
И, наконец, для суммирования полученных нулей и единиц используется функция СУММПРОИЗВ
(SUMPRODUCT), которая к тому же позволяет ввести нашу формулу массива без нажатия Ctrl+Shift+Enter.
Если же списки не отсортированы, т.е. элементы в них расположены в отличающемся порядке? Тогда нам
поможет функция СЧЁТЕСЛИ (COUNTIF), которая подсчитывает количество совпадений с заданным значением
в проверяемом диапазоне:
128
Мастер Формул
www.PlanetaExcel.ru
Так, в приведенном выше примере в дополнительных столбцах В и E подсчитывается количество вхождений
каждого элемента в другом списке. Если списки полностью совпадают, то результатом работы этой формулы
для каждого товара будет 1. Если какой-либо элемент будет отсутствовать, то напротив него мы увидим 0.
Если попарно перемножить эти два набора чисел и сложить произведения (с помощью функции
СУММПРОИЗВ), то в результате (если списки совпадают и везде единички) мы должны получить число, которое
равно количеству элементов в одном из списков. Используя эту логику, нашу проверку можно свернуть в одну
формулу без использования дополнительных столбцов:
В английской версии это будет, соответственно:
=SUMPRODUCT(COUNTIF(D2:D10;A2:A10);COUNTIF(A2:A10;D2:D10))=COUNTA(A2:A10)
Если же усугубить ситуацию и предположить, что в списках могут быть повторы и количество элементов в них
может отличаться, то для решения задачи придется пойти немного другим путем. Нам потребуется функция
ПОИСКПОЗ (MATCH), которая ищет заданное значение в диапазоне и выдает на выходе порядковый номер
ячейки, где оно было найдено, либо ошибку #Н/Д, если искомого значения в диапазоне нет. Сначала давайте
применим эту функцию в дополнительных столбцах – для понятности:
129
Мастер Формул
www.PlanetaExcel.ru
Формула в ячейке B2 ищет первый элемент из Списка1 (т.е. Клубнику) во втором списке и выдает ее
порядковый номер (2). Аналогичным образом, формула в ячейке E2 выдает порядковый номер Сливы в
Списке1. Последний аргумент функции ПОИСКПОЗ, равный нулю, означает, что мы ведем поиск точного
совпадения.
То, что списки не одинакового размера и в них могут несколько раз повторяться одни и те же товары, в данном
случае уже роли не играет, т.к. при нескольких вхождениях ПОИСКПОЗ просто выдает порядковый номер
первого встретившегося элемента.
Обратите также внимание на то, что наша функция выдала ошибку #Н/Д на Манго в первом списке, т.к. этого
товара нет в Списке2 – именно этот нюанс мы и будем дальше использовать. Итоговая формула без «костылей»
в виде дополнительных столбцов будет выглядеть так:
В английском варианте:
{=AND(ISNUMBER(MATCH(A2:A10;D2:D13;0));
ISNUMBER(MATCH(D2:D13;A2:A10;0)))}
Функция ЕЧИСЛО (ISNUMBER) проверяет, является ли результат ПОИСКПОЗ числом или чем-то иным
(например, ошибкой), и выдает соответственно логические значения ИСТИНА или ЛОЖЬ. А дальше все
130
Мастер Формул
www.PlanetaExcel.ru
полученные результаты проверяются с использованием функции И (AND), поскольку нам необходимо полное
совпадение, т.е. в результате везде должна быть только ИСТИНА. Хотя бы одна ЛОЖЬ – и функция
просигнализирует нам о присутствии различий.
131
Мастер Формул
www.PlanetaExcel.ru
Подсветка отличий-совпадений в двух списках
Начнем с простого. Предположим, что у нас есть два частично пересекающихся списка без дубликатов:
Эта книга про формулы, но, откровенно говоря, самый простой способ найти отличия в двух таблицах – это
вовсе не формулы, а условное форматирование. Если выделить оба диапазона (удерживая Ctrl) и выбрать на
вкладке Главная – Условное форматирование – Правила выделения ячеек – Повторяющиеся значения (Home
– Conditional formatting – Highlight cell rules – Duplicate values) и затем использовать опцию Уникальные
(Unique), то Excel подсветит все ячейки, у которых нет повторов, т.е. отличия списков:
Если же выбрать вариант «повторяющиеся», то цветом будут выделены, наоборот, совпадения:
Плюс такого способа в простоте и наглядности. Минусы же в невозможности таким образом сравнить списки с
разных листов, сравнить больше двух списков и отсутствии автоматического обновления. Поэтому давайте
перейдем к более сложным, но эффективным инструментам – формулам.
132
Мастер Формул
www.PlanetaExcel.ru
Выявление различий в двух списках
Предположим, что у нас есть два списка значений и нам необходимо выяснить различия между ними.
Например, какие элементы из второго списка отсутствуют в первом?
Есть несколько способов решения этой задачи.
Способ 1. Простой — функция СЧЁТЕСЛИ
В качестве самого простого варианта можно использовать функцию СЧЁТЕСЛИ (COUNTIF) для подсчета
количества вхождений каждого элемента из второго списка в первом:
Все просто: если напротив элемента получаем 1, то он есть в первом списке; если 0, то его там нет (т.е. это и
есть отличие). Естественно, к полученному столбцу можно потом применить фильтр, чтобы отобрать нужные
строки и работать дальше только с ними.
Способ 2. Продвинутый – получаем отличия отдельным списком
Это способ существенно сложнее, чем предыдущий, но позволяет получить список отличающихся значений
сразу, без создания дополнительного столбца с подсчетом вхождений и последующей ручной фильтрацией.
Для наглядности и понимания зайдем немного издалека. Добавим ко второму списку столбец с формулой,
которая будет проверять количество вхождений с помощью функции СЧЁТЕСЛИ (как в предыдущем способе),
и если оно равно 0, то выводить номер строки для текущего элемента функцией СТРОКА (ROW):
133
Мастер Формул
www.PlanetaExcel.ru
Сделаем небольшую заготовку с нумерацией справа от наших списков, куда с помощью функции
НАИМЕНЬШИЙ (SMALL) выведем последовательно сначала самое наименьшее число в столбце D, потом 2-е по
счету наименьшее, 3-е и т.д.:
Таким образом мы получили номера строк отличающихся элементов. Чтобы извлечь их самих, можно
использовать функцию ИНДЕКС (INDEX), которая вытаскивает значение из массива-столбца по порядковому
номеру:
134
Мастер Формул
www.PlanetaExcel.ru
Теперь избавимся от вспомогательного столбца. Для этого в нашу формулу вместо диапазона D2:D10 вставим
логическую проверку количества вхождений с помощью функций ЕСЛИ и СЧЁТЕСЛИ, которую мы применили в
самом начале:
После ввода эту формулу нужно будет ввести уже как формулу массива – с помощью сочетания Ctrl+Shift+Enter
и скопировать потом на весь наш результирующий диапазон G2:G9. После этого вспомогательный столбец D
можно смело очистить – он больше не нужен.
Для пущей красоты можно спрятать ошибки #ССЫЛКА!, возникающие в избыточных ячейках, используя
функцию ЕСЛИОШИБКА (IFERROR):
{=ЕСЛИОШИБКА(ИНДЕКС($C$2:$C$10;
НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ($A$2:$A$9;$C$2:$C$10)=0;
СТРОКА($C$2:$C$10));
F2)-1);
«»)}
В английской версии наша формула будет:
{=IFERROR(INDEX($C$2:$C$10;
SMALL(IF(COUNTIF($A$2:$A$9;$C$2:$C$10)=0;
ROW($C$2:$C$10));
F2)-1);
«»)}
135
Мастер Формул
www.PlanetaExcel.ru
Поиск совпадений в двух и более списках
Обратной стороной сравнения списков обычно является задача выявления не различий, а наоборот – общих
элементов, присутствующих в двух (и более) списках. Давайте попробуем красиво ее решить.
Само собой, можно использовать тот же подход, который мы применяли в предыдущих пунктах, но искать не
разницу, а совпадение. Для большинства разобранных выше формул это означает замену 0 на 1 при проверке
результата функции СЧЁТЕСЛИ (COUNTIF) с помощью ЕСЛИ (IF):
Однако такой способ трудно масштабируется: если надо вытащить общие элементы не из двух, а из трех,
четырех и более списков, то формула принимает совсем уж устрашающий вид. Тут лучше использовать немного
другой подход.
Во-первых, для наглядности и компактности давайте дадим нашим спискам имена, чтобы затем использовать
их в формулах. Выделите оба диапазона с их названиями, удерживая клавишу Ctrl и выберите на вкладке
Формулы – Создать из выделенного (Formulas – Create from selection). В открывшемся окне включите только
галочку В строке выше (First Row) и нажмите ОК:
Excel даст нашим спискам имена, взяв их из первых строк выделенных диапазонов, т.е. Список1 и Список2.
Проверить получившиеся именованные диапазоны можно с помощью Диспетчера Имен на вкладке Формулы
(Formulas – Name Manager):
136
Мастер Формул
www.PlanetaExcel.ru
Здесь же можно впоследствии подкорректировать и размеры диапазонов, если количество элементов в
списках будет меняться.
Нужная нам формула для поиска и вывода общих элементов в этих двух списках будет выглядеть следующим
образом:
{=ИНДЕКС(Список1;
ПОИСКПОЗ(1;
СЧЁТЕСЛИ(Список2;Список1)*НЕ(СЧЁТЕСЛИ($H$1:H1;Список1));
0))}
Или в английском варианте:
{=INDEX(Список1;
MATCH(1;
COUNTIF(Список2;Список1)*NOT(COUNTIF($H$1:H1;Список1));
0))}
Давайте разберем ее пошагово из середины наружу.
1. Функция СЧЁТЕСЛИ(Список2;Список1) ищет во втором списке каждый элемент первого списка по
очереди. На выходе получим массив нулей и единиц, отражающий элементы в Списке1, совпадающие
со Списком2, т.е. {1:0:1:0:0:1:1:0}.
2. СЧЁТЕСЛИ($H$1:H1;Список1) ищет каждый элемент Списка1 в списке предыдущих найденных общих
элементов. Так, например, в ячейке H4 эта формула примет вид СЧЁТЕСЛИ($H$1:H3;″Клубника″) и
выдаст на выходе массив {1:0:1:0:0:0:0:0}, где единицы соответствуют уже найденным выше общим
элементам (Арбуз и Клубника). Этот фрагмент формулы нужен, чтобы второй раз не вывести уже
137
Мастер Формул
www.PlanetaExcel.ru
обнаруженные совпадающие значения, поэтому далее мы используем функцию НЕ (NOT), которая
инвертирует результат (меняет местами нули и единицы).
3. Перемножение
двух
описанных
выше
функций
СЧЁТЕСЛИ(Список2;Список1)
и
НЕ(СЧЁТЕСЛИ($H$1:H1;Список1)) фактически представляет собой попарное перемножение массивов.
Например, для все той же ячейки H4 это массив совпадений {1:0:1:0:0:1:1:0} и инвертированный массив
уже обнаруженных общих элементов {0:1:0:1:1:1:1:1}. В результате получим массив {0:0:0:0:0:1:1:0}, где
единицы соответствуют еще не выведенным совпадениям.
4. Функция ПОИСКПОЗ выдает порядковый номер первой единицы в полученном массиве, т.е. число 6.
5. И, наконец, функция ИНДЕКС выводит элемент Списка1 по вычисленному номеру, т.е. извлекает
очередное совпадение (если оно не было выведено ранее).
Прелесть такого способа в том, что при увеличении количества списков достаточно будет добавить еще один
именованный диапазон (Список3) и множитель в нашу формулу – массив проверки совпадений с помощью еще
одной функции СЧЁТЕСЛИ (COUNTIF):
138
Трансформация
таблиц формулами
Иногда таблицы, которые достаются нам для работы, необходимо бывает перестроить: отсортировать,
изменить их размеры, повернуть, сжать и т.п. Причем иногда хочется сделать это с помощью формул, а не
ручным перетаскиванием-копированием.
В этой главе мы разберем:
Как отсортировать формулой таблицу с текстом или числами.
Как разместить элементы списка в обратном порядке.
Как транспонировать таблицу (поменять местами строки и столбцы).
Как получить монолитную таблицу, удалив из нее пустые ячейки.
Как разделить один столбец на несколько.
Как реализовать случайную выборку из списка формулами.
Мастер Формул
www.PlanetaExcel.ru
Размещение элементов списка в обратном порядке
Банальная задача, периодически встречающаяся в работе почти любого пользователя Microsoft Excel, –
расположить элементы списка в обратном порядке. Решается с помощью одной простой формулы:
Выражение СТРОКА($A$9)-СТРОКА(A2)+1 даст, при протягивании формулы в D2 вниз, обратный отсчет
9,8,7,6…2, а функция ИНДЕКС извлекает из исходного списка элементы с этими номерами, т.е. в обратном
порядке.
В английской версии это будет:
=INDEX($A$2:$A$9;ROW($A$9)-ROW(A2)+1)
Если заранее неизвестно, сколько именно элементов будет в списке, то можно слегка изменить нашу формулу,
чтобы она проверяла сразу весь столбец «с запасом»:
Номер последней ячейки (строки) вычисляет в данном случае функция СЧЁТЗ (COUNTA), сканируя весь столбец
А. Единственный минус такого варианта в том, что список обязательно должен быть без пустых ячеек. Если же
они могут встречаться, то для решения задачи потребуется уже формула массива:
140
Мастер Формул
www.PlanetaExcel.ru
Как легко заметить, это вариация первого способа, где диапазон взят «с запасом» сразу до сотой строки и номер
строки последней заполненной ячейки задается не жестко, а вычисляется с помощью фрагмента:
МАКС(($A$2:$A$100″»)*СТРОКА($A$2:$A$100))
Каждая ячейка в диапазоне A2:A100 проверяется на заполненность с помощью выражения ($A$2:$A$100″»),
что даст на выходе массив значений ИСТИНА и ЛОЖЬ. Затем этот массив поэлементно умножается на массив
номеров строк, получаемый с помощью функции СТРОКА($A$2:$A$100). Поскольку логическую ИСТИНУ Excel
интерпретирует как 1, а ЛОЖЬ – как 0, то после умножения мы получим массив номеров заполненных ячеек. А
уже из него функция МАКС выбирает самое большое число, т.е. номер последней заполненной строки.
141
Мастер Формул
www.PlanetaExcel.ru
Транспонирование (поворот) таблиц
В математике транспонированием называют процедуру, когда в матрице (двумерная таблица с числами)
строки и столбцы меняются местами. В Microsoft Excel часто возникает необходимость делать такое с
диапазонами, т.е. то, что располагалось в строке, пустить по столбцу и наоборот.
Самый простой и известный способ – это транспонирование с помощью специальной вставки. Выделяем и
копируем исходную таблицу, затем щелкаем правой кнопкой мыши по пустой ячейке и выбираем среди
желтых значков вариантов специальной вставки опцию Транспонировать (Transpose):
Это работает вполне надежно, но что если вам нужно транспонировать диапазон, не теряя при этом связи с
исходными ячейками? Чтобы потом при изменении данных в начальном диапазоне (A1:C5) – автоматически
обновлялся бы транспонированный (F1:J3)?
В этом случае без формул не обойтись.
Способ 1. Функция ТРАНСП
Выделите нужное количество пустых ячеек (т.е. если, например, исходная таблица была из 3 строк и 5 столбцов,
то выделить обязательно нужно диапазон из 5 строк и 3 столбцов) и введите в первую ячейку функцию ТРАНСП
(TRANSPOSE), указав для нее в качестве аргумента исходную таблицу:
После ввода функции необходимо нажать не Enter, а Ctrl+Shift+Enter, чтобы ввести ее сразу во все выделенные
ячейки как формулу массива.
Если в исходной таблице были пустые ячейки, то при таком способе они будут отображаться как нули:
142
Мастер Формул
www.PlanetaExcel.ru
Обойти этот момент можно, если добавить проверку на заполненность в нашу формулу:
В английской версии эта формула будет выглядеть как:
=TRANSPOSE(IF(ISBLANK(A1:C5);»»;A1:C5))
Также необходимо помнить, что технически это одна формула массива, которая вычисляет содержимое сразу
всех ячеек в диапазоне F1:J3, поэтому нельзя будет потом менять содержимое отдельных ячеек в
транспонированной таблице. Так, например, если попробовать очистить любую ячейку клавишей Delete, то мы
получим сообщение об ошибке:
Если этот момент вас сильно расстраивает, то следующий способ – для вас.
Способ 2. Формируем адрес сами
Этот подход к решению задачи транспонирования отчасти похож на предыдущий, но позволяет свободно
редактировать значения во второй таблице и вносить в нее любые правки при необходимости. Для создания
ссылок на строки и столбцы нам понадобятся четыре функции из категории Ссылки и массивы:
Функция АДРЕС(номер_строки; номер_столбца) выдает адрес ячейки по номеру строки и столбца на
листе, т.е. АДРЕС(2;3) выдаст, например, ссылку на ячейку C2.
Функция ДВССЫЛ(ссылка_в_виде_текста) преобразует текстовую строку, например, «F3» в настоящую
ссылку на ячейку F3.
Функции СТРОКА(ячейка) и СТОЛБЕЦ(ячейка) выдают номер строки и столбца для заданной ячейки,
например =СТРОКА(A3) выдаст 1, а =СТОЛБЕЦ(А3) выдаст 3.
Теперь соединяем эти функции, чтобы получить нужную нам ссылку, т.е. вводим в любую свободную ячейку
вот такую формулу:
=ДВССЫЛ(АДРЕС(СТОЛБЕЦ(A1);СТРОКА(A1)))
143
Мастер Формул
www.PlanetaExcel.ru
Т.е. вместо строк берем столбцы, а вместо столбцов – строки.
В английской версии Excel эта формула будет выглядеть соответственно:
=INDIRECT(ADDRESS(COLUMN(A1),ROW(A1)))
А затем копируем (протягиваем) формулу на соседние ячейки как обычно черным крестом. В итоге должно
получиться примерно следующее:
Т.е. при копировании формулы вниз по столбцу она выдает ссылку, которая «уходит» вправо по строке. А когда
формулу копируем вправо, то она берет следующие строки, сдвигаясь вниз. Причем это обычная формула (не
формула массива), со всеми вытекающими плюсами, легкостью редактирования и т.д.
144
Мастер Формул
www.PlanetaExcel.ru
Удаление пустых ячеек в списке
Одним из частых случаев преобразования является избавление от пустых ячеек, чтобы сформировать на
выходе монолитный список без пробелов:
Для начала добавим еще один столбец, где с помощью функции ЕСЛИ проверим – пуста ли ячейка, и выведем
либо логическое значение ЛОЖЬ, либо номер строки:
В английской версии эта формула соответственно будет выглядеть как:
=IF(ISBLANK(A1);FALSE;ROW(A1))
Теперь добавим справа область для результатов с номерами и вытащим из столбца B полученные числа по
возрастанию с помощью функции НАИМЕНЬШИЙ (SMALL):
145
Мастер Формул
www.PlanetaExcel.ru
Ну а зная номера строк, можно извлечь и названия товаров из столбца A с помощью функции ИНДЕКС (INDEX):
В первом приближении задача решена. Для полноты картины можно добавить еще парочку улучшений.
Если таблицы начинаются не с первой строки листа или имеют «шапки», то функция СТРОКА в столбце B будет
выдавать неправильное значение. Лучше заменить ее на разность СТРОКА(текущая ячейка)-СТРОКА(первая
ячейка в таблице):
Аналогичным образом можно поступить и в таблице результатов – не добавлять столбец E с ручной
нумерацией, а заменить это на разницу в номерах строк между текущей ячейкой и началом таблицы:
146
Мастер Формул
www.PlanetaExcel.ru
Ну и в качестве апофеоза можно свернуть все в одну формулу массива, подставив формулу из B3 в функцию
НАИМЕНЬШИЙ вместо $B$3:$B$13:
Для наглядности, разложим ее на несколько строк с помощью сочетания клавиш Alt+Enter в строке формул:
{=ИНДЕКС($A$3:$A$13;
НАИМЕНЬШИЙ(ЕСЛИ(ЕПУСТО($A$3:$A$13);
ЛОЖЬ;
СТРОКА($A$3:$A$13)-СТРОКА($A$2));
СТРОКА(E5)-СТРОКА($E$4)))}
В англоязычном варианте наша формула будет:
{=INDEX($A$3:$A$13;
SMALL(IF(ISBLANK($A$3:$A$13);
FALSE;
ROW($A$3:$A$13)-ROW($A$2));
ROW(E5)-ROW($E$4)))}
147
Мастер Формул
www.PlanetaExcel.ru
Сортировка формулой
Безусловно, сортировать списки можно и стандартными средствами Microsoft Excel – кнопки сортировки на
вкладке Данные (Data) никто не отменял. Тем не менее, иногда принципиально, чтобы сортировка
происходила без участия пользователя, «на лету». А вот тут уже придется либо использовать макросы (а это
отдельный разговор), либо обратиться за помощью к формулам, ибо они, как известно, пересчитываются
автоматически.
Давайте рассмотрим несколько способов реализации такой сортировки.
Для чисел
Если список содержит только числовую информацию, то его сортировку можно легко сделать с помощью
функций НАИМЕНЬШИЙ (SMALL) и СТРОКА (ROW):
Функция НАИМЕНЬШИЙ (SMALL) выдает из массива n-й по счету наименьший элемент. Т.е.
НАИМЕНЬШИЙ(A2:A10;1) — это самое маленькое число из исходного списка, НАИМЕНЬШИЙ(А2:А10;2) — второе
по счету наименьшее и т.д.
Функция СТРОКА (ROW) выдает порядковый номер строки для указанной ячейки, т.е. СТРОКА(А1)=1,
СТРОКА(A2)=2 и т.д. В данном случае разница СТРОКА(A2)-СТРОКА($A$1) используется просто как генератор
последовательности чисел 1,2,3… для нашего отсортированного списка. С тем же успехом можно было сделать
дополнительный столбец, заполнить его вручную числовой последовательностью 1,2,3… и ссылаться на него
вместо функции СТРОКА.
Для текста
Если в списке не числа, а текст, то функция НАИМЕНЬШИЙ (SMALL) уже не сработает, поэтому придется пойти
другим, чуть более длинным, путем.
Как обычно, зайдем для понятности издалека. Добавим к нашим данным служебный столбец с формулой, где
будет вычисляться порядковый номер каждого элемента в будущем отсортированном списке с помощью
функции СЧЁТЕСЛИ (COUNTIF):
148
Мастер Формул
www.PlanetaExcel.ru
Технически это функция подсчета количества ячеек, которые меньше текущей. Применительно к тексту понятие
«меньше» означает «выше по алфавиту», т.е. ближе к началу отсортированного списка. Таким образом, мы
получаем, по сути, порядковые номера, по которым и нужно расставить элементы для упорядочивания. Одно
«но»: если в нашем списке есть повторы (см. Елена), то они получат одинаковый номер, что не есть хорошо.
Чтобы выкрутиться, добавим еще одно слагаемое к нашей формуле:
Или в английском варианте:
=COUNTIF($A$2:$A$10;»