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

я хочу иметь возможность генерировать мой код автоматически при ручном вводе любого из моих кодов конкурентов. я смог выполнить индексное сопоставление, но я смог сопоставить только один столбец, как показано ниже (я предполагаю, что они все на одном листе, чтобы упростить задачу:= INDEX (C:C, MATCH (K2, E:E, 0))

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

пытался сделать матч как C:G, но это сразу дало ошибку!

кто-нибудь может помочь, пожалуйста? был бы очень признателен. Пример изображения

2 ответа2

1

Эта формула, заполненная с B8 на скриншоте ниже, находит "Мой код", который соответствует любому коду участника:

=INDEX(B$2:B$5,SUMPRODUCT((C$2:G$5=A8)*ROW(C$2:G$5))-1)

Как это работает: Выражение (C$2:G$5=A8) представляет собой массив с True где массив кодов конкурентов равен одному в A8, а False везде.ROW(C$2:G$5) - это массив всех номеров строк кодов участников. Умножение этих двух массивов дает массив с номером строки кода в A8 в позиции, где первый массив был True , и 0 в любом другом месте.

SUMPRODUCT() суммирует этот массив, давая только номер строки. Это используется как row_num (вычитая 1 для учета строки заголовка) в формуле INDEX() чтобы вернуть соответствующий My Code.

Надеюсь, это поможет и удачи.

0

Я думаю, что ответ на этот вопрос зависит от того, как вы хотите использовать свою таблицу кодов.

Предположим, что первая строка вашей таблицы (строка 2) полностью пуста, а затем вы вводите "Код 52" в C2. Затем вы хотите, чтобы B1 показывал "Мой код 2". Но что произойдет, если вы введете другой код, например, в E2? Как бы вы хотели изменить ячейку B1?

Если только один из столбцов кода конкурента (от C до G) будет иметь значение в каждой строке, вы можете сделать это с помощью нескольких вложенных операторов IF:

Для B2: =IF(C2<>"", INDEX(...), IF(D2<>"", INDEX(...), ... ))

Чтобы дать лучший ответ, нам нужно больше узнать о вашей проблеме.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .