Регион по индексу excel

Двухмерная таблица — это прямоугольный диапазон ячеек, то есть неразрывный диапазон состоящий из нескольких строк и столбцов. Для выборки значений из двухмерных таблиц легко и удобно использовать эффективную формулу из комбинации функции ИНДЕКС и ПОИСКПОЗ. Главным недостатком такой формулы является тот факт, то ее можно применять только для двухмерных прямоугольных таблиц в неразрывном диапазоне ячеек. Но на своем поле эта формула чувствует себя как рыба в воде и создает шикарные инструменты для поиска по нескольким условиям пользователя.

Выборка значений формулой ИНДЕКС и ПОИСКПОЗ с несколькими условиями

Ниже на рисунке представленная таблица с данными о продажах по регионам за 4 года. Каждая строка представляет собой отдельную область региона, а каждый столбец – отдельный год. Допустим пользователь должен по двум условиям сделать выборку значений из таблицы:

  1. Выбрать регион.
  2. Указать год.

В результате должен получить значение ячейки из соответственной строки и столбца таблицы. Как в таблице Пифагора:

Двухмерная таблица.

Большинству пользователей Excel хорошо известна формула из функций ИНЕДКС и ПОИСКПОЗ. В отличие от других формул, здесь используется сразу две функции ПОИСКПОЗ во втором и третьем аргументе функции ИНДЕКС. Так как поиск выполняется по двум условиям. В третьем аргументе «Номер столбца» функции ИНДЕКС нет постоянного числа (константы), а вместо него функция ПОИСКПОЗ, которая динамически изменяет значение.

Поисковая функция ПОИСКПОЗ возвращает позицию найденного значения в списке. На рисунке сейчас выбран регион «Северный», значит функция возвращает значение 3, так как этот регион находится на третьем месте в списке. Это же число на данный момент является значением второго аргумента функции ИНДЕКС. Год 2011 найден в строке заголовка таблицы. Так как это вторая позиция в списке, то функция ПОИСКПОЗ возвращает число 2 – для третьего аргумента. Функция ИНДЕКС на основе чисел 3 и 2 возвращаемых через функцию ПОИСКПОЗ возвращает соответственное значение указанным критериям выборки пользователем.



Альтернативная формула для ИНДЕКС и ПОИСКПОЗ по нескольким условиям

Можно существенно расширить возможности выше приведенной формулы. Данные по продажам можно выводить из таблицы сразу по нескольким условиям выборки значений. Так, чтобы пользователь мог указать 1 вариант из четырех условий:

  1. Указаны регион и год (как в предыдущем примере).
  2. Указывать только регион.
  3. Указывать только год.
  4. Вообще ничего не указывать ни одного критерия выборки.

Теперь будет выполняться новая формула ИНДЕКС и ПОИСКПОЗ с несколькими условиями. Измененная формула и все равно должна предоставлять правильные итоговые результаты ни в чем не ограничивая своего пользователя.

Например, если не будет указан ни один из критериев выборки данных о продажах, тогда формула будет подразумевать, что пользователю необходимая общая сумма продаж за все года по всем регионам в итоговом значении. Другими словами, если не указывать пользовательские критерии условий выборки, формула возвращает общую сумму всех чисел в таблице:

ИНДЕКС и ПОИСКПОЗ с несколькими условиями.

Общая структура модифицированной формулы такая же, как и в предыдущем примере. Изменено только несколько деталей. Диапазон, определенный функцией ИНДЕКС, теперь охватывает и строку листа №9 и столбец F. Так же модифицированы обе функции ПОИСКПОЗ и дополнительно расположены в аргументах функций ЕСЛИОШИБКА. Эта же функция в формуле позволяет возвращать общую сумму чисел по строкам или по столбцам благодаря охвату итоговых значений в строке B9:F9 и в столбце F3:F9.

Заменителем в функции ЕСЛИОШИБКА выступает функция СЧЕТЗ. Данная функция позволяет посчитать количество непустых ячеек, которые содержат как числа, так и текстовое содержимое. То есть возвращает номер последней строки или столбца в диапазоне таблицы. В принципе можно обойтись и без этой функции вписав неизменяемые числа количества строк и столбцов вручную. Но если в будущем планируется добавлять в таблицу новые строки и столбцы формула будет выдавать неточные итоговые результаты. А так благодаря функции СЧЕТЗ формула будет сама динамически подсчитывать общее количество строк и столбцов при заполнении дополнительными данными таблицы отчета по продажам.

На рисунке изображена та же таблица, но пользователь не указал критерий выборки «Год» в ячейке B12. Так как заголовки строк и столбцов не содержат пустых ячеек старая формула возвращает ошибку с кодом #Н/Д! В тоже время в новой измененной формуле контроль над ситуацией принимает функция ЕСЛИОШИБКА и возвращает значение из своего второго аргумента «Значение если ошибка». Таким способом в функцию ИНДЕКС просто передается номер последнего столбца. Если же не будет указан регион, а год будет указан функция ИНДЕКС будет принимать от функции ЕСЛИОШИБКА номер последней строки в исходной таблице и отображать содержимое ячейки F7 с итоговой суммой.

 

kirillk77

Пользователь

Сообщений: 13
Регистрация: 30.01.2013

Уважаемые форумчане, столкнулся с таким вопросом. Есть база (20000 строк) в одном из столбцов которой имеем адрес. Т.к. база собиралась из разных источников никакой формализации адреса нет, но в каждом адресе где-то встречается название города. Есть база городов (столбец). Надо найти и вывести в отдельную ячейку название города из адреса.
Пример Адреса:
188350 ; Гатчина ; ул. Карла Маркса, 54
Адрес доставки: Владимирская обл., Ковров, ул. Ватунина, 2а-9
Красноярский край Красноярск
И тд., те никакой зависимости
Кроме того, еще может быть проблемма, например с этого адреса «Адрес доставки: Владимирская обл., Ковров, ул. Ватунина, 2а-9» может быть выбран Владимир, а это область!
Заранее спасибо за помощь.

 

BUGL

Пользователь

Сообщений: 67
Регистрация: 06.10.2013

Приложите пример данных. Т.к. в одном случае разделитель , а в другом ;

Нет ТЗ — получишь ХЗ.
Люблю универсально-стандартные решения, даже если они сложнее

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

Можно ещё выбрать «Маркса», или «край»…
Думаю нужно иметь список городов, затем разбивать адрес на части между разделителями (сужу по примерам — сработает в 66%), и сверяться с этим списком.

 

Z

Пользователь

Сообщений: 6111
Регистрация: 21.12.2012

Win 10, MSO 2013 SP1

#4

20.12.2016 17:47:26

Цитата
kirillk77 написал: Есть база городов (столбец). Надо найти и вывести в отдельную ячейку название города из адреса.

Как вариант — =ВПР(), город, который ищем — *город* или же «*»&ячейка_с_городом&»*»
ps Правила — пп 2.2., 2.3.

«Ctrl+S» — достойное завершение ваших гениальных мыслей!.. ;)

 

kirillk77

Пользователь

Сообщений: 13
Регистрация: 30.01.2013

BUGL. в том то и дело, что разделители могут быть разные, может их вообще не быть. заполнялось все разными неизвестными людьми :). Я полагаю надо искать совпадения и потом проверить на следующий символ, если это буква, значит это не название города.  

 

kirillk77

Пользователь

Сообщений: 13
Регистрация: 30.01.2013

Если не привязываться к конкретному примеру, как найти последовательность символов в текстовой строке из массива (столбца) последовательностей символов?

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

Что, в России нет городов с названиями из нескольких слов? Даже у нас есть… наверное :)

 

Jungl

Пользователь

Сообщений: 830
Регистрация: 18.01.2016

kirillk77, файл-пример приложите

 

BUGL

Пользователь

Сообщений: 67
Регистрация: 06.10.2013

Можно использовать мягкий ВПР =) буквально 15 минут назад разместил тему:

http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=85907&TITLE_SEO=85907-myagkiy-vpr-primernyy-poisk-znacheniya-iz-spiska&MID=715143

Как раз для таких случаев с высокой инвариантностью. Вот только из примера первого поста скорее всего возьмет Владимир, нежели Ковров.

Нет ТЗ — получишь ХЗ.
Люблю универсально-стандартные решения, даже если они сложнее

 

kirillk77

Пользователь

Сообщений: 13
Регистрация: 30.01.2013

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

#11

20.12.2016 18:46:09

100% однозначно не обработаете даже с списком городов, ибо бардак — есть там например такое:

Цитата
352690, Краснодарский край, г. Апшеронск, ул. Ленина, 12 юв. маг. «Нисса»,350000, Краснодарский край, г. Горячий Ключ, ул. Революции, д. 4, СБСВ-МАРКЕТ,
352570, Краснодарский край, Мостовской район, пос. Мостовской, ул. Кирова, д.84″А»,352570,Краснодарский край,Мостовской район,пос.Мостовской, ул .Кутузова 93,
614000 г Пермь ул Г. Хасана, 41,
353710, Краснодарский край, ст-ца Каневская, Ленина ул., 17,353710   Краснодарский край, ст-ца Каневская, Нестеренко 59а м-н «У Елены»,
 

Jungl

Пользователь

Сообщений: 830
Регистрация: 18.01.2016

Можно в принципе макросами. 2 варианта вижу:
1. заменой символов, разбивкой, циклами, InStr, etc.
2. слать запросы яндексу, опять же замена символов, разбивка и циклы.

 

BUGL

Пользователь

Сообщений: 67
Регистрация: 06.10.2013

Можно еще сейчас сделать список «на удаление»: края и прочие, что в себе могут содержать города аля Владимирская область.
Исключаем тем самым самые неверные данные, и уже по очишенным данным сканируем мягким ВПРом из моего сообщения выше.
Думаю, что точность будет 95-98%

Изменено: BUGL21.12.2016 14:12:45

Нет ТЗ — получишь ХЗ.
Люблю универсально-стандартные решения, даже если они сложнее

 

С.М.

Пользователь

Сообщений: 936
Регистрация: 22.12.2012

#14

21.12.2016 22:53:40

Код
Function ЮДФ287(Адрес As String, БазаГородов As Range)
    Dim Item, S1, S2, Txt As String, SArr() As String, P As Long
    Txt = LCase(Replace(Trim(Адрес), "-", ""))
    For P = 1 To Len(Txt)
        If Not Mid(Txt, P, 1) Like "[а-яё0-9]" Then Mid(Txt, P, 1) = " "
    Next
    Do While InStr(1, Txt, "  ")
        Txt = Replace(Txt, "  ", " ")
    Loop
    SArr = Split(Txt, " ")
    For Each Item In БазаГородов.Value
        S1 = LCase(Replace(Trim(Item), "-", ""))
        For Each S2 In SArr
            If S2 = S1 Then
                ЮДФ287 = Item: Exit Function
            End If
        Next
    Next
    ЮДФ287 = CVErr(xlErrNA)
End Function
 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

#15

22.12.2016 00:26:29

Есть дополнение к коду С.М. — полезно вставить третьей строкой

Код
    Set БазаГородов = Intersect(БазаГородов, БазаГородов.Parent.UsedRange)

тогда как второй аргумент без тормозов можно указывать столбец целиком, т.е. например

Код
=ЮДФ287(B2;ГородаРФ!A:A)

P.S. Нашёл косяк — тут город не находит, а он есть!
450005, г.Белая Калитва, 50 лет Октября, 16,

Изменено: Hugo22.12.2016 00:38:32

 

kirillk77

Пользователь

Сообщений: 13
Регистрация: 30.01.2013

Спасибо за ответ и за код. Сейчас пробую Fuzzy (эксель подвис,трудится, :))  С кодом попробую чуть позже, разберусь как и куде его вставлять. Я, к сожалению, еще на такой продвинутый пользователь.
Еще раз всем большое спасибо, что не бросили меня один на один с вопросом :)  

 

С.М.

Пользователь

Сообщений: 936
Регистрация: 22.12.2012

#17

22.12.2016 14:27:17

Цитата
Hugo написал:
Есть дополнение к коду С.М.

Игорь, но UsedRange учитывает и форматирование — так ненароком можно «удлинить» диапазон пустыми ячейками.

Цитата
Hugo написал:
Нашёл косяк — тут город не находит, а он есть

Добавил «костыль» в код функции (см. в файле), функция находит Белую Калитву в таком адресе :
450005, г.Белая Калитва, 50 лет Октября, 16,
Но в таком (если название содержит пробел и не ограничено с обеих сторон какими-либо знаками препинания) :
450005, г.Белая Калитва  50 лет Октября, 16,
не находит.

Прикрепленные файлы

  • Общая база(на форум).1.2.xlsb (35.76 КБ)

 

pharmaprofi

Пользователь

Сообщений: 234
Регистрация: 19.11.2014

pharmaprofi

О моя любимая тема… На самом деле уже пару лет занимаюсь приведением кучи адресов (до 50 000 в месяц) к стандарту.
Только я стандартизирую до улицы. Могу поделиться некоторым мыслями.

1) В качестве словаря можно использовать базу ФИАС (ранее был кладр)
2) В России достаточно много населенных пунктов с одинаковым названием. (как пример г. Киров-в Кировской и Калужчкой обл.)
3) Название городов может иметь несколько синонимов (СПБ, Нижний, и т.п.)

Я в своем алгоритме делаю примерно следующее:
1) Определяю ВОЗМОЖНЫЕ области 2) Сравниваю все города которые есть в этих областях со строкой 3) Повторяю то же для улиц.
Все это с использованием словарей исключений и синонимов. На выходе получается массив Excel (с подсветкой совпадений) для «ручной» выверки.

В вашем примере достаточно много почтовых индексов. Индекс — самый простой способ для локализации адреса.

Есть несколько Web сервисов которые позволяют нормализовать адреса, возможно проще / быстрее для этих целей воспользоваться их услугами.

Изменено: pharmaprofi23.12.2016 00:02:03

 

С.М.

Пользователь

Сообщений: 936
Регистрация: 22.12.2012

#19

23.12.2016 20:08:57

Скрытый текст

Занудство. Таки вот:

Код
Function ЮДФ412(Адрес As String, БазаГородов As Range)
    Const SP As String = "[!А-ЯЁа-яё0-9-]"
    Dim Item, Txt As String, W As String, RW As String, LW As Long, P1 As Long, P2 As Long, F1 As Boolean, F2 As Boolean
    If Len(Trim(Адрес)) Then
        For Each Item In БазаГородов.Value
            W = Trim(Item)
            LW = Len(W)
            If LW Then
                Txt = Адрес
                P1 = InStr(1, Txt, W, vbTextCompare)
                Do While P1
                    P2 = P1 + LW
                    If P1 > 1 Then F1 = Mid(Txt, P1 - 1, 1) Like SP Else F1 = True
                    If P2 <= Len(Txt) Then F2 = Mid(Txt, P2, 1) Like SP Else F2 = True
                    If F1 * F2 Then
                        RW = RW & "; " & W
                        Exit Do
                    Else
                        Mid(Txt, P1, LW) = Space(LW)
                        P1 = InStr(1, Txt, W, vbTextCompare)
                    End If
                Loop
            End If
        Next
    End If
    If Len(RW) Then ЮДФ412 = Mid(RW, 3) Else ЮДФ412 = "#НетВБазе!"
End Function

Прикрепленные файлы

  • Общая база(на форум).2.1.xlsb (92.86 КБ)

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#20

25.12.2016 14:53:08

Доброе время суток
Вариант на регулярных выражениях.

Код
Private FReg As Object

Public Function GetCity(ByVal thisAddress As String) As String
    Dim sPattern As String
    If FReg Is Nothing Then
        Dim pSheet As Worksheet, pFuncs As WorksheetFunction
        Set FReg = CreateObject("VBScript.RegExp")
        Set pSheet = ThisWorkbook.Worksheets("ГородаРФ")
        Set pFuncs = Application.WorksheetFunction
        
        sPattern = Join(pFuncs.Transpose(pSheet.Range(pSheet.Cells(2, 1), pSheet.Cells(pSheet.UsedRange.Rows.Count, 1)).Value), "|")
        sPattern = "(?: |,|:|;|.|^)(" & sPattern & ")(?: |,|:|;|.|$)"
        FReg.Pattern = sPattern
    End If
    GetCity = FReg.Execute(thisAddress)(0).SubMatches(0)
End Function
 

karpi4

Пользователь

Сообщений: 8
Регистрация: 25.05.2018

#21

06.08.2018 18:42:58

Цитата
pharmaprofi написал:
Есть несколько Web сервисов которые позволяют нормализовать адреса, возможно проще / быстрее для этих целей воспользоваться их услугами.

Это каких например? А то нужно отсортировать список из примерно 7000 адресов и выделить города.

 

sokol92

Пользователь

Сообщений: 4446
Регистрация: 10.09.2017

 

karpi4

Пользователь

Сообщений: 8
Регистрация: 25.05.2018

#23

07.08.2018 12:13:57

Цитата
sokol92 написал:
Например,  здесь .

Спасибо!

15 / 14 / 3

Регистрация: 23.09.2014

Сообщений: 251

1

Подставить индексы городам для привязки к регионам

30.11.2018, 21:38. Показов 1908. Ответов 2


Студворк — интернет-сервис помощи студентам

В таблице список городов и регионов в которых они находятся. И еще список регионов c индексами
Подскажите пожалуйста как с помощью функций расставить индексы областей к каждому городу?

Миниатюры

Подставить индексы городам для привязки к регионам
 



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

30.11.2018, 21:38

2

772 / 615 / 294

Регистрация: 05.01.2014

Сообщений: 1,338

01.12.2018, 07:35

2

Лучший ответ Сообщение было отмечено Richik как решение

Решение

Вариант.

Код

=ИНДЕКС($I$1:$I$44;ПОИСКПОЗ(F1;$J$1:$J$44;0))



1



15 / 14 / 3

Регистрация: 23.09.2014

Сообщений: 251

02.12.2018, 20:09

 [ТС]

3

Большое спасибо



0



Этот учебник рассказывает о главных преимуществах функций ИНДЕКС и ПОИСКПОЗ в Excel, которые делают их более привлекательными по сравнению с ВПР. Вы увидите несколько примеров формул, которые помогут Вам легко справиться со многими сложными задачами, перед которыми функция ВПР бессильна.

В нескольких недавних статьях мы приложили все усилия, чтобы разъяснить начинающим пользователям основы функции ВПР и показать примеры более сложных формул для продвинутых пользователей. Теперь мы попытаемся, если не отговорить Вас от использования ВПР, то хотя бы показать альтернативные способы реализации вертикального поиска в Excel.

Зачем нам это? – спросите Вы. Да, потому что ВПР – это не единственная функция поиска в Excel, и её многочисленные ограничения могут помешать Вам получить желаемый результат во многих ситуациях. С другой стороны, функции ИНДЕКС и ПОИСКПОЗ – более гибкие и имеют ряд особенностей, которые делают их более привлекательными, по сравнению с ВПР.

ИНДЕКС и ПОИСКПОЗ в Excel

  • Базовая информация об ИНДЕКС и ПОИСКПОЗ
  • Используем функции ИНДЕКС и ПОИСКПОЗ в Excel
  • Преимущества ИНДЕКС и ПОИСКПОЗ перед ВПР
  • ИНДЕКС и ПОИСКПОЗ – примеры формул
    • Как находить значения, которые находятся слева
    • Вычисления при помощи ИНДЕКС и ПОИСКПОЗ
    • Поиск по известным строке и столбцу
    • Поиск по нескольким критериям
    • ИНДЕКС и ПОИСКПОЗ в сочетании с ЕСЛИОШИБКА

Содержание

  1. Базовая информация об ИНДЕКС и ПОИСКПОЗ
  2. ИНДЕКС – синтаксис и применение функции
  3. ПОИСКПОЗ – синтаксис и применение функции
  4. Как использовать ИНДЕКС и ПОИСКПОЗ в Excel
  5. Почему ИНДЕКС/ПОИСКПОЗ лучше, чем ВПР?
  6. 4 главных преимущества использования ПОИСКПОЗ/ИНДЕКС в Excel:
  7. ИНДЕКС и ПОИСКПОЗ – примеры формул
  8. Как выполнить поиск с левой стороны, используя ПОИСКПОЗ и ИНДЕКС
  9. Вычисления при помощи ИНДЕКС и ПОИСКПОЗ в Excel (СРЗНАЧ, МАКС, МИН)
  10. О чём нужно помнить, используя функцию СРЗНАЧ вместе с ИНДЕКС и ПОИСКПОЗ
  11. Как при помощи ИНДЕКС и ПОИСКПОЗ выполнять поиск по известным строке и столбцу
  12. Поиск по нескольким критериям с ИНДЕКС и ПОИСКПОЗ
  13. ИНДЕКС и ПОИСКПОЗ в сочетании с ЕСЛИОШИБКА в Excel

Базовая информация об ИНДЕКС и ПОИСКПОЗ

Так как задача этого учебника – показать возможности функций ИНДЕКС и ПОИСКПОЗ для реализации вертикального поиска в Excel, мы не будем задерживаться на их синтаксисе и применении.

Приведём здесь необходимый минимум для понимания сути, а затем разберём подробно примеры формул, которые показывают преимущества использования ИНДЕКС и ПОИСКПОЗ вместо ВПР.

ИНДЕКС – синтаксис и применение функции

Функция INDEX (ИНДЕКС) в Excel возвращает значение из массива по заданным номерам строки и столбца. Функция имеет вот такой синтаксис:

INDEX(array,row_num,[column_num])
ИНДЕКС(массив;номер_строки;[номер_столбца])

Каждый аргумент имеет очень простое объяснение:

  • array (массив) – это диапазон ячеек, из которого необходимо извлечь значение.
  • row_num (номер_строки) – это номер строки в массиве, из которой нужно извлечь значение. Если не указан, то обязательно требуется аргумент column_num (номер_столбца).
  • column_num (номер_столбца) – это номер столбца в массиве, из которого нужно извлечь значение. Если не указан, то обязательно требуется аргумент row_num (номер_строки)

Если указаны оба аргумента, то функция ИНДЕКС возвращает значение из ячейки, находящейся на пересечении указанных строки и столбца.

Вот простейший пример функции INDEX (ИНДЕКС):

=INDEX(A1:C10,2,3)
=ИНДЕКС(A1:C10;2;3)

Формула выполняет поиск в диапазоне A1:C10 и возвращает значение ячейки во 2-й строке и 3-м столбце, то есть из ячейки C2.

Очень просто, правда? Однако, на практике Вы далеко не всегда знаете, какие строка и столбец Вам нужны, и поэтому требуется помощь функции ПОИСКПОЗ.

ПОИСКПОЗ – синтаксис и применение функции

Функция MATCH (ПОИСКПОЗ) в Excel ищет указанное значение в диапазоне ячеек и возвращает относительную позицию этого значения в диапазоне.

Например, если в диапазоне B1:B3 содержатся значения New-York, Paris, London, тогда следующая формула возвратит цифру 3, поскольку «London» – это третий элемент в списке.

=MATCH("London",B1:B3,0)
=ПОИСКПОЗ("London";B1:B3;0)

Функция MATCH (ПОИСКПОЗ) имеет вот такой синтаксис:

MATCH(lookup_value,lookup_array,[match_type])
ПОИСКПОЗ(искомое_значение;просматриваемый_массив;[тип_сопоставления])

  • lookup_value (искомое_значение) – это число или текст, который Вы ищите. Аргумент может быть значением, в том числе логическим, или ссылкой на ячейку.
  • lookup_array (просматриваемый_массив) – диапазон ячеек, в котором происходит поиск.
  • match_type (тип_сопоставления) – этот аргумент сообщает функции ПОИСКПОЗ, хотите ли Вы найти точное или приблизительное совпадение:
    • 1 или не указан – находит максимальное значение, меньшее или равное искомому. Просматриваемый массив должен быть упорядочен по возрастанию, то есть от меньшего к большему.
    • 0 – находит первое значение, равное искомому. Для комбинации ИНДЕКС/ПОИСКПОЗ всегда нужно точное совпадение, поэтому третий аргумент функции ПОИСКПОЗ должен быть равен 0.
    • -1 – находит наименьшее значение, большее или равное искомому значению. Просматриваемый массив должен быть упорядочен по убыванию, то есть от большего к меньшему.

На первый взгляд, польза от функции ПОИСКПОЗ вызывает сомнение. Кому нужно знать положение элемента в диапазоне? Мы хотим знать значение этого элемента!

Позвольте напомнить, что относительное положение искомого значения (т.е. номер строки и/или столбца) – это как раз то, что мы должны указать для аргументов row_num (номер_строки) и/или column_num (номер_столбца) функции INDEX (ИНДЕКС). Как Вы помните, функция ИНДЕКС может возвратить значение, находящееся на пересечении заданных строки и столбца, но она не может определить, какие именно строка и столбец нас интересуют.

Как использовать ИНДЕКС и ПОИСКПОЗ в Excel

Теперь, когда Вам известна базовая информация об этих двух функциях, полагаю, что уже становится понятно, как функции ПОИСКПОЗ и ИНДЕКС могут работать вместе. ПОИСКПОЗ определяет относительную позицию искомого значения в заданном диапазоне ячеек, а ИНДЕКС использует это число (или числа) и возвращает результат из соответствующей ячейки.

Ещё не совсем понятно? Представьте функции ИНДЕКС и ПОИСКПОЗ в таком виде:

=INDEX(столбец из которого извлекаем,(MATCH (искомое значение,столбец в котором ищем,0))
=ИНДЕКС(столбец из которого извлекаем;(ПОИСКПОЗ(искомое значение;столбец в котором ищем;0))

Думаю, ещё проще будет понять на примере. Предположим, у Вас есть вот такой список столиц государств:

ИНДЕКС и ПОИСКПОЗ в Excel

Давайте найдём население одной из столиц, например, Японии, используя следующую формулу:

=INDEX($D$2:$D$10,MATCH("Japan",$B$2:$B$10,0))
=ИНДЕКС($D$2:$D$10;ПОИСКПОЗ("Japan";$B$2:$B$10;0))

Теперь давайте разберем, что делает каждый элемент этой формулы:

  • Функция MATCH (ПОИСКПОЗ) ищет значение «Japan» в столбце B, а конкретно – в ячейках B2:B10, и возвращает число 3, поскольку «Japan» в списке на третьем месте.
  • Функция INDEX (ИНДЕКС) использует 3 для аргумента row_num (номер_строки), который указывает из какой строки нужно возвратить значение. Т.е. получается простая формула:

    =INDEX($D$2:$D$10,3)
    =ИНДЕКС($D$2:$D$10;3)

    Формула говорит примерно следующее: ищи в ячейках от D2 до D10 и извлеки значение из третьей строки, то есть из ячейки D4, так как счёт начинается со второй строки.

Вот такой результат получится в Excel:

ИНДЕКС и ПОИСКПОЗ в Excel

Важно! Количество строк и столбцов в массиве, который использует функция INDEX (ИНДЕКС), должно соответствовать значениям аргументов row_num (номер_строки) и column_num (номер_столбца) функции MATCH (ПОИСКПОЗ). Иначе результат формулы будет ошибочным.

Стоп, стоп… почему мы не можем просто использовать функцию VLOOKUP (ВПР)? Есть ли смысл тратить время, пытаясь разобраться в лабиринтах ПОИСКПОЗ и ИНДЕКС?

=VLOOKUP("Japan",$B$2:$D$2,3)
=ВПР("Japan";$B$2:$D$2;3)

В данном случае – смысла нет! Цель этого примера – исключительно демонстрационная, чтобы Вы могли понять, как функции ПОИСКПОЗ и ИНДЕКС работают в паре. Последующие примеры покажут Вам истинную мощь связки ИНДЕКС и ПОИСКПОЗ, которая легко справляется с многими сложными ситуациями, когда ВПР оказывается в тупике.

Почему ИНДЕКС/ПОИСКПОЗ лучше, чем ВПР?

Решая, какую формулу использовать для вертикального поиска, большинство гуру Excel считают, что ИНДЕКС/ПОИСКПОЗ намного лучше, чем ВПР. Однако, многие пользователи Excel по-прежнему прибегают к использованию ВПР, т.к. эта функция гораздо проще. Так происходит, потому что очень немногие люди до конца понимают все преимущества перехода с ВПР на связку ИНДЕКС и ПОИСКПОЗ, а тратить время на изучение более сложной формулы никто не хочет.

Далее я попробую изложить главные преимущества использования ПОИСКПОЗ и ИНДЕКС в Excel, а Вы решите – остаться с ВПР или переключиться на ИНДЕКС/ПОИСКПОЗ.

4 главных преимущества использования ПОИСКПОЗ/ИНДЕКС в Excel:

1. Поиск справа налево. Как известно любому грамотному пользователю Excel, ВПР не может смотреть влево, а это значит, что искомое значение должно обязательно находиться в крайнем левом столбце исследуемого диапазона. В случае с ПОИСКПОЗ/ИНДЕКС, столбец поиска может быть, как в левой, так и в правой части диапазона поиска. Пример: Как находить значения, которые находятся слева покажет эту возможность в действии.

2. Безопасное добавление или удаление столбцов. Формулы с функцией ВПР перестают работать или возвращают ошибочные значения, если удалить или добавить столбец в таблицу поиска. Для функции ВПР любой вставленный или удалённый столбец изменит результат формулы, поскольку синтаксис ВПР требует указывать весь диапазон и конкретный номер столбца, из которого нужно извлечь данные.

Например, если у Вас есть таблица A1:C10, и требуется извлечь данные из столбца B, то нужно задать значение 2 для аргумента col_index_num (номер_столбца) функции ВПР, вот так:

=VLOOKUP("lookup value",A1:C10,2)
=ВПР("lookup value";A1:C10;2)

Если позднее Вы вставите новый столбец между столбцами A и B, то значение аргумента придется изменить с 2 на 3, иначе формула возвратит результат из только что вставленного столбца.

Используя ПОИСКПОЗ/ИНДЕКС, Вы можете удалять или добавлять столбцы к исследуемому диапазону, не искажая результат, так как определен непосредственно столбец, содержащий нужное значение. Действительно, это большое преимущество, особенно когда работать приходится с большими объёмами данных. Вы можете добавлять и удалять столбцы, не беспокоясь о том, что нужно будет исправлять каждую используемую функцию ВПР.

3. Нет ограничения на размер искомого значения. Используя ВПР, помните об ограничении на длину искомого значения в 255 символов, иначе рискуете получить ошибку #VALUE! (#ЗНАЧ!). Итак, если таблица содержит длинные строки, единственное действующее решение – это использовать ИНДЕКС/ПОИСКПОЗ.

Предположим, Вы используете вот такую формулу с ВПР, которая ищет в ячейках от B5 до D10 значение, указанное в ячейке A2:

=VLOOKUP(A2,B5:D10,3,FALSE)
=ВПР(A2;B5:D10;3;ЛОЖЬ)

Формула не будет работать, если значение в ячейке A2 длиннее 255 символов. Вместо неё Вам нужно использовать аналогичную формулу ИНДЕКС/ПОИСКПОЗ:

=INDEX(D5:D10,MATCH(TRUE,INDEX(B5:B10=A2,0),0))
=ИНДЕКС(D5:D10;ПОИСКПОЗ(ИСТИНА;ИНДЕКС(B5:B10=A2;0);0))

4. Более высокая скорость работы. Если Вы работаете с небольшими таблицами, то разница в быстродействии Excel будет, скорее всего, не заметная, особенно в последних версиях. Если же Вы работаете с большими таблицами, которые содержат тысячи строк и сотни формул поиска, Excel будет работать значительно быстрее, при использовании ПОИСКПОЗ и ИНДЕКС вместо ВПР. В целом, такая замена увеличивает скорость работы Excel на 13%.

Влияние ВПР на производительность Excel особенно заметно, если рабочая книга содержит сотни сложных формул массива, таких как ВПР+СУММ. Дело в том, что проверка каждого значения в массиве требует отдельного вызова функции ВПР. Поэтому, чем больше значений содержит массив и чем больше формул массива содержит Ваша таблица, тем медленнее работает Excel.

С другой стороны, формула с функциями ПОИСКПОЗ и ИНДЕКС просто совершает поиск и возвращает результат, выполняя аналогичную работу заметно быстрее.

ИНДЕКС и ПОИСКПОЗ – примеры формул

Теперь, когда Вы понимаете причины, из-за которых стоит изучать функции ПОИСКПОЗ и ИНДЕКС, давайте перейдём к самому интересному и увидим, как можно применить теоретические знания на практике.

Как выполнить поиск с левой стороны, используя ПОИСКПОЗ и ИНДЕКС

Любой учебник по ВПР твердит, что эта функция не может смотреть влево. Т.е. если просматриваемый столбец не является крайним левым в диапазоне поиска, то нет шансов получить от ВПР желаемый результат.

Функции ПОИСКПОЗ и ИНДЕКС в Excel гораздо более гибкие, и им все-равно, где находится столбец со значением, которое нужно извлечь. Для примера, снова вернёмся к таблице со столицами государств и населением. На этот раз запишем формулу ПОИСКПОЗ/ИНДЕКС, которая покажет, какое место по населению занимает столица России (Москва).

Как видно на рисунке ниже, формула отлично справляется с этой задачей:

=INDEX($A$2:$A$10,MATCH("Russia",$B$2:$B$10,0))
=ИНДЕКС($A$2:$A$10;ПОИСКПОЗ("Russia";$B$2:$B$10;0))

ИНДЕКС и ПОИСКПОЗ в Excel

Теперь у Вас не должно возникать проблем с пониманием, как работает эта формула:

  • Во-первых, задействуем функцию MATCH (ПОИСКПОЗ), которая находит положение «Russia» в списке:

    =MATCH("Russia",$B$2:$B$10,0))
    =ПОИСКПОЗ("Russia";$B$2:$B$10;0))

  • Далее, задаём диапазон для функции INDEX (ИНДЕКС), из которого нужно извлечь значение. В нашем случае это A2:A10.
  • Затем соединяем обе части и получаем формулу:

    =INDEX($A$2:$A$10;MATCH("Russia";$B$2:$B$10;0))
    =ИНДЕКС($A$2:$A$10;ПОИСКПОЗ("Russia";$B$2:$B$10;0))

Подсказка: Правильным решением будет всегда использовать абсолютные ссылки для ИНДЕКС и ПОИСКПОЗ, чтобы диапазоны поиска не сбились при копировании формулы в другие ячейки.

Вычисления при помощи ИНДЕКС и ПОИСКПОЗ в Excel (СРЗНАЧ, МАКС, МИН)

Вы можете вкладывать другие функции Excel в ИНДЕКС и ПОИСКПОЗ, например, чтобы найти минимальное, максимальное или ближайшее к среднему значение. Вот несколько вариантов формул, применительно к таблице из предыдущего примера:

1. MAX (МАКС). Формула находит максимум в столбце D и возвращает значение из столбца C той же строки:

=INDEX($C$2:$C$10,MATCH(MAX($D$2:I$10),$D$2:D$10,0))
=ИНДЕКС($C$2:$C$10;ПОИСКПОЗ(МАКС($D$2:I$10);$D$2:D$10;0))

Результат: Beijing

2. MIN (МИН). Формула находит минимум в столбце D и возвращает значение из столбца C той же строки:

=INDEX($C$2:$C$10,MATCH(MIN($D$2:I$10),$D$2:D$10,0))
=ИНДЕКС($C$2:$C$10;ПОИСКПОЗ(МИН($D$2:I$10);$D$2:D$10;0))

Результат: Lima

3. AVERAGE (СРЗНАЧ). Формула вычисляет среднее в диапазоне D2:D10, затем находит ближайшее к нему и возвращает значение из столбца C той же строки:

=INDEX($C$2:$C$10,MATCH(AVERAGE($D$2:D$10),$D$2:D$10,1))
=ИНДЕКС($C$2:$C$10;ПОИСКПОЗ(СРЗНАЧ($D$2:D$10);$D$2:D$10;1))

Результат: Moscow

О чём нужно помнить, используя функцию СРЗНАЧ вместе с ИНДЕКС и ПОИСКПОЗ

Используя функцию СРЗНАЧ в комбинации с ИНДЕКС и ПОИСКПОЗ, в качестве третьего аргумента функции ПОИСКПОЗ чаще всего нужно будет указывать 1 или -1 в случае, если Вы не уверены, что просматриваемый диапазон содержит значение, равное среднему. Если же Вы уверены, что такое значение есть, – ставьте 0 для поиска точного совпадения.

  • Если указываете 1, значения в столбце поиска должны быть упорядочены по возрастанию, а формула вернёт максимальное значение, меньшее или равное среднему.
  • Если указываете -1, значения в столбце поиска должны быть упорядочены по убыванию, а возвращено будет минимальное значение, большее или равное среднему.

В нашем примере значения в столбце D упорядочены по возрастанию, поэтому мы используем тип сопоставления 1. Формула ИНДЕКС/ПОИСКПОЗ возвращает «Moscow», поскольку величина населения города Москва – ближайшее меньшее к среднему значению (12 269 006).

ИНДЕКС и ПОИСКПОЗ в Excel

Как при помощи ИНДЕКС и ПОИСКПОЗ выполнять поиск по известным строке и столбцу

Эта формула эквивалентна двумерному поиску ВПР и позволяет найти значение на пересечении определённой строки и столбца.

В этом примере формула ИНДЕКС/ПОИСКПОЗ будет очень похожа на формулы, которые мы уже обсуждали в этом уроке, с одним лишь отличием. Угадайте каким?

Как Вы помните, синтаксис функции INDEX (ИНДЕКС) позволяет использовать три аргумента:

INDEX(array,row_num,[column_num])
ИНДЕКС(массив;номер_строки;[номер_столбца])

И я поздравляю тех из Вас, кто догадался!

Начнём с того, что запишем шаблон формулы. Для этого возьмём уже знакомую нам формулу ИНДЕКС/ПОИСКПОЗ и добавим в неё ещё одну функцию ПОИСКПОЗ, которая будет возвращать номер столбца.

=INDEX(Ваша таблица,(MATCH(значение для вертикального поиска,столбец, в котором искать,0)),(MATCH(значение для горизонтального поиска,строка в которой искать,0))
=ИНДЕКС(Ваша таблица,(MATCH(значение для вертикального поиска,столбец, в котором искать,0)),(MATCH(значение для горизонтального поиска,строка в которой искать,0))

Обратите внимание, что для двумерного поиска нужно указать всю таблицу в аргументе array (массив) функции INDEX (ИНДЕКС).

А теперь давайте испытаем этот шаблон на практике. Ниже Вы видите список самых населённых стран мира. Предположим, наша задача узнать население США в 2015 году.

ИНДЕКС и ПОИСКПОЗ в Excel

Хорошо, давайте запишем формулу. Когда мне нужно создать сложную формулу в Excel с вложенными функциями, то я сначала каждую вложенную записываю отдельно.

Итак, начнём с двух функций ПОИСКПОЗ, которые будут возвращать номера строки и столбца для функции ИНДЕКС:

  • ПОИСКПОЗ для столбца – мы ищем в столбце B, а точнее в диапазоне B2:B11, значение, которое указано в ячейке H2 (USA). Функция будет выглядеть так:

    =MATCH($H$2,$B$1:$B$11,0)
    =ПОИСКПОЗ($H$2;$B$1:$B$11;0)

    Результатом этой формулы будет 4, поскольку «USA» – это 4-ый элемент списка в столбце B (включая заголовок).

  • ПОИСКПОЗ для строки – мы ищем значение ячейки H3 (2015) в строке 1, то есть в ячейках A1:E1:

    =MATCH($H$3,$A$1:$E$1,0)
    =ПОИСКПОЗ($H$3;$A$1:$E$1;0)

    Результатом этой формулы будет 5, поскольку «2015» находится в 5-ом столбце.

Теперь вставляем эти формулы в функцию ИНДЕКС и вуаля:

=INDEX($A$1:$E$11,MATCH($H$2,$B$1:$B$11,0),MATCH($H$3,$A$1:$E$1,0))
=ИНДЕКС($A$1:$E$11;ПОИСКПОЗ($H$2;$B$1:$B$11;0);ПОИСКПОЗ($H$3;$A$1:$E$1;0))

Если заменить функции ПОИСКПОЗ на значения, которые они возвращают, формула станет легкой и понятной:

=INDEX($A$1:$E$11,4,5))
=ИНДЕКС($A$1:$E$11;4;5))

Эта формула возвращает значение на пересечении 4-ой строки и 5-го столбца в диапазоне A1:E11, то есть значение ячейки E4. Просто? Да!

ИНДЕКС и ПОИСКПОЗ в Excel

Поиск по нескольким критериям с ИНДЕКС и ПОИСКПОЗ

В учебнике по ВПР мы показывали пример формулы с функцией ВПР для поиска по нескольким критериям. Однако, существенным ограничением такого решения была необходимость добавлять вспомогательный столбец. Хорошая новость: формула ИНДЕКС/ПОИСКПОЗ может искать по значениям в двух столбцах, без необходимости создания вспомогательного столбца!

Предположим, у нас есть список заказов, и мы хотим найти сумму по двум критериям – имя покупателя (Customer) и продукт (Product). Дело усложняется тем, что один покупатель может купить сразу несколько разных продуктов, и имена покупателей в таблице на листе Lookup table расположены в произвольном порядке.

ИНДЕКС и ПОИСКПОЗ в Excel

Вот такая формула ИНДЕКС/ПОИСКПОЗ решает задачу:

{=INDEX('Lookup table'!$A$2:$C$13,MATCH(1,(A2='Lookup table'!$A$2:$A$13)*
(B2='Lookup table'!$B$2:$B$13),0),3)}

{=ИНДЕКС('Lookup table'!$A$2:$C$13;ПОИСКПОЗ(1;(A2='Lookup table'!$A$2:$A$13)*
(B2='Lookup table'!$B$2:$B$13);0);3)}

Эта формула сложнее других, которые мы обсуждали ранее, но вооруженные знанием функций ИНДЕКС и ПОИСКПОЗ Вы одолеете ее. Самая сложная часть – это функция ПОИСКПОЗ, думаю, её нужно объяснить первой.

MATCH(1,(A2='Lookup table'!$A$2:$A$13),0)*(B2='Lookup table'!$B$2:$B$13)
ПОИСКПОЗ(1;(A2='Lookup table'!$A$2:$A$13);0)*(B2='Lookup table'!$B$2:$B$13)

В формуле, показанной выше, искомое значение – это 1, а массив поиска – это результат умножения. Хорошо, что же мы должны перемножить и почему? Давайте разберем все по порядку:

  • Берем первое значение в столбце A (Customer) на листе Main table и сравниваем его со всеми именами покупателей в таблице на листе Lookup table (A2:A13).
  • Если совпадение найдено, уравнение возвращает 1 (ИСТИНА), а если нет – 0 (ЛОЖЬ).
  • Далее, мы делаем то же самое для значений столбца B (Product).
  • Затем перемножаем полученные результаты (1 и 0). Только если совпадения найдены в обоих столбцах (т.е. оба критерия истинны), Вы получите 1. Если оба критерия ложны, или выполняется только один из них – Вы получите 0.

Теперь понимаете, почему мы задали 1, как искомое значение? Правильно, чтобы функция ПОИСКПОЗ возвращала позицию только, когда оба критерия выполняются.

Обратите внимание: В этом случае необходимо использовать третий не обязательный аргумент функции ИНДЕКС. Он необходим, т.к. в первом аргументе мы задаем всю таблицу и должны указать функции, из какого столбца нужно извлечь значение. В нашем случае это столбец C (Sum), и поэтому мы ввели 3.

И, наконец, т.к. нам нужно проверить каждую ячейку в массиве, эта формула должна быть формулой массива. Вы можете видеть это по фигурным скобкам, в которые она заключена. Поэтому, когда закончите вводить формулу, не забудьте нажать Ctrl+Shift+Enter.

Если всё сделано верно, Вы получите результат как на рисунке ниже:

ИНДЕКС и ПОИСКПОЗ в Excel

ИНДЕКС и ПОИСКПОЗ в сочетании с ЕСЛИОШИБКА в Excel

Как Вы, вероятно, уже заметили (и не раз), если вводить некорректное значение, например, которого нет в просматриваемом массиве, формула ИНДЕКС/ПОИСКПОЗ сообщает об ошибке #N/A (#Н/Д) или #VALUE! (#ЗНАЧ!). Если Вы хотите заменить такое сообщение на что-то более понятное, то можете вставить формулу с ИНДЕКС и ПОИСКПОЗ в функцию ЕСЛИОШИБКА.

Синтаксис функции ЕСЛИОШИБКА очень прост:

IFERROR(value,value_if_error)
ЕСЛИОШИБКА(значение;значение_если_ошибка)

Где аргумент value (значение) – это значение, проверяемое на предмет наличия ошибки (в нашем случае – результат формулы ИНДЕКС/ПОИСКПОЗ); а аргумент value_if_error (значение_если_ошибка) – это значение, которое нужно возвратить, если формула выдаст ошибку.

Например, Вы можете вставить формулу из предыдущего примера в функцию ЕСЛИОШИБКА вот таким образом:

=IFERROR(INDEX($A$1:$E$11,MATCH($G$2,$B$1:$B$11,0),MATCH($G$3,$A$1:$E$1,0)),
"Совпадений не найдено. Попробуйте еще раз!")
=ЕСЛИОШИБКА(ИНДЕКС($A$1:$E$11;ПОИСКПОЗ($G$2;$B$1:$B$11;0);ПОИСКПОЗ($G$3;$A$1:$E$1;0));
"Совпадений не найдено. Попробуйте еще раз!")

И теперь, если кто-нибудь введет ошибочное значение, формула выдаст вот такой результат:

ИНДЕКС и ПОИСКПОЗ в Excel

Если Вы предпочитаете в случае ошибки оставить ячейку пустой, то можете использовать кавычки («»), как значение второго аргумента функции ЕСЛИОШИБКА. Вот так:

IFERROR(INDEX(массив,MATCH(искомое_значение,просматриваемый_массив,0),"")
ЕСЛИОШИБКА(ИНДЕКС(массив;ПОИСКПОЗ(искомое_значение;просматриваемый_массив;0);"")

Надеюсь, что хотя бы одна формула, описанная в этом учебнике, показалась Вам полезной. Если Вы сталкивались с другими задачами поиска, для которых не смогли найти подходящее решение среди информации в этом уроке, смело опишите свою проблему в комментариях, и мы все вместе постараемся решить её.

Оцените качество статьи. Нам важно ваше мнение:

Skip to content

Поиск ИНДЕКС ПОИСКПОЗ по нескольким условиям

В статье показано, как выполнять быстрый поиск с несколькими условиями в Excel с помощью ИНДЕКС и ПОИСКПОЗ.

Хотя Microsoft Excel предоставляет специальные функции для вертикального и горизонтального поиска, опытные пользователи обычно заменяют их комбинацией функций ПОИСКПОЗ и ИНДЕКС, которая во многих отношениях превосходит ВПР и ГПР. К примеру, можно искать два или более критерия в столбцах и строках. 

Мы постараемся подробно объяснить синтаксис и логику вычислений, чтобы вы могли легко создать формулы для своих конкретных нужд. 

  • Общая формула поиска по нескольким критериям
  • Пример формулы массива
  • Поиск по нескольким условиям без формулы массива
  • ИНДЕКС ПОИСКПОЗ с несколькими условиями в нескольких строках и столбцах

Как сделать поиск с несколькими условиями

При работе с большими базами данных вы можете иногда оказаться в ситуации, когда нужно что-то найти, но нет уникального идентификатора для поиска. В этом случае поиск с несколькими условиями является единственным решением.

Чтобы найти значение на основе нескольких критериев в отдельных столбцах, используйте эту общую формулу:

{=ИНДЕКС( диапазон_возврата; ПОИСКПОЗ (1; ( критерий1 = диапазон1 ) * ( критерий2 = диапазон2 ) * (…); 0))}

Где:

  • Диапазон_возврата — это диапазон, из которого возвращается значение.
  • Критерии1 , критерии2 , … – это условия, которые необходимо выполнить.
  • Диапазон1 , диапазон2 , … — это диапазоны, на которых должны проверяться соответствующие критерии.

Важное замечание! Это формула массива , и она должна быть введена через Ctrl + Shift + Enter. Появятся {фигурные скобки}, что является визуальным признаком формулы массива в Excel. Не пытайтесь вводить фигурные скобки вручную, это не сработает!

Эта формула представляет собой расширенную версию комбинации ИНДЕКС+ПОИСКПОЗ, которая возвращает совпадение на основе одного критерия. Чтобы оценить несколько условий, мы используем операцию умножения, которая работает как оператор «И» в формулах массива . Ниже вы найдете реальный пример и подробное пошаговое объяснение логики расчетов.

ИНДЕКС ПОИСКПОЗ по нескольким столбцам – пример формулы

В этом примере мы будем использовать таблицу с комбинацией критериев (в нашем случае регион-месяц-товар) в каждой строке. Наша цель — получить данные о продажах определенного товара в данном регионе и в нужном месяце.

Вот наши исходные данные и критерии:

  • Диапазон_возврата (продажи) — D2:D13
  • Критерий1 (целевой регион) – G1
  • Критерий2 (целевой месяц) – G2
  • Критерий 3 (целевой товар) — G3
  • Диапазон1 (регионы) – A2:A13
  • Диапазон2 (месяцы) – B2:B13
  • Диапазон3 (товары) – C2:C13

Формула принимает следующий вид:

=ИНДЕКС(D2:D13; ПОИСКПОЗ(1; (G1=A2:A13)*(G2=B2:B13)*(G3=C2:C13); 0))

Запишем формулу в G4, завершим ее, нажав Ctrl+Shift+Enter. Получаем следующий результат:

Как это работает? Разберем пошагово.

Самая сложная часть — это функция ПОИСКПОЗ, так что давайте пошагово рассмотрим логику ее работы:

ПОИСКПОЗ(1; (G1=A2:A13)*(G2=B2:B13)*(G3=C2:C13)

Как вы помните, ПОИСКПОЗ ищет заданное значение в массиве и возвращает относительное его положение в этом массиве.

В нашей формуле аргументы следующие:

  • Искомое_значение : 1
  • Массив поиска : (G1=A2:A13) * (G2=B2:B13) * (G3=C2:C13)
  • Тип_соответствия : 0

Шаг 1.

Первый аргумент предельно ясен — функция ищет число 1. Третий аргумент, установленный в 0, означает «точное совпадение», т.е. формула возвращает первое найденное значение, которое точно равно искомому значению.

Вопрос в том, почему мы ищем «1»? Чтобы получить ответ, давайте внимательнее посмотрим на массив поиска, где мы сравниваем каждый наш критерий с соответствующим диапазоном: целевой регион в ячейке G1 со всеми регионами (A2: A13), целевой месяц в G2 со всеми месяцами (B2: B13), и товар в G3 в колонке товаров (C2:C13). В результате этих сравнений мы имеем 3 массива значений ИСТИНА и ЛОЖЬ, где ИСТИНА представляет значения, соответствующие условию. Чтобы визуализировать это, вы можете выбрать отдельное выражение в формуле и нажать клавишу F9 , чтобы увидеть, что оно возвращает:

=ИНДЕКС(D2:D13; ПОИСКПОЗ(1; {ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ИСТИНА:ИСТИНА:ИСТИНА:ИСТИНА:ИСТИНА}*{ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ИСТИНА:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ}*{ЛОЖЬ:ИСТИНА:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ИСТИНА}; 0))

Шаг 2.

Операция умножения преобразует значения ИСТИНА и ЛОЖЬ в 1 и 0 соответственно:

{0:0:0:0:0:0:1:1:1:1:1:1}*{0:0:1:0:0:1:1:1:0:0:0:0}*{0:1:0:1:0:1:0:1:0:1:0:1}

Шаг 3.

А поскольку умножение на 0 всегда дает 0, результирующий массив содержит 1 только в тех строках, которые соответствуют всем трём условиям:

{0:0:0:0:0:0:0:1:0:0:0:0}

Приведенный выше массив переходит в аргумент массив_поиска функции ПОИСКПОЗ. Функция возвращает порядковый номер позиции с цифрой 1, для которой все критерии имеют значение ИСТИНА (строка 8 в нашем случае). Если в массиве будет несколько единиц, будет определена позиция только первой из них.

Шаг 4.

Число, возвращаемое функцией ПОИСКПОЗ, поступает непосредственно в аргумент номер_строки функции ИНДЕКС(массив, номер_строки, [номер_столбца]):

=ИНДЕКС(D2:D13, 8)

И это дает результат 680, что является восьмым по счету значением в массиве D2:D13.

Формула ИНДЕКС ПОИСКПОЗ без массива с несколькими критериями

Формула массива, рассмотренная в предыдущем примере, хорошо работает для опытных пользователей. Но если вы строите формулу для кого-то другого, и этот кто-то не знает о работе с формулами массива в Excel, то он может непреднамеренно ее сломать. Например, пользователь может щелкнуть вашу формулу, чтобы изучить ее, а затем нажать Enter вместо Ctrl + Shift + Enter. 

В таких случаях было бы разумно избегать массивов и использовать обычную формулу, которая является более сложной, но зато и более защищенной от случайной «поломки»:

ИНДЕКС( диапазон_возврата; ПОИСКПОЗ (1; ИНДЕКС(( критерий1 = диапазон1 ) * ( критерий2 = диапазон2 ) * (..); 0; 1); 0))

Для нашего набора данных формула поиска одновременно по нескольким столбцам выглядит следующим образом:

=ИНДЕКС(D2:D13; ПОИСКПОЗ(1; ИНДЕКС((G1=A2:A13) * (G2=B2:B13) * (G3=C2:C13); 0; 1); 0))

Как работает эта формула?

Поскольку функция ИНДЕКС умеет работать с массивами, мы добавляем еще один ИНДЕКС для обработки массива единиц и нулей, созданного путем умножения двух или более массивов ИСТИНА/ЛОЖЬ. Второй ИНДЕКС настроен с аргументом номер_строки равным нулю, чтобы формула возвращала весь столбец, а не одно значение. Поскольку в любом случае это массив из одного столбца, мы можем безопасно поставить 1 для номер_столбца :

ИНДЕКС({0:0:0:0:0:0:0:1:0:0:0:0};0, 1)  возвращает {0:0:0:0:0:0:0:1:0:0:0:0}

Этот массив передается в функцию ПОИСКПОЗ:

ПОИСКПОЗ(1; {0:0:0:0:0:0:0:1:0:0:0:0}; 0)

ПОИСКПОЗ находит номер позиции, для которого все условия – ИСТИНА (точнее, ищет относительное положение цифры «1» в указанном массиве), и передает номер этой позиции в аргумент номер_строки первого ИНДЕКС:

=ИНДЕКС(D2:D13, 8)

Ну и далее получаем нужный результат.

ИНДЕКС ПОИСКПОЗ с несколькими условиями в нескольких строках и столбцах

В этом примере показано, как выполнять поиск, проверяя два или более критерия в строках и столбцах. На самом деле это более сложный случай так называемого «матричного поиска» или «двустороннего поиска» с более чем одной строкой заголовка.

Вот общая формула ИНДЕКС ПОИСКПОЗ с несколькими критериями в строках и столбцах:

{=ИНДЕКС( массив_таблицы ; ПОИСКПОЗ( значение_поиска ; столбец_поиска ; 0); ПОИСКПОЗ( значение_поиска1 & значение_поиска2 ; строка_поиска1 & строка_поиска2 ; 0))}

где:

Массив таблицы — область для поиска, т. е. все значения таблицы, кроме заголовков столбцов и строк.

Значение_поиска — то, что вы ищете по вертикали в столбце.

Столбец_поиска — диапазон столбцов для поиска, обычно это заголовки строк.

Значение_поиска1, значение_поиска2, … — то, что вы ищете по горизонтали в строках.

Строка_поиска1, строка_поиска2, … — диапазоны строк для поиска, обычно это заголовки столбцов.

Важное замечание! Чтобы формула работала корректно, ее нужно вводить как формулу массива  при помощи комбинации Ctrl + Shift + Enter.

Это разновидность классической формулы двустороннего поиска в массиве, которая ищет значение на пересечении определенной строки и столбца. Разница в том, что вы объединяете несколько значений и диапазонов поиска для оценки нескольких заголовков столбцов. Чтобы лучше понять логику ее работы, рассмотрим небольшой пример.

В приведенной ниже таблице мы будем искать значение на основе заголовков строк (элементы) и заголовков двух столбцов (регионы и поставщики). То есть, ищем по одному условию по строкам и по двум условиям – по столбцам. Чтобы упростить построение формулы, давайте сначала определим все критерии и диапазоны:

  • Массив_таблицы — B3:E4
  • Значение_поиска  — H1
  • Столбец_поиска  (заголовки строк: товары) — A3:A5
  • Значение_поиска1  (целевой регион) — H2
  • Значение_поиска 2 (целевой продавец) — H3
  • Строка_поиска1 (заголовки столбцов 1: регионы) — B1:E1
  • Строка_поиска2 (заголовки столбцов 2: продавцы) — B2:E2

А теперь подставьте аргументы в общую формулу, описанную выше, и вы получите такой результат:

=ИНДЕКС(B3:E5; ПОИСКПОЗ(H1;A3:A5;0); ПОИСКПОЗ(H2&H3; B1:E1&B2:E2; 0))

Не забудьте завершить формулу, нажав комбинацию клавиш Ctrl + Shift + Enter, после чего поиск по матрице с несколькими условиями будет выполнен успешно:

Пошагово рассмотрим, как работает эта формула.

Поскольку мы ищем и по вертикали, и по горизонтали, то нужно указать номера строк и столбцов для функции ИНДЕКС (массив, номер_строки, номер_столбца).

Шаг 1.

Номер_строки предоставляется функцией ПОИСКПОЗ(H1;A3:A5;0), которая сравнивает целевой элемент (бананы) в H1 с заголовками строк в A3:A5. 

ПОИСКПОЗ(«Бананы»;{«Апельсины»:»Бананы»:»Лимоны»};0)

Это дает результат 2, потому что «Бананы» — это второй элемент в указанном списке.

Шаг 2.

Номер_столбца вычисляется путем объединения двух значений поиска и двух массивов поиска: ПОИСКПОЗ(H2&H3; B1:E1&B2:E2; 0)

Необходимым условием является то, что значения поиска должны точно соответствовать заголовкам столбцов и быть объединены в том же порядке. Чтобы проследить процесс поиска, выберите первые два аргумента в формуле ПОИСКПОЗ, затем нажмите F9, и вы увидите, что оценивает каждый аргумент:

ПОИСКПОЗ(«СеверПродавец 2»; {«СеверПродавец 1″;»СеверПродавец 2″;»ЮгПродавец 1″;»ЮгПродавец 2»}; 0)

Поскольку « СеверПродавец 2» является вторым элементом в массиве, функция возвращает 2.

Шаг 3.

После этого наша длинная двумерная формула ИНДЕКС ПОИСКПОЗ превращается в такую простую:

=ИНДЕКС(B3:E5; 2; 2)

Шаг 4.

Она возвращает значение на пересечении 2-й строки и 2-го столбца в диапазоне B3:E5, что является значением в ячейке C4.

Вот как формула ИНДЕКС ПОИСКПОЗ помогает выполнить поиск по нескольким условиям в Excel. Я благодарю вас за чтение и надеюсь вновь увидеть вас в нашем блоге.

Еще несколько статей по теме:

Функция ИНДЕКС возвращает значение или ссылку на значение из таблицы или диапазона.

Браузер не поддерживает видео. Установите Microsoft Silverlight, Adobe Flash Player или Internet Explorer 9.

Функцию ИНДЕКС можно использовать двумя способами:

  • Если вы хотите возвращать значение указанной ячейки или массива ячеек, см. раздел Форма массива.

  • Если требуется возвращать ссылку на указанные ячейки, см. раздел Ссылочная форма.

Форма массива

Описание

Возвращает значение элемента в таблице или массиве, выбранное по индексам номеров строк и столбцов.

Если первый аргумент функции ИНДЕКС является константной массива, используйте форму массива.

Синтаксис

ИНДЕКС(массив; номер_строки; [номер_столбца])

Форма массива функции INDEX имеет следующие аргументы:

  • массив.    Обязательный аргумент. Диапазон ячеек или константа массива.

    • Если массив содержит только одну строку или столбец, соответствующий аргумент номер_строки или номер_столбца является необязательным.

    • Если массив содержит более одной строки и более одного столбца и используется только номер_строки или номер_столбца, ИНДЕКС возвращает массив всей строки или столбца в массиве.

  • Номер_строки    Обязательный, если column_num отсутствует. Выбирает строку в массиве, из которой требуется возвратить значение. Если номер_строки опущен, требуется номер_столбца.

  • Номер_столбца    — необязательный аргумент. Выбирает столбец в массиве, из которого требуется возвратить значение. Если номер_столбца опущен, требуется номер_строки.

Замечания

  • Если используются аргументы номер_строки и номер_столбца, функция ИНДЕКС возвращает значение в ячейке на пересечении номеров_строки и номера_столбца.

  • row_num и column_num должны указывать на ячейку в массиве; в противном случае ИНДЕКС возвращает #ССЫЛКА! ошибку «#ЗНАЧ!».

  • Если задать для row_num или column_num значение 0 (ноль), ИНДЕКС возвращает массив значений для всего столбца или строки соответственно. Чтобы использовать значения, возвращаемые в виде массива, введите функцию ИНДЕКС как формулу массива.

    Примечание: Если у вас есть текущая версия Microsoft 365, вы можете ввести формулу в верхнюю левую ячейку выходного диапазона, а затем нажать клавишу ВВОД, чтобы подтвердить формулу как формулу динамического массива. В противном случае формулу необходимо ввести как устаревшую формулу массива, сначала выбрав выходной диапазон, введите формулу в верхнюю левую ячейку выходного диапазона, а затем нажмите CTRL+SHIFT+ENTER для подтверждения. Excel автоматически вставляет фигурные скобки в начале и конце формулы. Дополнительные сведения о формулах массива см. в статье Использование формул массива: рекомендации и примеры.

Примеры

Пример 1

В этих примерах функция ИНДЕКС используется для поиска значения ячейки, находящейся на пересечении заданных строки и столбца.

Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — ВВОД.

Данные

Данные

Яблоки

Лимоны

Бананы

Груши

Формула

Описание

Результат

=ИНДЕКС(A2:B3;2;2)

Значение ячейки на пересечении второй строки и второго столбца в диапазоне A2:B3.

Груши

=ИНДЕКС(A2:B3;2;1)

Значение ячейки на пересечении второй строки и первого столбца в диапазоне A2:B3.

Бананы

Пример 2

В этом примере функция ИНДЕКС используется в формуле массива для поиска значений двух заданных ячеек в массиве с диапазоном 2 x 2.  

Примечание: Если у вас есть текущая версия Microsoft 365, вы можете ввести формулу в верхнюю левую ячейку выходного диапазона, а затем нажать клавишу ВВОД, чтобы подтвердить формулу как формулу динамического массива. В противном случае формулу необходимо ввести как устаревшую формулу массива, сначала выбрав две пустые ячейки, введите формулу в верхнюю левую ячейку выходного диапазона, а затем нажмите CTRL+SHIFT+ENTER для подтверждения. Excel автоматически вставляет фигурные скобки в начале и конце формулы. Дополнительные сведения о формулах массива см. в статье Использование формул массива: рекомендации и примеры.

Формула

Описание

Результат

=ИНДЕКС({1;2:3;4};0;2)

Значение ячейки на пересечении первой строки и второго столбца в массиве. Массив содержит значения 1 и 2 в первой строке и значения 3 и 4 во второй строке.

2

Значение ячейки на пересечении второй строки и второго столбца в массиве, указанном выше.

4

К началу страницы


Справочная форма

Описание

Возвращает ссылку на ячейку, расположенную на пересечении указанной строки и указанного столбца. Если ссылка состоит из несмежных выборок, вы можете выбрать выборку для поиска.

Синтаксис

ИНДЕКС(ссылка; номер_строки; [номер_столбца]; [номер_области])

Справочная форма функции ИНДЕКС имеет следующие аргументы:

  • ссылка    — обязательный аргумент. Ссылка на один или несколько диапазонов ячеек.

    • Если вы вводите несмежный диапазон для ссылки, заключите ссылку в круглые скобки.

    • Если каждая область в ссылке содержит только одну строку или столбец, аргумент номер_строки или номер_столбца соответственно является необязательным. Например, для ссылки на единственную строку нужно использовать формулу ИНДЕКС(ссылка,,номер_столбца).

  • Номер_строки    Обязательный аргумент. Номер строки в диапазоне, заданном аргументом «ссылка», из которого требуется возвратить ссылку.

  • Номер_столбца    — необязательный аргумент. Номер столбца в диапазоне, заданном аргументом «ссылка», из которого требуется возвратить ссылку.

  • area_num    Необязательный. Выбирает диапазон в ссылке, из которого возвращается пересечение row_num и column_num. Первая выбранная или введенная область имеет номер 1, вторая — 2 и так далее. Если номер_области опущен, ИНДЕКС использует область 1.  Перечисленные здесь области должны располагаться на одном листе.  Если вы укажете области, которые не находятся на одном листе друг с другом, это вызовет ошибку #ЗНАЧ! ошибку «#ВЫЧИС!».  Если вам нужно использовать диапазоны, расположенные на разных листах друг от друга, рекомендуется использовать форму массива функции ИНДЕКС, а для вычисления диапазона, из которого состоит массив, использовать другую функцию.  Например, вы можете использовать функцию ВЫБОР, чтобы вычислить, какой диапазон будет использоваться.

Например, если ссылка описывает ячейки (A1:B4,D1:E4,G1:H4), номер_области 1 – это диапазон A1:B4, номер_области 2 – это диапазон D1:E4, а номер_области 3 – диапазон G1:H4.

Замечания

  • После того, как ссылка и area_num выбрали конкретный диапазон, row_num и column_num выбирают конкретную ячейку: row_num 1 — это первая строка в диапазоне, column_num 1 — это первый столбец и так далее. Ссылка, возвращаемая INDEX, представляет собой пересечение row_num и column_num.

  • Если вы установите номер_строки или номер_столбца равным 0 (ноль), ИНДЕКС возвращает ссылку для всего столбца или строки соответственно.

  • row_num, column_num и area_num должны указывать на ячейку в пределах ссылки; в противном случае ИНДЕКС возвращает #ССЫЛКА! ошибку «#ЗНАЧ!». Если номер_строки и номер_столбца опущены, ИНДЕКС возвращает область в ссылке, указанную номером_области.

  • Результатом вычисления функции ИНДЕКС является ссылка, которая интерпретируется в качестве таковой другими функциями. В зависимости от формулы значение, возвращаемое функцией ИНДЕКС, может использоваться как ссылка или как значение. Например, формула ЯЧЕЙКА(«ширина»;ИНДЕКС(A1:B2;1;2)) эквивалентна формуле ЯЧЕЙКА(«ширина»;B1). Функция ЯЧЕЙКА использует значение, возвращаемое функцией ИНДЕКС, как ссылку. С другой стороны, такая формула, как 2*ИНДЕКС(A1:B2;1;2), преобразует значение, возвращаемое функцией ИНДЕКС, в число в ячейке B1.

Примеры

Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу Enter.

Фрукты

Цена

Количество

Яблоки

0,69 ₽

40

Бананы

0,34 ₽

38

Лимоны

0,55 ₽

15

Апельсины

0,25 ₽

25

Груши

0,59 ₽

40

Миндаль

2,80 ₽

10

Кешью

3,55 ₽

16

Арахис

1,25 ₽

20

Грецкие орехи

1,75 ₽

12

Формула

Описание

Результат

=ИНДЕКС(A2:C6;2;3)

Пересечение второй строки и третьего столбца в диапазоне A2:C6, т. е. содержимое ячейки C3.

38

=ИНДЕКС((A1:C6;A8:C11);2;2;2)

Пересечение второй строки и второго столбца во второй области (A8:C11), т. е. содержимое ячейки B9.

1,25

=СУММ(ИНДЕКС(A1:C11;0;3;1))

Сумма третьего столбца в первой области диапазона (A1:C11) является суммой диапазона C1:C11.

216

=СУММ(B2:ИНДЕКС(A2:C6;5;2))

Сумма значений из диапазона, начинающегося с ячейки B2 и заканчивающегося пересечением пятой строки и второго столбца диапазона A2:A6, т. е. сумма значений из диапазона B2:B6.

2,42

К началу страницы

См. также

Функция ВПР

ПОИСКПОЗ

Функция ДВССЫЛ

Использование формул массива: рекомендации и примеры

Функции ссылки и поиска (справка)

  

  

  File Name Description Size(KB)

Download

121102_PostIndx.zip

Почтовые индексы всех городов и населенных пунктов России в формате .xls (Excel), по состоянию на 02.11.2012 года. Около 45 тыс. кодов. Источник — дирекция технологий и информатизации ФГУП «Почта России».

2077

Download

el_kart_method_posob.pdf

Использование универсальных электронных карт при предоставлении государственных и муниципальных услуг

Методическое пособие, 2012 г.

949

Download

el_kart_otkaz.pdf

Форма заявления об отказе от получения универсальной электронной карты

62

Download

el_kart_zayav.pdf

Форма заявления о выдаче универсальной электронной карты

45

Download

H.264.pdf

H.264, MPEG-4 Part 10 или AVC (Advanced Video Coding) — лицензируемый стандарт сжатия видео, предназначенный для достижения высокой степени сжатия видеопотока при сохранении высокого качества

269

Download

metod_rekomend_esia.pdf

Методические рекомендации по использованию Единой системы идентификации и аутентификации заявителей при доступе к порталам государственных и муниципальных услуг

915

Download

mininfsv_itog_2011.doc

Доклад о результатах за 2011 год и основныхнаправлениях деятельности на 2012-2015 годы министерства информационных технологий и связи Ростовской области

196

Download

mininfsv_pokaz_2011.xls

Показатели достижения стратегических целей, тактических задач и областных целевых программ и подпрограмм, реализуемых областным органом исполнительной власти

79

Download

per_akkred_centr_121023.xls

Перечень (список) удостоверяющих центров, аккредитованных Министерством связи и массовых коммуникаций Российской Федерации
(по состоянию на 23.10.2012)

71

Download

per_reu_vvoz_121002.zip

Перечень радиоэлектронных средств и высокочастотных устройств, разрешённых для ввоза на территорию Российской Федерации

Утвержден решением Государственной комиссии по радиочастотам от 02.10.2012

882

Download

rcis_otchet_2011.pdf

Отчет о результатах мониторинга исполнения государственного задания ГАУ РО «РЦИС» в 2011 году

2068

Download

rcis_otchet_2012_1kv.pdf

Отчет о результатах мониторинга исполнения государственного задания ГАУ РО «РЦИС» в I квартале 2012 года

156

Download

res_olimp.zip

Разрешительная документация, а также порядок использования и маркирования радиоэлектронных средств в местах проведения XXII олимпийских зимних игр и XI паралимпийских зимних игр 2014 года в г. Сочи

254

Download

teh_treb_tv.pdf

Технические требования на основные классы абонентских приемников, телевизоров, CAM-модулей стандарта DVB-T/T2 с поддержкой технологий системы адресного управления, системы оповещения ГО и ЧС и электронного правительства. Рекомендованы к применению в цифровой эфирной телевизионной сети ФГУП «РТРС»

1250

Download

tv_dvb-t2.xls

Модели телевизоров с тюнером DVB-T2

74

Download

tv_panasonic_dvb-t2.xls

Спецификации на телевизоры Panasonic с тюнером DVB-T2

92

Download

tv_toshiba_dvb-t2.xls

Спецификации на телевизоры Toshiba с тюнером DVB-T2

444

Из полного адреса клиента необходимо вычленить название улиц

bravman

Дата: Среда, 16.03.2016, 11:08 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Добрый день!

Есть адрес клиента формата:

456578, Челябинская обл, Еткульский р-н, Лесной п, Центральная ул, дом № 18
или
454000, Челябинская обл, Челябинск г, Ленина пр-кт, дом № 83

Необходимо из этого списка получить только название улицы (в приведенных примерах искомые слова «Центральная» и «Ленина»).

Буду очень благодарен, всю голову уже изломал над данной проблемой.
А в ручную сделать невозможно — более 10 000 строк в файле…..

К сообщению приложен файл:

354786.xlsx
(8.5 Kb)

 

Ответить

китин

Дата: Среда, 16.03.2016, 11:17 |
Сообщение № 2

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

Замечаний:
0% ±


Excel 2007;2010;2016

Самое простое это текст по столбцам разделитель запятая. А потом ручками убирать все поселки , сп и т.д.


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

MacSieM

Дата: Среда, 16.03.2016, 11:33 |
Сообщение № 3

Группа: Проверенные

Ранг: Участник

Сообщений: 84


Репутация:

18

±

Замечаний:
0% ±


Excel 2010

Здравствуйте.

Если с наименованием типа улицы, то можно вот так:

Код

=ПРАВСИМВ(ЛЕВСИМВ(A1;НАЙТИ(«, дом»;A1)-1);ДЛСТР(ЛЕВСИМВ(A1;НАЙТИ(«, дом»;A1)-1)) + ПРОСМОТР(;-СТРОКА($1:$99)/(«,»=ПСТР(ЛЕВСИМВ(A1;НАЙТИ(«, дом»;A1)-1);СТРОКА($1:$99);ДЛСТР(«,»))))-1)

PS: пользовался формулой, выложенной здесь

Сообщение отредактировал MacSieMСреда, 16.03.2016, 11:42

 

Ответить

китин

Дата: Среда, 16.03.2016, 11:36 |
Сообщение № 4

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

Замечаний:
0% ±


Excel 2007;2010;2016

ну или вот такой монстр получился

Код

=ПСТР(ПОДСТАВИТЬ(ЛЕВБ(A1;ПОИСК(«дом»;A1)-3);»,»;»ЯЯЯ»;ДЛСТР(ЛЕВБ(A1;ПОИСК(«дом»;A1)-3))-ДЛСТР(ПОДСТАВИТЬ(ЛЕВБ(A1;ПОИСК(«дом»;A1)-3);»,»;»»)));ПОИСК(«ЯЯЯ»;ПОДСТАВИТЬ(ЛЕВБ(A1;ПОИСК(«дом»;A1)-3);»,»;»ЯЯЯ»;ДЛСТР(ЛЕВБ(A1;ПОИСК(«дом»;A1)-3))-ДЛСТР(ПОДСТАВИТЬ(ЛЕВБ(A1;ПОИСК(«дом»;A1)-3);»,»;»»))))+4;99)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

MacSieM

Дата: Среда, 16.03.2016, 11:39 |
Сообщение № 5

Группа: Проверенные

Ранг: Участник

Сообщений: 84


Репутация:

18

±

Замечаний:
0% ±


Excel 2010

Без наименования типа улицы (очень длинная формула, я не оптимизировал)

Код

=ЛЕВСИМВ(ПРАВСИМВ(ЛЕВСИМВ(A1;НАЙТИ(«, дом»;A1)-1);ДЛСТР(ЛЕВСИМВ(A1;НАЙТИ(«, дом»;A1)-1))+ПРОСМОТР(;-СТРОКА($1:$99)/(«,»=ПСТР(ЛЕВСИМВ(A1;НАЙТИ(«, дом»;A1)-1);СТРОКА($1:$99);ДЛСТР(«,»))))-1);
-ПРОСМОТР(;-СТРОКА($1:$99)/(» «=ПСТР(ПРАВСИМВ(ЛЕВСИМВ(A1;НАЙТИ(«, дом»;A1)-1);ДЛСТР(ЛЕВСИМВ(A1;НАЙТИ(«, дом»;A1)-1))+ПРОСМОТР(;-СТРОКА($1:$99)/(«,»=ПСТР(ЛЕВСИМВ(A1;НАЙТИ(«, дом»;A1)-1);СТРОКА($1:$99);ДЛСТР(«,»))))-1);СТРОКА($1:$99);ДЛСТР(» «))))-1)

Сообщение отредактировал MacSieMСреда, 16.03.2016, 11:40

 

Ответить

VIDEO56

Дата: Среда, 16.03.2016, 11:40 |
Сообщение № 6

Группа: Проверенные

Ранг: Обитатель

Сообщений: 262


Репутация:

23

±

Замечаний:
0% ±


Excel 2010

И еще один вариант
[vba]

Код

Function ExtractElement(Txt, n, Separator) As String
‘   Функция выдает n-ый элемент текстовой строки Txt, где
‘   символ Separator используется как разделитель

    Dim Txt1 As String, TempElement As String
    Dim ElementCount As Integer, i As Integer

        Txt1 = Txt
‘   Если в качестве разделителя используется пробел, то убираем лишние
‘   и двойные пробелы
    If Separator = Chr(32) Then Txt1 = Application.Trim(Txt1)

    ‘   Добавляем разделитель в конец строки (если необходимо)
    If Right(Txt1, 1) <> Separator Then Txt1 = Txt1 & Separator

    ‘   Начальные значения
    ElementCount = 0
    TempElement = «»

    ‘   Извлекаем элемент
    For i = 1 To Len(Txt1)
        If Mid(Txt1, i, 1) = Separator Then
            ElementCount = ElementCount + 1
            If ElementCount = n Then
‘               Found it, so exit
                ExtractElement = TempElement
                Exit Function
            Else
                TempElement = «»
            End If
        Else
            TempElement = TempElement & Mid(Txt1, i, 1)
        End If
    Next i
    ExtractElement = «»
End Function

[/vba]

Код

=ExtractElement(A7;2;»,»)

К сообщению приложен файл:

___2.xls
(31.0 Kb)


Всем удачного дня!

Сообщение отредактировал VIDEO56Среда, 16.03.2016, 11:42

 

Ответить

MacSieM

Дата: Среда, 16.03.2016, 11:45 |
Сообщение № 7

Группа: Проверенные

Ранг: Участник

Сообщений: 84


Репутация:

18

±

Замечаний:
0% ±


Excel 2010

VIDEO56, боюсь, что этот способ может дать сбой. В приведенном примере неясно, в какой позиции будет находиться улица. Если есть район, то смещение на пятую позицию, если без него, то на четвертой.

 

Ответить

SLAVICK

Дата: Среда, 16.03.2016, 11:49 |
Сообщение № 8

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

И у меня вариант есть:

Код

=СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ(ПСТР(A1;1;МИН(ЕСЛИОШИБКА(ПОИСК(» «&{«пр-кт»;»пер»;»ул»};A1;1);9^9)));»,»;ПОВТОР(» «;100));100))

Формула массива.

Обратите внимание на перечисление типов улиц {«пр-кт»;»пер»;»ул»} — для этого примера хватило 3-х. Но возможно у Вас будет больше — тогда добавьте их в этот кусок.

Ну и если везде есть дом, и нужно с названием улицы — то еще короче — обычная формула:

Код

=СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ(ПСТР(A1;1;ПОИСК(«, дом»;A1;1)-1);»,»;ПОВТОР(» «;100));100))


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICKСреда, 16.03.2016, 12:01

 

Ответить

bravman

Дата: Среда, 16.03.2016, 12:19 |
Сообщение № 9

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Всем большое спасибо, все способы работают!!!

Но особенно понравился вот этот

И у меня вариант есть:

=СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ(ПСТР(A1;1;МИН(ЕСЛИОШИБКА(ПОИСК(» «&{«пр-кт»;»пер»;»ул»};A1;1);9^9)));»,»;ПОВТОР(» «;100));100))

 

Ответить

МВТ

Дата: Среда, 16.03.2016, 20:00 |
Сообщение № 10

Группа: Проверенные

Ранг: Обитатель

Сообщений: 476


Репутация:

137

±

Замечаний:
0% ±


Excel 2007

А я опять предложу регулярку
[vba]

Код

Option Explicit
Function tt(text As String) As String
    Dim obj As Object
    With CreateObject(«VBScript.Regexp»)
        .Ignorecase = True
        .Pattern = «(?: (?:п|г|с|рп).?,)(.*? (ул|пер|пр-кт))»
        Set obj = .Execute(text)
        If obj.Count <> 0 Then tt = obj(0).Submatches(0)
    End With
End Function

[/vba]

 

Ответить

Содержание материала

  1. Пример функции ПОИСКПОЗ в Excel без функции ИНДЕКС
  2. Видео
  3. Функция ВПР с несколькими условиями критериев поиска в Excel
  4. Сочетание с функцией ПОИСКПОЗ
  5. Функция ПОИСКПОЗ в Excel – синтаксис и использование
  6. Функция ПОИСКПОЗ в Excel – Пример использования функции ПОИСКПОЗ в Excel
  7. Особенности функции ПОИСКПОЗ Excel
  8. Примеры
  9. Функция ИНДЕКС для массивов
  10. Поиск позиций ВСЕХ текстовых значений, удовлетворяющих критерию
  11. Поиск позиции в массивах с текстовыми значениями
  12. Поиск значений с помощью функций ВПР, ИНДЕКС и ПОИСКПОЗ
  13. Использование функции ГПР
  14. Одновременное использование функций ИНДЕКС и ПОИСКПОЗ
  15. Еще о функциях поиска
  16. Функция ИНДЕКС в Excel
  17. Правильное написание
  18. Пример использования функции ПОИСКПОЗ

Пример функции ПОИСКПОЗ в Excel без функции ИНДЕКС

Во многих поисковых формулах очень часто приходится использовать функцию ПОИСКПОЗ как вспомогательную в комбинациях с другими функциями такими как: ИНДЕКС, ВПР, ГПР и др. Но какую пользу может приносить данная функция работая самостоятельно. Из самого названия функции ПОИСКПОЗ понятно, что ее главная задача заключается в определении позиции исходного значения, которое содержит диапазон ячеек или таблица. Применять эту функцию очень просто для диапазонов или таблиц с одним столбцом или с одной строкой. Поэтому сразу усложним задачу и на конкретном примере проиллюстрируем как применять функцию ПОИСКПОЗ для таблицы с двумя столбцами и более.

Видео

Функция ВПР с несколькими условиями критериев поиска в Excel

Функция ВПР (Вертикальный ПРосмотр) ищет по таблице с данными и на основе критериев запроса поиска, возвращает соответствующее значение с определенного столбца. Очень часто необходимо в запросе поиска использовать сразу несколько условий. Но по умолчанию данная функция не может обработать более одного условия. Поэтому следует использовать весьма простую формулу, которая позволит расширить возможности функции ВПР по нескольким столбцам одновременно.

Сочетание с функцией ПОИСКПОЗ

Теперь давайте перейдем к более сложным задачам, выполняемым с помощью комбинированного использования оператора ИНДЕКС с другими функциями, например, с ПОИСКПОЗ (довольно часто эти функции используются вместе).

Оператор ПОИСКПОЗ возвращает положение указанного значения в выделенном диапазоне ячеек.

Формула функции выглядит следующим образом:

=ПОИСКПОЗ(Искомое_значение,Просматриваемый_массив,[Тип_сопоставления]).

Давайте “пробежимся” по аргементам функции:

  • Искомое значение – то значение, которе мы хотим найти в выделенном диапазоне;
  • Просматриваемый массив – область ячеек, в которой мы будем искать искомое значение;
  • Тип сопоставления – с помощью данного аргумента (не является обязательным) можно задать точность поиска.

Использование ПОИСКПОЗ позволяет автоматически заполнить аргументы “Номер строки” и/или “Номер столбца” функции ИНДЕКС.

Чтобы было нагляднее, давайте разберемся, как это работает на практическом примере. Для этого нам понадобится все та же таблица. Также, рядом с ней у нас есть небольшая вспомогательная таблица, в которой отведено место для одного наименования и его стоимости.

Наша задача – используя ИНДЕКС и ПОИСКПОЗ добавить

Наша задача – используя ИНДЕКС и ПОИСКПОЗ добавить в ячейку со стоимостью (G2) такую функцию, которая будет выводить конкретное значение в зависимости от того, что будет указано в ячейке с наименованием рядом.

  1. Для начала, заполняем ячейку с наименованием. Можно просто скопировать и вставить значение из основной таблицы.Теперь встаем в ячейку, в которой планируем отобра
  2. Теперь встаем в ячейку, в которой планируем отображать результат, и жмем кнопку “Вставить функцию” (fx).Выбираем функцию ИНДЕКС из списка операторов.
  3. Выбираем функцию ИНДЕКС из списка операторов.Выбираем список аргументов для массива и жмем OK.
  4. Выбираем список аргументов для массива и жмем OK.Приступаем к заполнению аргументов:в значении “Мас
  5. Приступаем к заполнению аргументов:
  6. Таким образом, мы получаем в выбранной ячейке нужный результат, а именно цену указанной рядом позиции.Так как информация “подтягивается” с помощью форму
  7. Так как информация “подтягивается” с помощью формулы, изменение цены соответствующей позиции в основной таблице немедленно отразится в данной ячейке.Также, если мы изменим наименование позиции во всп
  8. Также, если мы изменим наименование позиции во вспомогательной таблице, ее цена автоматически будет заполнена из основной.

Функция ПОИСКПОЗ в Excel – синтаксис и использование

Функция ПОИСКПОЗ в Excel ищет заданное значение в диапазоне ячеек и возвращает относительное положение этого значения.

Синтаксис формулы ПОИСКПОЗ выглядит следующим образом:

Искомое_значение (обязательный аргумент) – значение, которое вы хотите найти. Это может быть числовое, текстовое или логическое значение, а также ссылка на ячейку.

Просматриваемый_массив (обязательный аргумент) – диапазон ячеек для поиска.

Тип_сопоставления (необязательный аргумент) – определяет тип соответствия. Это может быть одно из следующих значений: 1, 0, -1.

  • 1 или отсутствует (по умолчанию) – находит наибольшее значение в массиве, которое меньше или равно значению поиска. Массив поиска должен быть отсортирован в порядке возрастания, от самого маленького до большого или от A до Z.
  • 0 – находит первое значение в массиве, которое в точности равно значению поиска. Сортировка не требуется.
  • -1 – находит наименьшее значение в массиве, которое больше или равно значению поиска. Массив поиска должен быть отсортирован в порядке убывания, от самого большого до самого маленького или от Z до A.

Чтобы лучше разобраться в данной функции, давайте напишем простую формулу ПОИСКПОЗ, основанную на следующих данных: фамилии студентов в столбце A и их баллы по экзаменам в столбце B, отсортированные от самых высоких до самых низких. Чтобы узнать, где среди других находится конкретный студент (например, студентка Виноградова), используйте эту простую формулу:

=ПОИСКПОЗ(E1; A2:A8; 0)

При желании вы можете поместить значение поиска в ячейку (E1 в данном примере) и сослаться на эту ячейку в формуле ПОИСКПОЗ Excel:

Функция ПОИСКПОЗ в Excel – Пример использования фу

Функция ПОИСКПОЗ в Excel – Пример использования функции ПОИСКПОЗ в Excel

Как вы видите на изображении выше, фамилии студентов вводятся в произвольном порядке, поэтому мы устанавливаем аргумент тип_сопоставления равным 0 (точное совпадение), поскольку только этот тип соответствия не требует сортировки значений в массиве поиска. Технически формула ПОИСКПОЗ возвращает относительное положение студентки Виноградовой в исследуемом диапазоне. Но поскольку оценки сортируются от самых высоких до самых низких, это также говорит нам о том, что Виноградова пятая по счету среди всех учеников.

Особенности функции ПОИСКПОЗ Excel

Как вы только что видели, использовать ПОИСКПОЗ в Excel легко. Однако, как и у любой функции Excel, у нее есть несколько особенностей, о которых следует знать:

  • Функция ПОИСКПОЗ возвращает относительное положение значения поиска в массиве, а не самого значения.
  • ПОИСКПОЗ не зависит от регистра , что означает, что она не различает строчные и прописные символы при работе с текстовыми значениями.
  • Если массив поиска содержит несколько вхождений искомого значения, возвращается позиция первого значения.
  • Если искомое значение не найдено в просматриваемом массиве, возвращается ошибка #Н/Д.

Примеры

Формула =ПОИСК(«к»;»Первый канал») вернет 8, т.к. буква к находится на 8-й позиции слева.

Пусть в ячейке А2 введена строка Первый канал — лучший . Формула =ПОИСК(СИМВОЛ(32);A2) вернет 7, т.к. символ пробела (код 32) находится на 7-й позиции.

Формула =ПОИСК(«#. #»;»Артикул #123# ID») будет искать в строке » Артикул #123# ID » последовательность из 5 символов, которая начинается и заканчивается на знак #.

Чтобы найти позицию второго вхождения буквы «а» в строке «мама мыла раму» используйте формулу =ПОИСК(«а»;»мама мыла раму»;ПОИСК(«а»;»мама мыла раму»)+1). Чтобы определить есть ли третье вхождение буквы «м» в строке «мама мыла раму» используйте формулу =ЕСЛИ(ДЛСТР(ПОДСТАВИТЬ(«мама мыла раму»;»м»;»»;3))=ДЛСТР(«мама мыла раму»);»Нет третьего вхождения м»;»Есть третье вхождение м»)

Формула =ПОИСК(«клад?»;»докладная») вернет 3, т.е. в слове «докладная» содержится слово из 5 букв, первые 4 из которых клад (начиная с третьей буквы слова докладная ).

Функция ИНДЕКС для массивов

Допустим, у нас есть таблица с наименованиями товаров, их ценой, количеством и итоговой суммой.

Наша задача – в заранее выбранной ячейке отобразит

Наша задача – в заранее выбранной ячейке отобразить наименование 5-ой позиции в списке.

  1. Встаем в ячейку, куда планируем вывести требуемые данные. Затем жмем кнопку “Вставить функцию” (fx).В открывшемся окне вставки функции выбираем катего
  2. В открывшемся окне вставки функции выбираем категорию “Ссылки и массивы” (или “Полный алфавитный перечень”), отмечаем строку “ИНДЕКС” и жмем OK.Далее программа предложит на выбор один из двух на
  3. Далее программа предложит на выбор один из двух наборов аргументов, о которых мы писали выше (для массива или для ссылок). В рамках поставленной задачи выбираем первый вариант и жмем OK.Теперь нам нужно заполнить аргументы функции:в зна
  4. Теперь нам нужно заполнить аргументы функции:
  5. В выбранной ячейке отобразится результат согласно заданным условиям отбора в аргументах функции. В нашем случае – это содержимое ячейки, находящейся в 1-ом столбце и 5-ой строке выделенного массива.

Как мы ранее отмечали, один из аргументов функции (“Номер_столбца” или “Номер_строки”) может оставаться незаполненным, если выделенный массив будет одномерным, т.е. занимать либо одну строку, либо один столбец. На практике это выглядит следующим образом.

  1. В окне аргументов функции в поле “Массив” выделяем только ячейки первого столбца. Указываем номер строки – 5, а номер столбца, соответственно, остается незаполненным, так как в выделенном нами массиве он только один.Нажав кнопку OK мы получим тот же результат в ячей
  2. Нажав кнопку OK мы получим тот же результат в ячейке таблицы, хотя аргументы функции и ее формула будут отличаться от первоначального варианта.

Поиск позиций ВСЕХ текстовых значений, удовлетворяющих критерию

Функция ПОИСКПОЗ() возвращает только одно значение. Если в списке присутствует несколько значений, удовлетворяющих критерию, то эта функция не поможет.

Рассмотрим список с повторяющимися значениями в диапазоне B66:B72 . Найдем все позиции значения Груши .

Значение Груши находятся в позициях 2 и 5 списка. С помощью формулы массива

=(«груши»=$B$66:$B$72)*(СТРОКА($B$66:$B$72)-СТРОКА($D$65))

можно найти все эти позиции. Для этого необходимо выделить несколько ячеек (расположенных вертикально), в Строке формул ввести вышеуказанную формулу и нажать CTRL+SHIFT+ENTER . В позициях, в которых есть значение Груши будет выведено соответствующее значение позиции, в остальных ячейках быдет выведен 0.

C помощью другой формулы массива

=НАИБОЛЬШИЙ((«груши»=$B$66:$B$72)*(СТРОКА($B$66:$B$72)-СТРОКА($D$65));СТРОКА()-СТРОКА($D$65))

можно отсортировать найденные позиции, чтобы номера найденных позиций отображались в первых ячейках (см. файл примера ).

Поиск позиции в массивах с текстовыми значениями

Произведем поиск позиции в НЕ сортированном списке текстовых значений (диапазон B7:B13 )

   Столбец       Позиция      приведен для наглядн

Столбец Позиция приведен для наглядности и не влияет на вычисления.

Формула для поиска позиции значения Груши: =ПОИСКПОЗ(«груши»;B7:B13;0)

Формула находит первое значение сверху и выводит его позицию в диапазоне, второе значение Груши учтено не будет.

Чтобы найти номер строки, а не позиции в искомом диапазоне, можно записать следующую формулу: =ПОИСКПОЗ(«груши»;B7:B13;0)+СТРОКА($B$6)

Если искомое значение не обнаружено в списке, то будет возвращено значение ошибки #Н/Д. Например, формула =ПОИСКПОЗ(«грейпфрут»;B7:B13;0) вернет ошибку, т.к. значения «грейпфрут» в диапазоне ячеек B7:B13 нет.

В файле примера можно найти применение функции при поиске в горизонтальном массиве.

Поиск значений с помощью функций ВПР, ИНДЕКС и ПОИСКПОЗ

​ искомое слово. Думаю,​ результат.​ нужно из нескольких​ двумя столбцами как​ как вспомогательную в​ указанном диапазоне.​Формула ищет в C2:C10​(ПОИСКПОЗ) использована для​

​=ПОИСКПОЗ(D5;{«Jan»;»Feb»;»Mar»};0)​(ИНДЕКС), чтобы найти​

​ численность населения Воронежа​

​=ВПР​

  • ​41​находит первое значение,​возвращает значение 2, поскольку​ ошибку. С помощью​ не соответствуют искомому​ что анимация, расположенная​Введите в строке формул​ сделать один!​

  • ​ с одним мы​ комбинациях с другими​Дополнительные сведения см. в​ первое значение, соответствующее​

    ​ того, чтобы найти​​Вы можете преобразовать оценки​ ближайшее значение.​ в четвертом столбце​(2345678;A1:E7;5)​Формула​ равное аргументу​

  • ​ элемент 25 является вторым​ функции ЕОШИБКА мы​ выражению, и номер​ выше, полностью показывает​ в нее следующую​

​Добавим рядом с нашей​ использовали в ее​ функциями такими как:​ разделе, посвященном функции​ значению​ из нескольких угаданных​ учащихся в буквенную​​Функция​​ (столбец D). Использованная​. Формула возвращает цену​Описание​искомое_значение​ в диапазоне.​ проверяем выдала ли​​ столбца, в котором​ ​ задачу.​​ формулу:​ таблицей еще один​ аргументах оператор &.​

​ ИНДЕКС, ВПР, ГПР​ ГПР.​Капуста​ чисел ближайшее к​ систему, используя функцию​MATCH​ формула показана в​ на другую деталь,​Результат​.​Совет:​​ функция ПОИСКПОЗ ошибку.​​ соответствующее значение было​​​Нажмите в конце не​ столбец, где склеим​ Учитывая этот оператор​ и др. Но​К началу страницы​(B7), и возвращает​ правильному.​MATCH​

​(ПОИСКПОЗ) имеет следующий​ ячейке A14.​ потому что функция​=ПОИСКПОЗ(39;B2:B5,1;0)​Просматриваемый_массив​ Функцией​ Если да, то​ найдено.​Пример 1. Первая идя​ Enter, а сочетание​ название товара и​ первый аргументом для​ какую пользу может​Для выполнения этой задачи​ значение в ячейке​Функция​(ПОИСКПОЗ) так же,​ синтаксис:​

​Краткий справочник: обзор функции​ ВПР нашла ближайшее​Так как точного соответствия​может быть не​ПОИСКПОЗ​ мы получаем значение​СУММ(($A$2:$D$9=F2)*СТОЛБЕЦ($A$2:$D$9))​ для решения задач​Ctrl+Shift+Enter​ месяц в единое​ функции теперь является​ приносить данная функция​ используется функция ГПР.​

​ C7 (​ABS​ как Вы делали​MATCH(lookup_value,looku

​ C7 (​ABS​ как Вы делали​MATCH(lookup_value,lookup_array,[match_type])​

Использование функции ГПР

​ ВПР​ число, меньшее или​ нет, возвращается позиция​ упорядочен.​следует пользоваться вместо​ ИСТИНА. Быстро меняем​Наконец, все значения из​ типа – это​

Одновременное использование функций ИНДЕКС и ПОИСКПОЗ

​, чтобы ввести формулу​ целое с помощью​ значение FordМаркетинговый. По​ работая самостоятельно. Из​Важно:​100​возвращает модуль разницы​ это с​ПОИСКПОЗ(искомое_значение;просматриваемый_массив;[тип_сопоставления])​Функции ссылки и поиска​ равное указанному (2345678).​ ближайшего меньшего элемента​-1​ одной из функций​ её на ЛОЖЬ​ нашей таблицы суммируются​

​ при помощи какого-то​ не как обычную,​ оператора сцепки (&),​ этой причине первый​ самого названия функции​  Значения в первой​).​ между каждым угаданным​VLOOKUP​lookup_value​ (справка)​ Эта ошибка может​ (38) в диапазоне​Функция​ПРОСМОТР​ и умножаем на​ (в нашем примере​ вида цикла поочерёдно​ а как формулу​ чтобы получить уникальный​ Ford из отдела​ ПОИСКПОЗ понятно, что​

Еще о функциях поиска

Еще о функциях поиска

  • ​ строке должны быть​Дополнительные сведения см. в​

  • ​ и правильным числами.​(ВПР). В этом​

  • ​(искомое_значение) – может​Использование аргумента массива таблицы​

​ привести к неправильному​

support.office.com

Функция ИНДЕКС в Excel

Функция ИНДЕКС возвращает содержимое ячейки, которая находится на пересечении заданных строки и столбца. Например, на рисунке ниже формула возвращает значение из диапазона A1:C4, которое находится на пересечении 3 строки и 2 столбца.

Стоит отметить, что номера строк и столбцов задают

Стоит отметить, что номера строк и столбцов задаются относительно верхней левой ячейки диапазона. Например, если ту же таблицу расположить в другом диапазоне, то формула вернет тот же результат:

Если массив содержит только одну строку или один с

Если массив содержит только одну строку или один столбец, т.е. является вектором, то второй аргумент функции ИНДЕКС указывает номер значения в этом векторе. При этом третий аргумент указывать необязательно.

Например, следующая формула возвращает пятое значение из диапазона A1:A12 (вертикальный вектор):

Данная формула возвращает третье значение из диапа

Данная формула возвращает третье значение из диапазона A1:L1(горизонтальный вектор):

Правильное написание

Формула включает в себя следующие элементы:

  • ПОИСКПОЗ() – указание самой функции;
  • Искомое значение, позицию которого необходимо узнать. Можно указывать ссылки на ячейки или вписывать само значение.
  • Диапазон данных – массив (таблица, строка, столбец) данных, среди которых будет осуществляться поиск;
  • Тип сопоставления – уточнение того, какое значение предстоит искать (равное указанному в формуле, меньшее или большее).

Итак, финальный вариант формулы выглядит следующим образом:

[kod]ПОИСКПОЗ(искомое_значение;диапазон_данных;[тип_сопоставления]).[/kod]

Если вам необходимо одиночное использование функции, то она должна иметь строго указанный вид. В противном случае вы можете получить неверный результат или ошибку Н/Д.

Пример использования функции ПОИСКПОЗ

Предположим у нас есть список продуктов и нам нужно найти порядковый номер конкретного продукта в этом списке. В качестве искомого значения выбираем ячейку C3 («Апельсины») и задаем просматриваемый массив в виде диапазона ячеек A2:A13 (название продукта), тип сопоставления указываем 0:

Пример использования функции ПОИСКПОЗ

Пример использования функции ПОИСКПОЗ

Теги

Многие пользователи знают и применяют формулу ВПР. Известно также, что ВПР имеет ряд особенностей и ограничений, которые несложно обойти. Однако есть нюанс, который значительно ограничивает возможности функции ВПР.

ВПР требует, чтобы в диапазоне с искомыми данными столбец критериев всегда был первым слева. Это обстоятельство, конечно, является ограничением ВПР. Как же быть, если искомые данные находятся левее столбца с критерием? Можно, конечно, расположить столбцы в нужном порядке, что в целом, является неплохим выходом из ситуации. Но бывает так, что сделать этого нельзя, или трудно. К примеру, вы работаете в чужом документе или регулярно получаете новый отчет. В общем, нужно решение, не зависящее от расположения столбцов. Такое решение существует.

Нужно воспользоваться комбинацией из двух функций: ИНДЕКС и ПОИСКПОЗ. Формула работает следующим образом. ИНДЕКС отсчитывает необходимое количество ячеек вниз в диапазоне искомых значений. Количество отсчитываемых ячеек определяется по столбцу критериев функцией ПОИСКПОЗ. Работу комбинации этих функций удобно рассмотреть с середины, где вначале находится номер ячейки с подходящим критерием, а затем этот номер подставляется в ИНДЕКС.

Работа функций ИНДЕКС и ПОИСКПОЗ

Таким образом, чтобы подтянуть значение цены, соответствующее первому коду (книге), нужно прописать такую формулу.

Комбинация функций ИНДЕКС и ПОИСКПОЗ

Следует обратить внимание на корректность ссылок, чтобы при копировании формулы ничего не «съехало». Протягиваем формулу вниз. Если в таблице, откуда подтягиваются данные, нет искомого критерия, то функция выдает ошибку #Н/Д.

Ошибки при использовании функций ИНДЕКС и ПОИСКПОЗ

Довольно стандартная ситуация, с которой успешно справляется функция ЕСЛИОШИБКА. Она перехватывает ошибки и вместо них выдает что-либо другое, например, нули.

Конструкция формулы будет следующая:

ЕСЛИОШИБКА, ИНДЕКС и ПОИСКПОЗ

Вот, собственно, и все.

Таким образом, комбинация функций ИНДЕКС и ПОИСКПОЗ является полной заменой ВПР и обладает дополнительным преимуществом: умеет находить данные слева от столбца с критерием. Кроме того, сами столбцы можно двигать как угодно, лишь бы ссылка не съехала, чего нельзя проделать с ВПР, т.к. количество столбцов там указывается конкретным числом. Посему комбинация ИНДЕКС и ПОИСКПОЗ более универсальна, чем ВПР.

Ниже видеоурок по работе функций ИНДЕКС и ПОИСКПОЗ.

Скачать файл с примером.

Поделиться в социальных сетях:

Понравилась статья? Поделить с друзьями:
  • Ребусы текстовый редактор word
  • Ребусы по теме word
  • Реализовать если то в excel примеры
  • Реализация функции если то в excel примеры
  • Реализация товаров бланк скачать excel