2017-01-13 16 views
2

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

Цель:
- сопоставить идентификатор клиента и вернуть значение 1 и значение 2 для каждого диапазона дат. (Область в красной коробке)

Ограничения по поддержанию меня для получения легкого решения
- Данные не могут быть изменены каким-либо образом (область в черный ящик), он находится в другом листе и не может иметь вспомогательные столбцы добавлены к нему
- данные отделены друг от друга заголовка, который является постоянным только с изменением диапазона дат, однако данные динамической длины
- Макросы не допускаются на этом листе, так что решение должно быть формула

Текущий угол атаки (только для ячейки H2):

=VLOOKUP(G1,("B"&(MATCH(G2,B:B,0)+ROW(B:B)-1)&":"&"D"&(MATCH(G3,B:B,0)+ROW(B:B)-1)),2,FALSE) 


Это пытается определить диапазон Vlookup, сопоставляя даты и вставляя найденные номера строк.
=("B"&(MATCH(G2,B:B,0)+ROW(B:B)-1)&":"&"D"&(MATCH(G3,B:B,0)+ROW(B:B)-1))
возвращает правильный диапазон, но когда он вставлен в целевой диапазон Vlookup, я получаю ошибку Value. Другая неудача заключается в том, что она не будет работать для последнего раздела данных, так как будет отсутствовать конечный заголовок с датой.

пыльник очень упрощенная версия данных я буду работать с:

enter image description here

Спасибо за любую помощью на этой голове скребке

ответ

0

Если я правильно понимаю ваши требования правильно , как насчет следующего, чтобы вернуть Value1:

= VLOOKUP (G1, OFFSET (B1, MATCH (G2, B : В, 0), 0, ЕСЛИОШИБКА (ПОИСКПОЗ ("Дата", OFFSET (A1, ПОИСКПОЗ (G2, B: B, 0), 0, СЧЕТЗ (А: А), 1), 0), СЧЕТЗ (А: А)), 3), 2, FALSE)

Это использует функцию OFFSET установить свой VLOOKUP диапазон. Использование 4-го и 5-го параметров возвращает диапазон, а не одну ячейку.

Две функции MATCH ищут текст диапазона дат, указанного в G2. Другая функция MATCH ищет следующий экземпляр текста «Даты» после соответствия G2; однако функция IFERROR защищает последний диапазон (поскольку нет другой ячейки «Даты») и делает диапазон настолько большим, насколько это может потребоваться, чтобы покрыть конечный диапазон дат.

Чтобы изменить его, чтобы вернуть Value2, измените значение «2» перед «FALSE» как «3».

+0

Только что отредактирован, чтобы внести поправку ... – elmer007

+0

Это работало точно так, как предполагалось, я не думал использовать статические «даты» и подсчеты. Спасибо за ваш быстрый и полезный ответ! –

 Смежные вопросы

  • Нет связанных вопросов^_^