Новости:

Теперь на форум можно залогиниться / зарегистрироваться с помощью ВКонтакте. Уже существующие пользователи могут связать свою учетную запись с аккаунтом ВКонтакте одним кликом в профиле пользователя http://forum.msexcel.ru/index.php?action=profile;area=account

Главное меню

как формулой задать диапазон переменной длины?

Автор ali, 10.11.2013, 18:23

« назад - далее »

Poltava

Цитироватьс изменением содержимого ячеек необходимо менять формулу
Я не пойму вашей задачи! в начале было до первой пустой формула работает. Теперь я так понимаю условие от первой заполненной до первой пустой ПОСЛЕ первой заполненной. С таким условием формула будет выглядеть немного иначе=СУММ(ДВССЫЛ("A1:A"&ПОИСКПОЗ(1;--(ДВССЫЛ("A"&ПОИСКПОЗ(0;--(A1:A20="");0)&":A20")="");0)))
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

zs

Poltava, речь идёт о том, чтобы изменение содержимого ячеек не влияло на выполнение формулы. Последняя формула =СУММ(ДВССЫЛ("A1:A"&ПОИСКПОЗ(1;--(ДВССЫЛ("A"&ПОИСКПОЗ(0;--(A1:A20="");0)&":A20")="");0))) также не выполняет условие при изменении ячеек: при значении в А2 считает правильно, убираем значение -получается не то. - см. файл
С уважением, ZS(5)

cheshiki1

zs внимательней нужно быть. я давал ответ другому человеку (ник выделен жирным в ответе) с другой немного задачей.
П.С. Конечно нужно было его отправить создавать новую тему но уж пропустил так пропустил.

ali

Цитата: Poltava от 12.11.2013, 02:22
Цитировать...для каждой ячейки из A:A будет возвращен результат проверки на соответствие ="" и именно в этом получившимя масиве мы и ищем первое удовлетворяющее нашему условию значение то есть первую истину. Надеюсь понятно изложил.

Да, это понятно.
Но тогда вторая часть моего вопроса остаётся: почему =ПОИСКПОЗ("";A1:A9999;0) не работает?
Ведь тут пустая строка сравнивается с содержимым очередной ячейки, пока не произойдёт совпадение. Именно это действие проделывается в вашей формуле над элементами массива. Не пойму, в чём разница.

Poltava

zs Да поспешил с формулой :) проверяйте =СУММ(ДВССЫЛ("A1:A"&ПОИСКПОЗ(1;--(ДВССЫЛ("A"&ПОИСКПОЗ(0;--(A1:A20="");0)&":A20")="");0)+ПОИСКПОЗ(0;--(A1:A20="");0)-2))
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

zs

#20
Poltava, Respect. Однако, формула считает до первого нуля, предлагаемый вариант считает все интервалы до нуля, при этом изменение ячеек не влияет на вычисления. C уважением, ZS.
P.S. Эффектная формула не всегда эффективна.

Poltava

ЦитироватьЭффектная формула не всегда эффективна.
Да безусловно моя формула вычисляет только до первого 0 но ведь именно так и звучал исходный вопрос от ТС. Вы подошли к вопросу более глобально при этом понадобилось занять дополнительный столбец. Ваше решение безусловно имеет право на жизнь и более универсально, но тут палка о двух концах, зачем вам башенный кран на 1000 тон если вам нужно передвинуть груз весом в тону.
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

_Boroda_

#22
вариант без ДВССЫЛ (потому как не есть хорошо, сами знаете)
=СУММ(A1:ИНДЕКС(A1:A20;МИН(ЕСЛИ((A2:A21="")*ЕЧИСЛО(A1:A20);СТРОКА(A1:A20)))))
И, кстати, работает при заполнении всего диапазона (если пустых просто нет)
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

zs

 _Boroda_ , интересное решение тем, что в массиве считает до нуля, в векторном исполнении работает как Сумм() c общим итогом.
С уважением, ZS(5