Формула Excel: Значення рейтингу за місяцями -

Зміст

Резюме

Щоб відобразити список імен, ранжированих за числовим значенням, ви можете використовувати набір формул на основі LARGE, INDEX, MATCH, за допомогою функції TEXT. У наведеному прикладі формула в G5 має вигляд:

=LARGE(IF(TEXT(date,"mmmm")=G$4,amount),$F5)

І формула в G10 така:

=INDEX(client,MATCH(1,(amount=G5)*(TEXT(date,"mmmm")=G$9),0))

де клієнт (В5: В17) Дата (С5: С17) і кількість (С5: С17) називаються діапазони.

Примітка: це формули масиву і їх потрібно вводити за допомогою control + shift + enter, за винятком Excel 365.

Пояснення

Цей приклад складається з двох частин для наочності: (1) формула для визначення 3-х основних сум для кожного місяця та (2) формула для отримання імені клієнта для кожної з 3-х щомісячних основних сум.

Зверніть увагу, що у вихідних даних немає фактичного рангу. Натомість ми використовуємо функцію LARGE для безпосередньої роботи з сумами. Іншим підходом було б додати ранг до вихідних даних за допомогою функції RANK та використовувати значення рангу для отримання імен клієнтів.

Частина 1: отримуйте найкращі 3 суми щомісяця

Для отримання 3-х основних сум за кожен тиждень формула в G5 має такий вигляд:

=LARGE(IF(TEXT(date,"mmmm")=G$4,amount),$F5)

Примітка: це формула масиву, і її потрібно вводити за допомогою control + shift + enter, за винятком Excel 365.

Працюючи зсередини, спочатку ми використовуємо функцію TEXT, щоб отримати назви місяців для кожної дати в названій даті діапазону :

TEXT(date,"mmmm") // get month names

Спеціальний формат чисел "мммм" повертає такий рядок, як "квітень", "травень", "червень" для кожного імені в названій даті діапазону . Результат - масив назв місяців, подібних до цього:

("April";"April";"April";"April";"May";"May";"May";"May";"May";"June";"June";"June";"June")

Функція TEXT доставляє цей масив до функції IF, яка налаштована на фільтрування дат у даному місяці шляхом тестування назви місяця щодо значення в G4 (змішане посилання, тому формулу можна скопіювати вниз і поперек):

IF(TEXT(date,"mmmm")=G$4,amount) // filter on month

Лише суми в квітні виживають і пробиваються за рахунок IF всі інші значення FALSE:

(10500;15200;18500;12500;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE)

Нарешті, функція LARGE використовує значення в F5 (також змішане посилання), щоб повернути "n-те" найбільше значення, яке залишилось. У комірці G5 значення LARGE повертає 18 500, "1-е" найбільше значення. Коли формула копіюється вниз і по таблиці, функція LARGE повертає перші 3 суми за кожен з трьох місяців.

Тепер, коли ми знаємо 3 найкращі значення кожного місяця, ми можемо використовувати цю інформацію як «ключ», щоб отримати ім’я клієнта для кожного.

Частина 2: отримати імена клієнтів

Примітка: Це приклад використання INDEX та MATCH з кількома критеріями. Якщо ця концепція для вас нова, ось основний приклад.

Для отримання імені, пов’язаного з трьома найвищими значеннями в G5: I7, ми використовуємо INDEX і MATCH:

=INDEX(client,MATCH(1,(amount=G5)*(TEXT(date,"mmmm")=G$9),0))

Примітка: це формула масиву, і її потрібно вводити за допомогою control + shift + enter, за винятком Excel 365.

Працюючи зсередини, функція MATCH налаштована на використання логічної логіки таким чином:

MATCH(1,(amount=G5)*(TEXT(date,"mmmm")=G$9),0)

Значення пошуку дорівнює 1, і масив підстановки будується з таким виразом:

(amount=G5)*(TEXT(date,"mmmm")=G$9)

Вираз, що створює масив підстановки, використовує логічну логіку для "відфільтрування" суми, які (1) не в квітні, і (2) не значення в G5 (18 500). Результат - масив 1s і 0s, такий:

(0;0;1;0;0;0;0;0;0;0;0;0;0)

Зі значенням пошуку 1 і нулем для типу збігу (щоб змусити точне збіг) MATCH повертає 3 безпосередньо до функції INDEX:

=INDEX(client,3) // returns "Janus"

INDEX повертає третє значення в названому клієнті діапазону, "Janus".

Коли формула копіюється вниз і по таблиці, вона повертає 3 найкращих клієнта за кожен з трьох місяців.

Цікаві статті...