
Допустим, у меня есть диапазон A1:A27, и этот диапазон содержит как пустые, так и непустые значения. Мне нужны две функции: одна для получения первого непустого значения в диапазоне, а другая для получения последнего непустого значения в диапазоне, вот так.
=First(A1:A27)
=Last(A1:A27)
Диапазоны будут представлять собой одномерные массивы.
Мне придется проделать множество подобных операций в своей таблице, поэтому сценарии приложений будут непригодны для использования из-за неэффективности.
Как бы вы написали эти функции?
решение1
Мы могли бы использовать это, чтобы найти первое непустое значение в диапазоне:
=INDEX(A1:A27, MATCH(TRUE, A1:A27<>"", 0))
И мы могли бы использовать это, чтобы найти последнее непустое значение в диапазоне:
=INDEX(A1:A27, MAX(IF(A1:A27<>"", ROW(A1:A27))))
решение2
Функция TOCOL
Если вы ищете только значения, TOCOL удалит пробелы, и вы можете использовать INDEX, чтобы извлечь первое значение, а для последнего значения сделать то же самое, но отсортировать по убыванию строк:
# Получить первое значение =ИНДЕКС(ТОКОЛ(A1:A27;1);1) # Получить последнее значение =ИНДЕКС(TOCOL(СОРТИРОВКА(A1:A27,СТРОКА(A1:A27),0),1),1)
Функция XMATCH
TheФункция XMATCHимеет преимущество перед MATCH для этого приложения, поскольку поддерживает поиск от первого к последнему и от последнего к первому.
# Синтаксис =XMATCH(ключ_поиска, диапазон_поиска, [режим_соответствия], [режим_поиска])
Примеры XMATCH
Синтаксис первого значения аналогичен MATCH, за исключениемexact_match=0
используется по умолчанию, поэтому может быть опущен.
# Первое значение =ИНДЕКС(A1:A27, XПОИСКПОЗ(ИСТИНА, A1:A27<>"")) =СТРОКА(ИНДЕКС(A1:A27, XMATCH(ИСТИНА, A1:A27<>""))) //Возвращает строку №
XMATCH поддерживает поиск «от последнего к первому», указываяsearch_mode=-1
# Последнее значение =ИНДЕКС(A1:A27, XПОИСКПОЗ(ИСТИНА, A1:A27<>"",,-1)) =СТРОКА(ИНДЕКС(A1:A27, XMATCH(ИСТИНА, A1:A27<>"",,-1))) //Возвращает строку №