![](https://cdn.wiki-base.com/6860238/excel_formula_get_last_entry_by_month_and_year__2.png.webp)
Загальна формула
=LOOKUP(2,1/(TEXT(dates,"mmyy")=TEXT(A1,"mmyy")),values)
Резюме
Для пошуку останнього запису в таблиці за місяцями та роками можна скористатися функцією ПЕРЕГЛЯД із функцією ТЕКСТ. У наведеному прикладі формула в F5 має вигляд:
=LOOKUP(2,1/(TEXT($B$5:$B$13,"mmyy")=TEXT(E5,"mmyy")),$C$5:$C$13)
де B5: B13 та E5: E7 містять дійсні дати, а C5: C13 містить суми.
Пояснення
Примітка: lookup_value of 2 є навмисно більшим за будь-які значення у lookup_vector, дотримуючись концепції bignum.
Працюючи зсередини, вираз:
(TEXT($B$5:$B$13,"mmyy")=TEXT(E5,"mmyy"))
генерує рядки типу "0117", використовуючи значення у стовпцях B та E, які потім порівнюють між собою. Результат - такий масив:
(TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE)
де TRUE представляє дати в тому ж місяці та році. Потім число 1 ділиться на цей масив. Результат - масив із одиниць або ділення на нульові помилки (# DIV / 0!):
(1;1;1;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!)
який переходить у LOOKUP як масив підстановки. LOOKUP передбачає, що дані сортуються у порядку зростання та завжди виконують приблизний збіг. Коли значення підстановки 2 не вдається знайти, LOOKUP збігається з попереднім значенням, отже пошук збігається з останнім 1 у масиві.
Нарешті, LOOKUP повертає відповідне значення в result_vector, яке містить суми в C5: C13.