Я бы посоветовал вам структурировать свои данные гораздо более простым табличным способом. Если это не вариант для вас, у меня есть для вас несколько более сложная функция массива. Это ваша последняя формула:
=INDEX($A$1:$D$10;SUMPRODUCT(($A$1:$D$10=$G$1)*ROW($A$1:$D$10))-ROW($A$1)+ROWS($B$2:B2)+1;SUMPRODUCT(($A$1:$D$10=$G$1)*COLUMN($A$1:$D$10))-COLUMN($A$1)+1)
Эта формула входит в G2
- вы можете перетащить ее до G4
. Я предполагаю, что ваши имена всегда «Лам», «Ма» и «Ко» в одном и том же порядке. Имейте в виду, что эта функция не будет работать, если у вас есть повторяющиеся даты.
По сути, у вас все еще есть функция INDEX
. И номер строки, и номер столбца для поиска определяются с помощью функции SUMPRODUCT
(поскольку она позволяет нам выполнять поиск в двумерном диапазоне).
Первый член SUMPRODUCT приведет к строке number:
SUMPRODUCT(($A$1:$D$10=$G$1)*ROW($A$1:$D$10))-ROW($A$1)+ROWS($B$2:B2)+1
Термин $A$1:$D$10=$G$1
будет проверять все ячейки в вашем диапазоне данных на совпадение с датой в ячейке G1
. Представьте, что это даст следующий массив True
и False
:
As you see, for selected data 5th August 2020, there is only one match. To get the row number, we multiply this array with another, imaginary array of ROW($A$1:$D$10)
:
Номер строки мнимого массива
Так как только седьмая строка содержит True
, результатом умножения будет 7. Это абсолютная строка, в которой находятся искомые данные.
Остальное - проще:
-ROW($A$1)+ROWS($B$2:B2)+1
Этот термин просто удалит номер первой строки вашего диапазона данных (в случае, если ваши данные не начинаются в строке 1!) и позволит вам «перетащить» формулу вниз, чтобы вы можно использовать его для поиска Lam
, Ma
и Co
.
Процесс для номера столбца точно такой же.