Страницы: 1
RSS
Как определить адрес ближайшей ячейки в столбце с данными?
 
Пример
В столбце А случайным образом находятся числовые данные, либо при их отсутствии стоит ноль (т.е. данных нет).
В примере текущая ячейка А18 с числом 345, и ближайшая ячейка к ней с числовыми данными - А3 с числом 123, между ними данных нет, т.е. с А4 по А17 стоят нули.
Всегда расстояние между адресами с числовыми данными разное.

    А
1   0
2   0
3   123 - числовые данные (отличные от нуля)
4   0
...
17 0
18 345 - числовые данные (отличные от нуля)

Извиняюсь если вопрос покажется банальным, но мне почему-то не приходит в голову идея как это сделать формулами эксель.
Как формулами эксель определять адрес ячейки с числовыми данными ближайшей к текущей ячейки?
 
Т.е. нужно вывести адрес ближайшей ненулевой ячейки, например, в соседнем столбце? Что понимать под ближайшей ячейкой - ближайшая следующая по столбцу (т.е. которая находится ниже и ненулевая)? Хорошо бы, какой-нибудь менее абстрактный пример.
 
=MATCH(MIN(IFERROR(1/(1/ABS($A$1:$A$18-A18));FALSE));ABS($A$1:$A$18-A18);)
Если искать только то что выше, можно проще
=MATCH(MIN(ABS($A$1:$A$17-A18));ABS($A$1:$A$17-A18);)
Изменено: БМВ - 14.10.2019 22:07:49
По вопросам из тем форума, личку не читаю.
 
БМВ, благодарю за помощь. Именно то, что нужно, ато у меня уже фантазия закончилась.
 
БМВ, извиняюсь, но похоже не совсем то что нужно, я наверно неполно объяснил - полностью моя вина.

Я предполагаю что в итоге примерно так должно быть:

А18 - текущая ячейка с числовыми данными (отличными от нуля)
По одной ячейке вверх в столбик проверка.
А17 = 0 - неподходит, т.к. равна нулю (но если не была бы равна нулю, то по логике могла бы быть ближайшей ненулевой ячейкой)
А16 = 0 - неподходит, т.к. равна нулю
.......
А4 = 0 - неподходит, т.к. равна нулю
А3 = 123 - подходит, т.к. не равна нулю, т.е. это и есть первая ненулевая ячейка.

Столбец с данными постоянный  - А
Новые данные постоянно добавляются, т.е. текущая ячейка - это последняя на текущий момент ячейка в столбце.

Я так понимаю функция ПОИСКПОЗ ищет от строки с меньшим номером строки к большему (это не точно я могу ошибаться).

Также я не могу понять как задать аргумент "Просматриваемый_массив" функции ПОИСКПОЗ, т.к. количество ячеек между текущей и ближайшей ненулевой ячейкой всегда разное (в примере с А4 по А17). Т.е. минимальным оно может быть - по отношению к текущей ячейке предыдущей ячейкой, или несколько десятков или сотен ячеек.
Т.е. поиск ближайшей ненулевой ячейки от текущей ячейки по одной ячейке вверх в строну уменьшения строки (я так предполагаю)


Цитата
Andrej730 написал:
адрес ближайшей ненулевой ячейки, например, в соседнем столбце?
Да можно в соседнем столбце.

Цитата
Andrej730 написал:
Что понимать под ближайшей ячейкой - ближайшая следующая по столбцу (т.е. которая находится ниже и ненулевая)?
Ближайшая к текущей ячейке - это ближайшая ненулевая, которая находится выше (номер строки меньше)
 
еще вариант если понял, массивная
Код
=АДРЕС(НАИБОЛЬШИЙ(ЕСЛИ($A$1:$A$100<>0;СТРОКА($A$1:$A$100));2);1)
Лень двигатель прогресса, доказано!!!
 
=LOOKUP(2;1/($A$1:$A$17<>0);ROW($A$1:$A$17))
По вопросам из тем форума, личку не читаю.
 
Благодарю БМВ и Сергей  за ответы.
Использовал логику предложенную БМВ:
Цитата
БМВ написал:
=LOOKUP(2;1/($A$1:$A$17<>0);ROW($A$1:$A$17))
Она больше на мой взгляд подходит.
 
SamIndy, логика одинакова. Ищется последняя ячейка не равная нулю или ищется максимальный номер строки ячейки не равной нулю - что примерно одно и тоже.
По вопросам из тем форума, личку не читаю.
 
Согласен, оба варианта верные.
Страницы: 1
Наверх