Це чудове використання для динамічного INDEX
MATCH
налаштування за допомогою INDIRECT
повторного націлювання на пошукові діапазони.
Почніть з банального випадку:
=INDEX(A2:B10,MATCH(D2,A2:A10,0),2)
Давши список кодів та імен, перейдіть до (першого) коду відповідності рядків та поверніть ім’я з цього рядка.
Але як отримати другий відповідний запис?
Повторіть список, шукаючи лише решту в ньому після першої появи. З MATCH
ми знаємо , де з'являється перша відповідний запис - тому ми будемо використовувати , INDIRECT
щоб повторити ту ж INDEX
MATCH
функцію, але обмежуючи діапазон в частині списку після першого збігу.
Іншими словами, використовуйте ту саму формулу, але замініть A2:B10
на INDIRECT("A"&MATCH(D2,$A$2:$A$10,0)+2&":B10")
(потім оберніть всю річ IFERROR
для появи)
Тепер ми маємо:
=IFERROR(INDEX(INDIRECT("A"&MATCH($D2,$A$2:$A$99,0)+2&":B99"),MATCH($D2,INDIRECT("A"&MATCH($D2,$A$2:$A$99,0)+2&":A99"),0),2),"not found")
Ви зауважите, що цей метод покладається на сортування стовпця «Клієнтський код» - ми чітко зашифрували +2
в посилання клітинки, яка визначає діапазон - пам’ятайте, початковий діапазон починався з A2
, ні A1
, тому ми додаємо один рядок, щоб наздогнати, а потім ми додаємо ще один рядок, щоб розпочати діапазон із наступного рядка вниз.
Що повинно чітко зрозуміти, що ми будемо робити далі:
Просто змініть це +2
на a, +3
щоб запустити діапазон пошуку з наступного ряду вниз (пропускаючи перші два відповідні екземпляри), щоб отримати третій примірник наступного стовпця.
Але що робити, якщо у нас є багато стовпців або просто не подобається оновлення формул?
Нарешті, ми замінимо +2
і ці +3
компенсації на посилання на комірки, використовуючи COLUMN
. Це робить формулу розширюваною горизонтально без будь-яких вручну редагувань при копіюванні:
=IFERROR(INDEX(INDIRECT("A"&MATCH($D2,$A$2:$A$99,0)+COLUMN()-4&":B99"),MATCH($D2,INDIRECT("A"&MATCH($D2,$A$2:$A$99,0)+COLUMN()-4&":A99"),0),2),"not found")
Зауважте, що оскільки у мене є приклади даних про призначення, починаючи з комірки E2
, моє COLUMN
зміщення потрібно встановлювати вручну, один раз, до COLUMN()-4
- але як тільки це є, ця формула може бути записана у верхній лівій комірці цільового діапазону та скопійована вниз та впоперек для стількох примірників, скільки вам потрібно (знову ж таки, доки вихідні дані будуть відсортовані за кодом, оскільки вся передумова ітеративного INDEX
MATCH
полягає в тому, щоб повторити пошук із "наступного ряду вниз").