Формула Excel: Отримати розташування значення у 2D-масиві -

Загальна формула

=SUMPRODUCT((data=MAX(data))*ROW(data))-ROW(data)+1

Резюме

Щоб знайти позицію значення у 2D-масиві, можна скористатися функцією SUMPRODUCT. У наведеному прикладі формулами, що використовуються для пошуку номерів рядків і стовпців максимального значення в масиві, є:

=SUMPRODUCT((data=MAX(data))*ROW(data))-ROW(data)+1 =SUMPRODUCT((data=MAX(data))*COLUMN(data))-COLUMN(data)+1

де "дані" - іменований діапазон C5: G14.

Примітка: у цьому прикладі ми довільно знаходимо розташування максимального значення в даних, але ви можете замінити data = MAX (дані) будь-яким іншим логічним тестом, який виділить дане значення. Також зверніть увагу, що ці формули не зможуть, якщо в масиві є повторювані значення.

Пояснення

Щоб отримати номер рядка, дані порівнюються з максимальним значенням, яке генерує масив результатів TRUE FALSE. Вони помножуються на результат ROW (дані), який генерує та масив номерів рядків, пов'язаних з названим діапазоном "дані":

=SUMPRODUCT((FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,TRUE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE)*(5;6;7;8;9;10;11))

Операція множення змушує Excel примушувати значення TRUE FALSE у першому масиві до 1s та 0s, тому ми можемо візуалізувати проміжний крок таким чином:

=SUMPRODUCT((0,0,0,0,0;0,0,0,0,0;0,0,0,0,0;0,0,0,0,0;0,0,1,0,0;0,0,0,0,0;0,0,0,0,0)*(5;6;7;8;9;10;11))

Потім SUMPRODUCT повертає результат 9, що відповідає 9-му рядку на аркуші. Щоб отримати індекс відносно названого діапазону "дані", ми використовуємо:

-ROW(data)+1

Кінцевим результатом є масив (5; 4; 3; 2; 1; 0; -1), з якого відображається лише перше значення (5).

Формула для визначення положення стовпця працює так само.

Примітка: Я натрапив на такий підхід у коментарі Майка Еріксона на MrExcel.com. У цьому ланцюжку є ще кілька хороших ідей, включаючи опцію формули масиву.

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