Поиск предыдущей строки с заданным значением

3

Допустим, у меня есть таблица с тремя столбцами (порядок важен и не может быть изменен), строки отсортированы по A:

   A                B            C
      date              ID     last_date
10/05/2015        29A06E95     
10/08/2015        E5A884C4
10/12/2015        D24F4975
10/12/2015        D24F4976
10/21/2015        29A06E95

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

   A                B            C
      date              ID      prev_date
10/05/2015        29A06E95        <blank>
10/08/2015        E5A884C4        <blank>
10/12/2015        29A06E95     10/05/2015
10/12/2015        D24F4976        <blank>
10/21/2015        29A06E95     10/12/2015

Как мне это сделать (я не смог использовать ни MATCH, ни VLOOKUP, так как первый находит первое совпадение, а второй хочет найти значение поиска в первом столбце)?

Кроме того, я видел решения с формулами массивов, но они, похоже, не работают в контексте таблицы данных.

Dmitry B.
источник

Ответы:

3

Это работает, начиная с Excel 2007. Выберите C3 и поместите эту формулу в это:

=IFERROR(INDIRECT("A"&MAX(ROW(B$2:B2)*(B$2:B2=B3))),"")

Подтвердите формулу Ctrl + сдвиг + войти ,

Перетащите (или скопируйте) туда, где это необходимо.

SΛLVΘ
источник
Я упомянул в своем вопросе, что формулы массива не работают в контексте таблицы. В Excel говорится: «В таблицах нельзя использовать формулы из нескольких ячеек»
Dmitry B.
Сделал тест. Работает плавно, вам даже не нужно тянуть его вниз; Я просто удалил С2, так как это не имеет смысла. Я что-то пропустил?
SΛLVΘ
всякий раз, когда я пытаюсь ввести формулу массива, используя ctrl + shift + enter внутри таблицы данных, Excel отказывается принимать ее со следующей ошибкой: «формулы таблиц с несколькими ячейками не допускаются в таблицах». И да, нет VBA (по крайней мере, пока).
Dmitry B.
Хорошо, теперь я вижу, что ты делаешь. Вы пытаетесь вставить формулу с выбранным диапазоном. Это не то, что я написал. Пожалуйста, следуйте инструкциям, я постарался сделать их понятнее.
SΛLVΘ
0

Разве вы не можете просто создать второй лист с перевернутыми столбцами и датами? Потому что тогда решения - это просто vlookup.

Kalrunoor
источник
Фактическая таблица достаточно сложна, так что это не является предпочтительным решением (т. Е. Один из столбцов является следующей датой). На самом деле, нет, VLOOKUP все равно не будет работать, потому что ключевой столбец не первый. Матч будет работать.
Dmitry B.
0

Я думаю, что это должно сделать это:

=IFERROR(IF(A2=INDEX(MIN($A$2:$A$6),MATCH(B2,$B$2:$B$6,0)),"",INDEX(MIN($A$2:$A$6),MATCH(B2,$B$2:$B$6,0))),"")

Поместите это в C2, отредактируйте диапазоны по мере необходимости, введите как массив (с CTRL + SHIFT + ENTER ) и перетащите вниз.

Редактировать: Хорошо, неважно, видимо массивы не работают? Можете ли вы уточнить, что вы подразумеваете под «контекстом таблицы»? AFAIK Массив формул все еще должен работать с таблицами, нет?

BruceWayne
источник
@DmitryB. - спасибо за это, но я не вижу, где написано, что вы не можете использовать массивы. Хм, я посмотрю, смогу ли я получить это по-другому. Я полагаю, вы делаете не хотите решение VBA?
BruceWayne
1
Это была просто ссылка, чтобы определить, что такое таблица (данных). Всякий раз, когда я пытаюсь добавить формулу массива в таблицу данных, Excel отказывается с таким сообщением: «формулы таблиц с несколькими ячейками не допускаются в таблицах». И да, нет VBA.
Dmitry B.
1
@ DmitryB.- не для того, чтобы оставаться тривиальным, но вы вводите формулу в одной ячейке, правильно? Не выбирая диапазон, вводя формулу, а затем нажимая CTRL + SHIFT + ENTER, да?
BruceWayne