INDEX / MATCH с 4 колонками - PullRequest
       9

INDEX / MATCH с 4 колонками

0 голосов
/ 24 апреля 2018

У меня есть файл Excel с 2 листами - один лист содержит мои товары, цены, коды и т. Д., А другой лист предназначен для перекрестного сопоставления с конкурентами.

Я включил файл Excel иизображение ниже.

Я хочу иметь возможность генерировать мой код автоматически при ручном вводе любого из кодов моего конкурента.Я смог сделать INDEX/MATCH, но мне удалось сопоставить только один столбец (я полагаю, что они все на одном листе, чтобы было легче).Вот моя формула:

=INDEX(C:C,MATCH(K2,E:E,0)

Так что это выглядит только в E:E, когда я пытался ввести другой столбец, такой как C:C или D:D, он возвращаетошибка.

Я пытался сделать MATCH как C:G, но сразу выдал ошибку.

img1

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Индекс / комбинация совпадений

Пожалуйста, попробуйте эту формулу:

{= ИНДЕКС ($ B $ 2: $ B $ 5, MATCH (1, (К2 = $ C $ 2: $ C $ 5) + (К2 = $ D $ 2: $ D $ 5) + (К2 = $ E $ 2: $ E $ 5) + (К2 = $ F $ 2: $ F $ 5) + (К2 = $ G $ 2: $ G $ 5), 0))}

Инструкция: Вставьте формулу {без фигурных скобок} в строку формулы и нажмите CTRL + SHIFT + ENTER , пока ячейка еще активна. Это создаст формула массива . Отсюда и фигурные скобки. Обратите внимание, что ввод фигурных скобок вручную не будет работать.

Описание:

  • Функция INDEX возвращает значение или ссылку на значение из таблицы или диапазона. 1
  • Функция MATCH ищет указанный элемент в диапазоне ячеек, а затем возвращает относительную позицию этого элемента в диапазоне. 2

Синтаксис:

Функция INDEX имеет две формы - массив и справочную форму. В этом случае мы будем использовать справочную форму.

  • INDEX (ссылка, row_num, [column_num], [area_num]) 1

  • МАТЧ (lookup_value, lookup_array, [match_type]) 2

Пояснение:

Для упрощения мы будем использовать эту форму:

INDEX (ссылка, MATCH (lookup_value, lookup_array, [match_type]))

Функция INDEX возвращает значение из справочного столбца My code (B1: B5) на основе аргумента row_num, который служит индексом для указания на правую ячейку, и мы собираемся сделать это, заменив row_num функцией MATCH.

Функция

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

Чтобы заставить его работать с несколькими диапазонами поиска, мы собираемся создать массивы логических значений (TRUE / FALSE, или логические значения), сравнивая значения из отдельных ячеек в столбце competitor code со значениями в отдельных competitorn столбцы. Теперь мы преобразуем эти логические значения в числовые значения, выполняя математическую операцию, которая не изменяет ее подразумеваемое значение (т. Е. TRUE = 1, FALSE = 0). Мы собираемся добавить эти значения напрямую, чтобы упростить процесс. Полученный массив имеет четыре индекса с двумя возможными значениями: 1 или 0. Поскольку каждый элемент в MATCH lookup_array уникален, то может быть только один TRUE или 1. Остальные FALSE или 0. Итак, с этим знанием мы собираемся использовать его как наш lookup_value.

Давайте разберем формулу:

= ИНДЕКС (B2: B5, MATCH (1, (К2 = С2: С5) + (К2 = D2: D5) + (К2 = Е2: Е5) + (К2 = F2: F5) + (К2 = G2 : G5), 0))

My code 2 = INDEX({"My code 1";"My code 2";"My code 3";"My code 4"},MATCH)

My code 2 = INDEX({"My code 1";"My code 2";"My code 3";"My code 4"},(2))

2 = MATCH(1,(K2=C2:C5)+(K2=D2:D5)+(K2=E2:E5)+(K2=F2:F5)+(K2=G2:G5),0)

2 =MATCH(1,
    {FALSE;FALSE;FALSE;FALSE}+
    {FALSE;FALSE;FALSE;FALSE}+
    {FALSE;FALSE;FALSE;FALSE}+
    {FALSE;FALSE;FALSE;FALSE}+
    {FALSE;TRUE;FALSE;FALSE},0))

OR

=MATCH(1,
    {0;0;0;0}+
    {0;0;0;0}+
    {0;0;0;0}+
    {0;0;0;0}+
    {0;1;0;0},0))
    =========
    {0;1;0;0},0))

2 = MATCH(1,{0;1;0;0},0))

Надеюсь, этот ответ полезен.

Ссылки и ссылки:

  1. функция INDEX
  2. Функция MATCH
  3. Создать формулу массива
0 голосов
/ 25 апреля 2018

Причина, по которой при совпадении произошла ошибка, заключается в том, что он ищет массив, а вы помещаете его в несколько столбцов.

Определенно, существует более элегантный способ сделать это, но это первый предложенный мной способ.с.

=IFERROR(INDEX(B:B,MATCH(K2,C:C,0)),IFERROR(INDEX(B:B,MATCH(K2,D:D,0)),IFERROR(INDEX(B:B,MATCH(K2,E:E,0)),IFERROR(INDEX(B:B,MATCH(K2,F:F,0)),IFERROR(INDEX(B:B,MATCH(K2,G:G,0)),"")))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...