powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сумма диапазона
88 сообщений из 88, показаны все 4 страниц
Сумма диапазона
    #34639889
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, пожайлуста, как в таблице Exel создать формулу которая суммирует диапазон ячеек.

=СУММ(B9:B34), но диапазон может быть и B9:B10, а так же и B9:B108, т.е. если ячейка пустая, то все, диапозан кончился.
...
Рейтинг: 0 / 0
Сумма диапазона
    #34639963
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tuandreevaПодскажите, пожайлуста, как в таблице Exel создать формулу которая суммирует диапазон ячеек.

=СУММ(B9:B34), но диапазон может быть и B9:B10, а так же и B9:B108, т.е. если ячейка пустая, то все, диапозан кончился.

B8=СУММ(Найти диапазон, где все ячейки заполнены и нет пустого значения)
...
Рейтинг: 0 / 0
Сумма диапазона
    #34640261
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну попомогите, великие гуру
...
Рейтинг: 0 / 0
Сумма диапазона
    #34640333
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tuandreevaНу попомогите, великие гуру
Если нужно складывать от ячейки B9 до первой встретившейся в этом столбце пустой ячейки, то так
=СУММ(B9:ИНДЕКС($B$9:$B$5000;СУММПРОИЗВ(ПОИСКПОЗ("";$B$9:$B$5000&"";0))-1))
...
Рейтинг: 0 / 0
Сумма диапазона
    #34640422
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad tuandreevaНу попомогите, великие гуру
Если нужно складывать от ячейки B9 до первой встретившейся в этом столбце пустой ячейки, то так
=СУММ(B9:ИНДЕКС($B$9:$B$5000;СУММПРОИЗВ(ПОИСКПОЗ("";$B$9:$B$5000&"";0))-1))


Небольшая оговорка:
Пустую строку нужно мскать в столбце А, а сумма в столбцах B,C,D
...
Рейтинг: 0 / 0
Сумма диапазона
    #34640629
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если в столбце [А]...

1) только числовые значения, то

=СУММ(B9:ИНДЕКС(B9:B10000;ПОИСКПОЗ(9E+307;$A9:$A10000)))

2) только текстовые значения, то

=СУММ(B9:ИНДЕКС(B9:B10000;ПОИСКПОЗ(ПОВТОР("z";255);$A9:$A10000)))

3) может быть, что угодно, то

=СУММ(B9:ИНДЕКС(B:B;МАКС(ЕСЛИ($A9:$A1000<>"";СТРОКА($A9:$A1000)))))
(формула массива - подтверждается одновременным нажатием CTRL+SHIFT+ENTER)

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сумма диапазона
    #34640761
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)если в столбце [А]...

1) только числовые значения, то

=СУММ(B9:ИНДЕКС(B9:B10000;ПОИСКПОЗ(9E+307;$A9:$A10000)))

2) только текстовые значения, то

=СУММ(B9:ИНДЕКС(B9:B10000;ПОИСКПОЗ(ПОВТОР("z";255);$A9:$A10000)))

3) может быть, что угодно, то

=СУММ(B9:ИНДЕКС(B:B;МАКС(ЕСЛИ($A9:$A1000<>"";СТРОКА($A9:$A1000)))))
(формула массива - подтверждается одновременным нажатием CTRL+SHIFT+ENTER)

KL
[MVP - Microsoft Excel]

Привет! Это ты говоришь про последнюю пустую строку! А я из условия понял что нужно первую пустую найти!
=СУММ(B9:ИНДЕКС($B$9:$B$5000;СУММПРОИЗВ(ПОИСКПОЗ("";$A$9:$A$5000&"";0))-1))
...
Рейтинг: 0 / 0
Сумма диапазона
    #34640820
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadПривет! Это ты говоришь про последнюю пустую строку! А я из условия понял что нужно первую пустую найти!
=СУММ(B9:ИНДЕКС($B$9:$B$5000;СУММПРОИЗВ(ПОИСКПОЗ("";$A$9:$A$5000&"";0))-1))

Привет. В таком случае след. модифицированная формула должна быть несколько быстрее твоего варианта:

=СУММ(B9:ИНДЕКС(B:B;МИН(ЕСЛИ($A9:$A1000="";СТРОКА($A9:$A1000)-1))))
(формула массива - подтверждается одновременным нажатием CTRL+SHIFT+ENTER)

или еще так:

=СУММ(B9:ИНДЕКС(B9:B10000;ПОИСКПОЗ(ИСТИНА;ЕПУСТО(A9:A10000);0)-1))
(формула массива - подтверждается одновременным нажатием CTRL+SHIFT+ENTER)

или так:

=СУММ(B9:ИНДЕКС(B9:B10000;ПОИСКПОЗ(ИСТИНА;A9:A10000="";0)-1))
(формула массива - подтверждается одновременным нажатием CTRL+SHIFT+ENTER)
...
Рейтинг: 0 / 0
Сумма диапазона
    #34640826
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а можно ли как-нибудь циклом For... Next обрабатывать столбец, так как неизвестно сколько строк будет в таблице (500 или 10000)?
...
Рейтинг: 0 / 0
Сумма диапазона
    #34640874
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tuandreevaа можно ли как-нибудь циклом For... Next обрабатывать столбец, так как неизвестно сколько строк будет в таблице (500 или 10000)?
1)Тебе уже несколько вариантов предложили
2)Это по сути и есть цикл, только не прерывается, а весь просматривается
3)For... Next, в формуле эксель поставить нельзя только в макросе, но это однозначно медленнее
4)Так поставь побольше строк или это критично?
...
Рейтинг: 0 / 0
Сумма диапазона
    #34640903
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) если тебе нужно через VBA, дык ты предупреждай заранее :-(
2) все приведенные формулы основаны на том, что ты сразу используешь диапазон, который никогда не будет заполнен до конца. Отсюда и B9:B10000 в моих примерах. Если данных может быть еще больше, то используй B9:B65535, но при таком кол-ве строк пересчет будет занимать значительное время (особенно с формулой предложенной Deggasad :P).

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сумма диапазона
    #34640914
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad tuandreevaа можно ли как-нибудь циклом For... Next обрабатывать столбец, так как неизвестно сколько строк будет в таблице (500 или 10000)?
1)Тебе уже несколько вариантов предложили
2)Это по сути и есть цикл, только не прерывается, а весь просматривается
3)For... Next, в формуле эксель поставить нельзя только в макросе, но это однозначно медленнее
4)Так поставь побольше строк или это критично?

За все примеры спасибо, все работает, но хотелось бы в VBA
...
Рейтинг: 0 / 0
Сумма диапазона
    #34640976
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tuandreevaЗа все примеры спасибо, все работает, но хотелось бы в VBA

Код: plaintext
1.
2.
3.
4.
Sub test()
    With ActiveSheet
        MsgBox Application.Sum(.Range(.[A9], .[A9].End(xlDown)).Offset(,  1 ))
    End With
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сумма диапазона
    #34641003
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL) tuandreevaЗа все примеры спасибо, все работает, но хотелось бы в VBA

Код: plaintext
1.
2.
3.
4.
Sub test()
    With ActiveSheet
        MsgBox Application.Sum(.Range(.[A9], .[A9].End(xlDown)).Offset(,  1 ))
    End With
End Sub

KL
[MVP - Microsoft Excel]

Вот спасибо!!!!!!!
...
Рейтинг: 0 / 0
Сумма диапазона
    #34641015
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)особенно с формулой предложенной Deggasad :P).

KL
[MVP - Microsoft Excel]

:-)


тут бурные авации
...
Рейтинг: 0 / 0
Сумма диапазона
    #34641041
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не получается, в столбце если в 1 ячейке не цифры, то сумма не получается, а как же быть с проверяемым столбцом А
...
Рейтинг: 0 / 0
Сумма диапазона
    #34642107
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tuandreevaне получается, в столбце если в 1 ячейке не цифры, то сумма не получается, а как же быть с проверяемым столбцом А

Можно поподробнее в чем проблема?

См пример.
...
Рейтинг: 0 / 0
Сумма диапазона
    #34642147
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad KL (XL)особенно с формулой предложенной Deggasad :P).

KL
[MVP - Microsoft Excel]

:-)


тут бурные авации

Это не наезд :-) Конкатенация - штука до противного медленная :-)

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сумма диапазона
    #34642165
temp765
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А просто =СУММ(B:B) не устроит?
Просуммирует все числовые ячейки в столбце
...
Рейтинг: 0 / 0
Сумма диапазона
    #34642239
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)[MVP - Microsoft Excel]


Это не наезд :-) Конкатенация - штука до противного медленная :-)

KL
[MVP - Microsoft Excel][/quot]

Да яж ничё и не говорю. Наоборот рад поучиться лишний раз! Спасибо!
А что такое конкатенация? Я конечно догадываюсь, но всё-таки...
...
Рейтинг: 0 / 0
Сумма диапазона
    #34642350
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadА что такое конкатенация? Я конечно догадываюсь, но всё-таки...

Это по-эмигрантски: СЦЕПЛЕНИЕ ТЕКСТА :-)))

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сумма диапазона
    #34642465
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, все предложения некрасивы. Простите, если обидел.
А красиво работать с диапазонами , как с таблицами базы данных.
Работать всегда нужно с именованными диапазонами, которые будут являться аналогами таблиц базы Excel.
Для этого нужно написать программульку, которая отслеживает изменение размеров именнованых диапазонов и всегда держит необходимые области именнованными.
При таком подходе можно обрабатывать эти именованые диапазоны как таблицы, с помощью Jet SQL, связывать их др с другом , удалять/добавлять в них (как посредством JetSQL , так и непосредственно на листе юзером) записи etc.
Я давно использую именно такой подход, В итоге имею все преимущество реляционной СУБД при работе с Excel'ским листом.
...
Рейтинг: 0 / 0
Сумма диапазона
    #34642531
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yunikiВообще, все предложения некрасивы. Простите, если обидел.
А красиво работать с диапазонами , как с таблицами базы данных.
Работать всегда нужно с именованными диапазонами, которые будут являться аналогами таблиц базы Excel.
Для этого нужно написать программульку, которая отслеживает изменение размеров именнованых диапазонов и всегда держит необходимые области именнованными.
При таком подходе можно обрабатывать эти именованые диапазоны как таблицы, с помощью Jet SQL, связывать их др с другом , удалять/добавлять в них (как посредством JetSQL , так и непосредственно на листе юзером) записи etc.
Я давно использую именно такой подход, В итоге имею все преимущество реляционной СУБД при работе с Excel'ским листом.

Тут бы стоило вообще ничего не отвечать, но не выдержал. Откуда ты взялся?
Не путай х... с пальцем Если тебе близки Access и SQL Server - это ещё не значит что Exel под них подстраивать нужно. Это самостоятельная программа. Тем болеее первый вопрос автора дословно звучал так
tuandreeva Подскажите, пожайлуста, как в таблице Exel создать формулу которая суммирует диапазон ячеек.
=СУММ(B9:B34), но диапазон может быть и B9:B10, а так же и B9:B108, т.е. если ячейка пустая, то все, диапозан кончился.
Отсюда и соответствующие предложения. Именно как в таблице Exel создать формулу .
А твоё yunikiРаботать всегда нужно с именованными диапазонами, которые будут являться аналогами таблиц базы Excel.
Это просто без слов... К чему ты с этим влез.

Тут ещё много <Bakspace>-ов...
...
Рейтинг: 0 / 0
Сумма диапазона
    #34642536
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя я ничего против именованных диапазонов не имею и активно их использую, особенно динамические. Просто не понятно с чего такие утверждения...
...
Рейтинг: 0 / 0
Сумма диапазона
    #34642573
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadХотя я ничего против именованных диапазонов не имею и активно их использую, особенно динамические. Просто не понятно с чего такие утверждения...
Что непонятно, так это то, с чего так кипятиться. Я что , как-то лично за что-то задел, что надо растопыривать всякие пальцы ?

Но понятно становится, если смотреть на суть . А проблема действительно имеется, и исходный вопрос всего лишь одно из многочисленных ее проявлений - У Excel много чего не достает для удобной работы , и мое решение практически полностью устраняет эту проблему.
...
Рейтинг: 0 / 0
Сумма диапазона
    #34642713
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuniki DeggasadХотя я ничего против именованных диапазонов не имею и активно их использую, особенно динамические. Просто не понятно с чего такие утверждения...
Что непонятно, так это то, с чего так кипятиться. Я что , как-то лично за что-то задел, что надо растопыривать всякие пальцы ?

Но понятно становится, если смотреть на суть . А проблема действительно имеется, и исходный вопрос всего лишь одно из многочисленных ее проявлений - У Excel много чего не достает для удобной работы , и мое решение практически полностью устраняет эту проблему.


Извините, действительно погорячился, спишим на мою юность.
Вы просто не предлагаете своё решение, а утверждаете, что оно единственно верное, а это уже ...
...
Рейтинг: 0 / 0
Сумма диапазона
    #34643033
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad Извините, действительно погорячился, спишим на мою юность.
Вы просто не предлагаете своё решение, а утверждаете, что оно единственно верное, а это уже ...
Ну и молодец, что извинился. SQL.ru за годы не меняется.
А решение заключается в идее, которая изложена выше.Главное это. У меня-то просто имеется целая VB библиотека с реализацией ее и кучи всего другого, которую я использую, а прелагать ее сюда не имеет смысла, Поэтому предлагаю только одну из идей этой библиотеки.
...
Рейтинг: 0 / 0
Сумма диапазона
    #34643376
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuniki Deggasad Извините, действительно погорячился, спишим на мою юность.
Вы просто не предлагаете своё решение, а утверждаете, что оно единственно верное, а это уже ...
Ну и молодец, что извинился. SQL.ru за годы не меняется.
А решение заключается в идее, которая изложена выше.Главное это. У меня-то просто имеется целая VB библиотека с реализацией ее и кучи всего другого, которую я использую, а прелагать ее сюда не имеет смысла, Поэтому предлагаю только одну из идей этой библиотеки.

ну а если для примера выложить какое-нибуть удачное применение, только чур в Exele, тогда можно будет поговорить предметнее. И я смогу вызказать своё мнение! И другие!
...
Рейтинг: 0 / 0
Сумма диапазона
    #34644084
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad
ну а если для примера выложить какое-нибуть удачное применение, только чур в Exele, тогда можно будет поговорить предметнее. И я смогу вызказать своё мнение! И другие!

Дело в том, что это дело у меня не очень готово для публичного обозрения, - только описание интерфейсов вызовов есть,
Ну вот ,если не лень качать 5 кусков по 100Kb, то пожалуйста.
Обращу внимание, кроме очевидного из Книги1.xls использования , что один и тот же диапазон и его поддиапазоны , можно интерпретировать и поддерживать под разными именами.


ЗЫ . Не забудь перед открытием Книга1 зарегить DDL' ку как описано в info.txt
...
Рейтинг: 0 / 0
Сумма диапазона
    #34644090
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и 2-й кусок
...
Рейтинг: 0 / 0
Сумма диапазона
    #34644093
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и 3-й кусок
...
Рейтинг: 0 / 0
Сумма диапазона
    #34644098
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и 4-й кусок
...
Рейтинг: 0 / 0
Сумма диапазона
    #34644101
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и 5-й последний
...
Рейтинг: 0 / 0
Сумма диапазона
    #34644299
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничё не понял. Какой мне от этого прок!
Наверное мне ещё рано...
...
Рейтинг: 0 / 0
Сумма диапазона
    #34644352
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что ты должен такого особенного понять ?

Просто запускай Книга1.xls (только прежде зарегистрируй DLL'ку see info.txx ) и смотри как считается сумма в ячейке E4 из столбца Поле2, который разумеется м.б. произвольной длины - любой что вручную наколотим ему.

Ps . Надо еще упомянуть , что такие именованные таблицы могут быть разорванными - т.е. сосотоять из нескольких несвязанных Range, что тоже может оказываться оплезным.
...
Рейтинг: 0 / 0
Сумма диапазона
    #34644699
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yunikiТак что ты должен такого особенного понять ?Идею. Он должен был понять почему твоя идея лучше чем его. Пока ты даже меня не убедил что твоя идея имеет хоть какие-то плюсы.

yunikiПросто запускай Книга1.xls (только прежде зарегистрируй DLL'ку see info.txx )Круто. Регестрировать специальную длл для редко нужных расчетов в Excel? Ты стреляешь из пушки по воробьям. Если человек способен использовать сторонюю dll ему уже не нужно использовать Excel для больших расчетов.
...
Рейтинг: 0 / 0
Сумма диапазона
    #34644703
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yunikiТак что ты должен такого особенного понять ?

Просто запускай Книга1.xls (только прежде зарегистрируй DLL'ку see info.txx ) и смотри как считается сумма в ячейке E4 из столбца Поле2, который разумеется м.б. произвольной длины - любой что вручную наколотим ему.

Ps . Надо еще упомянуть , что такие именованные таблицы могут быть разорванными - т.е. сосотоять из нескольких несвязанных Range, что тоже может оказываться оплезным.

В примере Диапазон Поле2 Как раз таки постоянный и нифига наколачивать не получается. А чтобы сделать Динамический диапазон и посчитать сумму по нему совсей не нужно (можно сказать никому не советую) устанавливать никаких библиотек и писать макросы. Так вот я и думаю зачем всё это:
1) Толи я не понимаю
2) Толи кто-то штаны через голову одевает (только без обид - скорее всего вариант 1)

Именованный диапазон Вставка - Имя -Присвоить - Формула: (для текстовых данных)
=ИсхДляГраф!$G$3:ИНДЕКС(ИсхДляГраф!$G$3:$G$30;ПОИСКПОЗ("яяяяя";ИсхДляГраф!$G$3:$G$30))
Всего-то делов или как?
...
Рейтинг: 0 / 0
Сумма диапазона
    #34644894
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)
Привет. В таком случае след. модифицированная формула должна быть несколько быстрее твоего варианта:

=СУММ(B9:ИНДЕКС(B:B;МИН(ЕСЛИ($A9:$A1000="";СТРОКА($A9:$A1000)-1))))
(формула массива - подтверждается одновременным нажатием CTRL+SHIFT+ENTER)

или еще так:

=СУММ(B9:ИНДЕКС(B9:B10000;ПОИСКПОЗ(ИСТИНА;ЕПУСТО(A9:A10000);0)-1))
(формула массива - подтверждается одновременным нажатием CTRL+SHIFT+ENTER)

или так:

=СУММ(B9:ИНДЕКС(B9:B10000;ПОИСКПОЗ(ИСТИНА;A9:A10000="";0)-1))
(формула массива - подтверждается одновременным нажатием CTRL+SHIFT+ENTER)

2 KL (XL)

Как считаешь удачная ли эта формула для нахождения первого больше нуля знаяения???

=СУММПРОИЗВ(ПОИСКПОЗ(ИСТИНА;J4:O4>0;0))
...
Рейтинг: 0 / 0
Сумма диапазона
    #34644998
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Круто. Регестрировать специальную длл для редко нужных расчетов в Excel? Ты стреляешь из пушки по воробьям.
А причем тут "Регестрировать специальную длл " ? Это просто проблема распространения.
А то, что стреляю "из пушки" - так именно так, только не по воробьям - зачем обижать воробьев ?. Эта DLL не предназначена для воробьев. Она весьма универсальна, я ее использую во всех приложениях. Она вообще у нас стоит на сервере в одном месте, откуда и подцеплена юзеревскими рабочими станциями. И любой может легко использовать любые ее функции. От суммы прописью для Euro,$,руб или ФИО в род падеже до создания развитых отчетов в WORD,Excel, цепляющих и объединяющих данные из ЛЮБЫХ источников , причем в последнем случае пользолвателю не нужно программировать, если не считать програмированием запись SQL кода (SELECT,INSERT,UPDATE,DELETE) .

White Owl
Если человек способен использовать сторонюю dll ему уже не нужно использовать Excel для больших расчетов.

Так dll способен использвать любой 3 классник - так из этого еще не следует, что уже не нужно использовать Excel . Чего там использовать - установил ( regsvr32 путькDLLфайлу ) и используй ее функции в VBA. Разумеется пару строчек кода нужно знать как написать. Вообще речь не идет о том , чтоб вообще избавиться от VBA. Хотя в большинстве случаев в этой библиортеке именно это и возможно - только знай как ее установить.
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645023
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad
В примере Диапазон Поле2 Как раз таки постоянный и нифига наколачивать не получается. А чтобы сделать Динамический диапазон и посчитать сумму по нему совсей не нужно (можно сказать никому не советую) устанавливать никаких библиотек и писать макросы.
Ты DLL зарегистрировал-ли ?
Если да , то дожен увидеть , как этот "постоянный диапазон" превращается в переменный только добавлять строчки следует непрерывно одну под другой (для того и описаны интерфейсы вызовов функций DLL"ки)
А насчет писания макросов, так две строки VBA кода вряд ли можно назвать макросом.
Если ты вообще в VBA не программируешь, то вряд ли должен решаться на такие советы. Я знал многих людей, никак не связанных с программированием (экономистов) , которые по своему по рабоче-крестьянско-экономистки писали разные нужные им программульки на VBA при этом даже получая удовольствие, Поэтому, вряд ли стоит такое советовать.

И потом, как же ты прежде упомянул, что используешь динамические именованные диапазоны без VBA - непонятно.

PS. ALT-F11 - и все сразу прояснится любому крестьянину.
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645057
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuniki Deggasad
В примере Диапазон Поле2 Как раз таки постоянный и нифига наколачивать не получается. А чтобы сделать Динамический диапазон и посчитать сумму по нему совсей не нужно (можно сказать никому не советую) устанавливать никаких библиотек и писать макросы.
Ты DLL зарегистрировал-ли ?
Если да , то дожен увидеть , как этот "постоянный диапазон" превращается в переменный только добавлять строчки следует непрерывно одну под другой (для того и описаны интерфейсы вызовов функций DLL"ки)
А насчет писания макросов, так две строки VBA кода вряд ли можно назвать макросом.
Если ты вообще в VBA не программируешь, то вряд ли должен решаться на такие советы. Я знал многих людей, никак не связанных с программированием (экономистов) , которые по своему по рабоче-крестьянско-экономистки писали разные нужные им программульки на VBA при этом даже получая удовольствие, Поэтому, вряд ли стоит такое советовать.

И потом, как же ты прежде упомянул, что используешь динамические именованные диапазоны без VBA - непонятно.

PS. ALT-F11 - и все сразу прояснится любому крестьянину.

Можно посмотреть некоторые из моих топиков и понять, что я как раз и отношушь к тому разряду экономистов, которые по вечерам любят упрошать себе и тругим жизнь путём написания небольших макросов! И очень часто это доставляет удовольствие - согласен.
Я понимаю, что вы програмист и в этом понимаете больше меня, но только вы своими DDl как раз и отобъёте охоту у обычных экономистов задуматься лишний раз о том насколько это просто сделать в Экселе (выше я уже указал как это делается). Макросы я бы использовал только на стадии добавления именованных диапазонов, чтобы руками каждый не добавлять, а все столбцы сразу обозвать. А потом они уже сами смотрят где у них последняя строка.
И сумму прописью без макросов тремя разными способами можно сделать и кстате этот вариант более приемлем для шаблонов документов, т.к. неизвестно кто и где его будет заполнять!!!
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645080
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuniki White Owl
Круто. Регестрировать специальную длл для редко нужных расчетов в Excel? Ты стреляешь из пушки по воробьям.
А причем тут "Регестрировать специальную длл " ? Это просто проблема распространения.Вот именно что проблема распространения. Пойми, с Экселем работают в первую очередь люди очень далекие от каких-либо вопрос "распространения". Вот написать в листе сложную формулу - это понятно, а копировать кроме одного xls файла еще и какую-то dll, потом запускать командную строку и писать там страшную и совершенно незапоминаемую команду regsvr32 something.dll... это уже намного выше чем доступно простому юзеру. Даже если этот юзер очень опытен в самом Экселе.

yunikiА то, что стреляю "из пушки" - так именно так, только не по воробьям - зачем обижать воробьев ?. Эта DLL не предназначена для воробьев. Она весьма универсальна, я ее использую во всех приложениях. Она вообще у нас стоит на сервере в одном месте, откуда и подцеплена юзеревскими рабочими станциями. И любой может легко использовать любые ее функции. От суммы прописью для Euro,$,руб или ФИО в род падеже до создания развитых отчетов в WORD,Excel, цепляющих и объединяющих данные из ЛЮБЫХ источников , причем в последнем случае пользолвателю не нужно программировать, если не считать програмированием запись SQL кода (SELECT,INSERT,UPDATE,DELETE) .Мдя... Ну вообще-то, я бы тебе посоветовал почитать учебники на тему что такое dll и что такое com-server, ты их явно не различаешь. Но судя по вопросу считать ли запись SQL код программированием или не считать, мои советы не помогут...


yuniki White Owl
Если человек способен использовать сторонюю dll ему уже не нужно использовать Excel для больших расчетов. Так dll способен использвать любой 3 классник - так из этого еще не следует, что уже не нужно использовать Excel . Чего там использовать - установил ( regsvr32 путькDLLфайлу ) и используй ее функции в VBA. Разумеется пару строчек кода нужно знать как написать. Вообще речь не идет о том , чтоб вообще избавиться от VBA. Хотя в большинстве случаев в этой библиортеке именно это и возможно - только знай как ее установить.Приходи ко мне в гости, я тебя посажу на телефон и ты будешь объяснять нашим юзерам как это все делать. Только учти что они (юзера) частенько спрашивают надо ли писать знак равенства в формуле или не надо.
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645147
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlВот именно что проблема распространения.
Короче ты мог бы обойтись одной этой фразой.

Ты как-то не видишь того, что я говорю - и зачем-то, предпочитая поддеть меня на том, во что сам не вник , отсылаешь меня к учебникам по вопросу, который яйца выеденного не стоит.

Могу просто по другому повторить то же самое :
- Проблему распростарнения - не проблема. Она решается привлечением инсталлятора если требуется распространение. Просто у нас этого нет, но можно сделать. Нам этого не надо - все делается автоматически, централизованно - админ в нашей LAN этим занимается без всяких хлопот причем. Я вообще не собираюсь распротсранять эту библиотеку.
- Юзеры разные , и я упомянул о тех , которые понимают что к чему.
- Почему вообще ты решил , что нужно без программирования - непонятно ?
- Ты как-то не обращаешь внимания - для чего весь это Excel придумывался. А между тем 99% юзеров его используют для создания отчетов из различных СУБД и их анализа. Причем , не те консольные операторы, которые кроме нибивания своих накладных ничего не знают, а пользователи среднего звена, которые как правило имеют высшее образование.
А вы все свели просто к тому - как взять и посчитать сумму диапазона - какой смысл в этом вопросе, если он оторван от реальности ? а если смотреть на реальность , то получается то, что и высказал уже выше.
Дело в подходе : Я считаю, что если есть удобный и полезный интструментарий, то его нужно установить и использовать по полной. Если ты считаешь, что не нужно использовать удобный инструмент, то это твой подход, вот и все.
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645150
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuniki
Причем , не те консольные операторы, которые кроме нибивания своих накладных ничего не знают, а пользователи среднего звена, которые как правило имеют высшее образование.

А вы все свели просто к тому - как взять и посчитать сумму диапазона - какой смысл в этом вопросе, если он оторван от реальности ? а если смотреть на реальность , то получается то, что и высказал уже выше.

Дело в подходе : Я считаю, что если есть удобный и полезный интструментарий, то его нужно установить и использовать по полной. Если ты считаешь, что не нужно использовать удобный инструмент, то это твой подход, вот и все.
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645159
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причем , не те консольные операторы, которые кроме нибивания своих накладных ничего не знают, а пользователи среднего звена, которые как правило имеют высшее образование.

Дело в подходе : Я считаю, что если есть удобный и полезный интструментарий, то его нужно установить и использовать по полной. Если ты считаешь, что не нужно
Если я такой инструментарий дам кому нибуть у себя на работе, особенно босу с тремя его высшими образованиями и любовью к различным ERP, он меня всё-же повет. Юзерам, как вы нас там называете, нужны либо законченные вещи чтобы только на кнопочки жать (с определённым функцианалом, обеспечивающим право на жизнь), либо если в дебри лезть, то чтобы всё просто и понятно, с азов так сказать, чтобы можно было поиграться и что-то понять и остаться довольным от понятого!


А вы все свели просто к тому - как взять и посчитать сумму диапазона - какой смысл в этом вопросе, если он оторван от реальности ? а если смотреть на реальность , то получается то, что и высказал уже выше.

Нифига не оторвана от реальности. Как ни странно сижу сейчас этим как раз занимаюсь, только не просто ссумировать диапазоны, а с кучей условий, и чтобы удобно было сделал себе 30 динамических диапазонов, от 4 и до последней строки автоматом отслеживается. Потом сделал несколько списков на которые ссылаются условия ссумирования. И на основании полученных данных таблички, графики и всё такое. Завтра понесу шефу и пусть играется списками, анализирует, только исходныю инфу подливай и всё. И это можно кому угодно дать и без всяких макросов. Даже в ОО работает. Хотя мне бы самому на VBA проще было, но зачем всё итак просто смак!
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645230
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Deggasad >
НУ вроде все объяснил уже, поэтому не хотите - выбросьте эту библиотеку в окно. Мне в общем-то достаточно того , как это используется у нас.

А вот насчет :
Deggasad сделал себе 30 динамических диапазонов, от 4 и до последней строки автоматом отслеживается.
Вот только никак не могу понять - как сделал-то ? :
Динамический именованный диапазон для меня - это когда юзер добавляет/удаляет ему вручную новые строки, а именованный Range автоматически при этом увеличивается/уменьшается. Это что можно как-то без макроса сделать ? Мне казалось, что у меня это сделано максимально просто - имеется, конечно, макрос - по одной строке на один диапазон . Могу написать такой , что будет одна строка на все отслеживаемые диапазоны.

PS. Да, Может и можно , конечно, без макроса и я отстал не знаю новых версий(а может и старых;), т.к. использую в основном Excel2K (У нас-то стоят от 2K до 2003, поэтому и приходится под 2K писать, Да и в общем-то в 2K что хочется все можно, что и в более новых версиях. )
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645311
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuniki2 Deggasad >
НУ вроде все объяснил уже, поэтому не хотите - выбросьте эту библиотеку в окно. Мне в общем-то достаточно того , как это используется у нас.

А вот насчет :
Deggasad сделал себе 30 динамических диапазонов, от 4 и до последней строки автоматом отслеживается.
Вот только никак не могу понять - как сделал-то ? :
Динамический именованный диапазон для меня - это когда юзер добавляет/удаляет ему вручную новые строки, а именованный Range автоматически при этом увеличивается/уменьшается. Это что можно как-то без макроса сделать ? Мне казалось, что у меня это сделано максимально просто - имеется, конечно, макрос - по одной строке на один диапазон . Могу написать такой , что будет одна строка на все отслеживаемые диапазоны.

PS. Да, Может и можно , конечно, без макроса и я отстал не знаю новых версий(а может и старых;), т.к. использую в основном Excel2K (У нас-то стоят от 2K до 2003, поэтому и приходится под 2K писать, Да и в общем-то в 2K что хочется все можно, что и в более новых версиях. )

Да мне тоже по большому счёту всё-равно. Просто мне ваш подход напоминает знаете что - привязать к себе пользователей чтобы они думали, что это ой какая сложная штука и даже не пытались в этом разобраться, а каждый бы раз звали бородатого дядьку, который бы им в очередной раз говорил "Ну что же вы за бараны, ни фига без меня сделать не можете... Тут же блин через SQL всё делается..." Я лично не знаю что такое SQL... Соот ветсвенно дома они вообще не могут такие фишки делать, если только бородатый дядька не даст им чудо библиотеку.

Может быть опять погорячился - может.
Но скорее всего вы классный програмист, а на Exel у вас просто нет времени.

Динамический диапазон Exel - меню Вставка - Имя -Присвоить - Формула:
=Лист1!$A$4:ИНДЕКС(Лист1!$A$4:$A$65536;ПОИСКПОЗ("яяяяя";Лист!$A$3:$A$65536))
После написания формулы жмём ОК. И используем диапазон в своё удовольствие.
Этот пример работает для столбца с текстом, можно написать для цифр или и для того и для того. Можно с кучей условий диапазоны делать, т.е. не все данные, а выборочно.
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645415
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad
Может быть опять ...
1) Вы не запустили, по всей видимости (почему-то), мой пример и на этом основании делаете суждения , т.е. получаются суждения о том , чего Вы не попробовали.

Deggasad
Динамический диапазон Exel - меню Вставка - Имя -Присвоить - Формула:
=Лист1!$A$4:ИНДЕКС(Лист1!$A$4:$A$65536;ПОИСКПОЗ("яяяяя";Лист!$A$3:$A$65536))
После написания формулы жмём ОК. И используем диапазон в своё удовольствие.

2) А вот здесь я не могу разобраться - Делаю все по Вашей инструкции - пытаюсь добавить имя в меню "Вставка - Имя -Присвоить" диапазону - не появляется имя диапазона в окошке Именованных диапазонов (Excel2K,2003 - без разницы). У Вас вообще диапазон именуется или нет ?

Но как-бы то ни было, что проще - использовать Вашу формулу
=Лист1!$A$4:ИНДЕКС(Лист1!$A$4:$A$65536;ПОИСКПОЗ("яяяяя";Лист!$A$3:$A$65536))
или мою
=СУММ(Поле2)
?
Почувствуйте разницу
- У Вас задействован в обработке Весь А столбец, в формуле чтобы разобраться надо потрудиться - читать справку в несколько листов по функциям ПОИСКПОЗ, ИНДЕКС. САм диапазон жестко(здесь м.б.возражения, но ,просто,долго объяснять), в отличие от моего , привязан к указанным ячейкам. Короче - как я сказал выше - некрасиво все это.

В моей формуле все ясно даже интуитивно - суммируются значения столбца Поле2, котрый является именованным диапазоном, который динамически изменяет свои размеры(для поддержки чего и устанавливается дополнение к Office - DLL'ка) задействованы в обработке только его ячейки, а не весь столбец A.
И Причем тут SQL? про него я упомянул, когда говорил о возможностях библиотеки , это не значит , что он здесь необходим.

Так в чем проблема ?
Добавить аддон (DLL'ку) к офису ? Так надо понимать, что если хотите красиво и эффективно работать, то для этого нужно программное обеспечение ПО. (Так , если бы Вы захотели работать с Excel и при этом не устанавливать Excel, то Ваше желание было бы несколько странно)
Знаете , на заре распространения PC, директора считали, что достаточно купить компьютры, а они уже сами будут решать их задачи, потом оказалось, - ан нет, нужно еще ПО покупать, да еще и разбираться - какое именно ПО.
А впрочем, - почему "на заре", где-то до сих пор такое мнение живет, Только сейчас PC неразрывно связывается с установленным на нем Windows и Office, а , разумеется, все вне этого - уже считается за гранью человеческого понимания.
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645450
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad KL (XL)
Привет. В таком случае след. модифицированная формула должна быть несколько быстрее твоего варианта:

=СУММ(B9:ИНДЕКС(B:B;МИН(ЕСЛИ($A9:$A1000="";СТРОКА($A9:$A1000)-1))))
(формула массива - подтверждается одновременным нажатием CTRL+SHIFT+ENTER)

или еще так:

=СУММ(B9:ИНДЕКС(B9:B10000;ПОИСКПОЗ(ИСТИНА;ЕПУСТО(A9:A10000);0)-1))
(формула массива - подтверждается одновременным нажатием CTRL+SHIFT+ENTER)

или так:

=СУММ(B9:ИНДЕКС(B9:B10000;ПОИСКПОЗ(ИСТИНА;A9:A10000="";0)-1))
(формула массива - подтверждается одновременным нажатием CTRL+SHIFT+ENTER)

2 KL (XL)

Как считаешь удачная ли эта формула для нахождения первого больше нуля знаяения???

=СУММПРОИЗВ(ПОИСКПОЗ(ИСТИНА;J4:O4>0;0))

Пожалуй, другое мне на ум не приходит :-)

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645495
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuniki2) А вот здесь я не могу разобраться - Делаю все по Вашей инструкции - пытаюсь добавить имя в меню "Вставка - Имя -Присвоить" диапазону - не появляется имя диапазона в окошке Именованных диапазонов (Excel2K,2003 - без разницы). У Вас вообще диапазон именуется или нет ?
Ничего, ничего! Это случается когда человек начинает спор о том, что лучше VB или Excel, не имея представления о том, что из себя представляет последний :-)

а) То что вы называете именованным диапазоном, на самом деле является частным случаем именованной формулы .

=A1:A100
={"a":"b":"c"}
={1;2;3}
=$A$4:ИНДЕКС($A$4:$A$65536;ПОИСКПОЗ("яяяяя";$A$3:$A$65536))
и т.д. и т.п. и пр.

б) Имя диапазона в окошке Именованных диапазонов появляется только в случае если именованная формула содержит исключительно ссылку на диапазон. Это вовсе не означает, что имя, не отображаемое в списке Имен, не существует или не может быть использовано. Кстати, для справки именованная формула предложенная Degassad видна из-под меню Вставка-Имя-Присвоить, но можно сделать совсем невидимое имя с помощью проперти Visible.

То, что именованные формулы это нужный и мощный инструмент - неоспоримый факт. Сие относится и к VB и даже к VBA и тут совершенно нет необходимости обращать Папу Римского в католицизм. То что ты пишешь напоминает позицию человека, который однажды утром, проснувшись, понял, что единственное, что помогает от всех болезней - это Аспирин. Ура, товарищи!!!

yunikiНо как-бы то ни было, что проще - использовать Вашу формулу
=Лист1!$A$4:ИНДЕКС(Лист1!$A$4:$A$65536;ПОИСКПОЗ("яяяяя";Лист!$A$3:$A$65536))
или мою
=СУММ(Поле2)
?
Почувствуйте разницу


Шельмуешь, айяяяй!
=СУММ(Поле2) надо сравнивать с =СУММ(Поле2) , где Поле2 содержит именованную формулу, а вот =$A$4:ИНДЕКС($A$4:$A$65536;ПОИСКПОЗ("яяяяя";$A$3:$A$65536)) сравни с кодом в твоей DLL ;-)

yuniki- У Вас задействован в обработке Весь А столбец, в формуле чтобы разобраться надо потрудиться - читать справку в несколько листов по функциям ПОИСКПОЗ, ИНДЕКС. САм диапазон жестко(здесь м.б.возражения, но ,просто,долго объяснять), в отличие от моего , привязан к указанным ячейкам. Короче - как я сказал выше - некрасиво все это.

Это опять-таки от незнания:
а) читать справку по функциям ПОИСКПОЗ, ИНДЕКС тоже, как видно, не всем помогает, но ведь, чтобы установить DLL или пуще того редактировать код в ней, что-нибудь, но прочесть придется ;-)
б) жесткая привязка убирается как минимум с пом. относительных ссылок, но можно и параметры передавать: http://www.jkp-ads.com/Articles/ExcelNames09.htm


yunikiВ моей формуле все ясно даже интуитивно - суммируются значения столбца Поле2, котрый является именованным диапазоном, который динамически изменяет свои размеры(для поддержки чего и устанавливается дополнение к Office - DLL'ка) задействованы в обработке только его ячейки, а не весь столбец A.

Этот аргумент построен на ложной предпосылке - читай выше.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645518
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yunikiТак в чем проблема ?
Добавить аддон (DLL'ку) к офису ? Так надо понимать, что если хотите красиво и эффективно работать, то для этого нужно программное обеспечение ПО. (Так , если бы Вы захотели работать с Excel и при этом не устанавливать Excel, то Ваше желание было бы несколько странно)
Знаете , на заре распространения PC, директора считали, что достаточно купить компьютры, а они уже сами будут решать их задачи, потом оказалось, - ан нет, нужно еще ПО покупать, да еще и разбираться - какое именно ПО.
А впрочем, - почему "на заре", где-то до сих пор такое мнение живет, Только сейчас PC неразрывно связывается с установленным на нем Windows и Office, а , разумеется, все вне этого - уже считается за гранью человеческого понимания.
Красноречиво, черт побери! У меня аж слезы наворачиваются. Я уже вижу, как ты рассылаешь свое произведение (читай книгу Excel + отдельно DLL c инструкциями) в другие подразделения компании, поставщикам, клиентам, друзьям, начальнику [желающему открыть твой файл почему-то не в офисе]; и все они, дружно, преодолевая свое незнание, политики безопасности, проблемы совместимости версий, отсутствие администраторских прав, времени и желания, устанавливают твое "универсальное решение", чтобы получить доступ к динамическим диапазонам. Вот поистине "красивое" решение! Или все ранее перечисленное не входило в твои планы?

Мимоходом, мы еще не затрагивали вопрос скорости пересчета и совместимости с различными версиями Excel твоей "чудо-функции" ;-)

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645531
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, у Excel, начиная с версии 2002 (XP) существует родное, общедоступное, легко понятное, но редко используемое решение для динамических диапазонов, и имя ему - Данные-Список-Создать список...

Так-что, если речь об этих версиях, то и с именованными формулами связываться необязательно, ну а пресловутую DLL - вообще на свалку истории :-)

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645566
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 KL (XL) >
1) Не понял , что значит "Шельмуешь" - ругаешь что-ли? Наверно хотел сказать "мухлюешь" (остается только гадать)? Так Нет здесь ни того ни другого.

автор"=$A$4:ИНДЕКС($A$4:$A$65536;ПОИСКПОЗ("яяяяя";$A$3:$A$65536)) сравни с кодом в твоей DLL ;-) "
сравнил - код в DLL несравненно оптимальнее.

2) Редактировать код в аддоне не требуется , так же как и редактировать код в Excel.exe - его нужно просто использовать.

3) Если не видно , что очевидно , что мой код на несколько порядков проще, чем заумная формула, которую для того, чтобы написать нужно несколько дней обсуждения на форуме, то коментарии становятся лишними.

PS. То , что формула может иметь имя не знал(или забыл) и был рад, что не забивал голову ненужной информацией, за то , что случайно узнал - спасибо, но наверно через пару дней забуду это, т.к. даром не нужная вещь. Кстати, это тоже момент подхода - незачем знать то, без чего можно обойтись, причем даже легче, чем с этим знанием.

PSPS . Вообще , Почему такое сильное желание сделать себя чуть повыше , а других чуть пониже . ( Впрочем, я-то догадываюсь, почему , но лучше б ты сам, чтоб не скатываться на твой тон, это понял .)
Ведь можно общаться и на нейтральных тонах , без эмоций типа "ай-яй-яй","Ничего, ничего! Это случается когда человек не имеет предсталения ... " или "иди читай учебники". etc
Обсуждается подход как оптимальнее использвать Excel, Я предложил дополнение с очевидным преимуществом - ну и чего так волноваться и впадать во все тяжкие ?
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645572
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот,опять , - как распространять...
Ну если нет еще в наших Windows framework'ов дот нета, java jre , кучи компонентов, которые грузятся через Inet, etc, так что ж теперь - не использовать их приложения ?!

2 KL (XL)другие подразделения компании, поставщикам, клиентам, друзьям, начальнику
- другие подразделения компании. - Устанавливать или нет решается корпоративной IT политикой.
- поставщикам,клиентам - обычно отправляют уже готовые статичные данные и addon не требуется
- друзьям - как захотят
- начальнику. Ему требуются или статичные данные(Например). Или/И, как сделано у нас, - есть единая IT политика касательно того что должно стоять на рабочих станциях на предприятии. Как я уже говорил выше, само это дополнение к Office стоит вообще в сети на сервере (у обновляется при необходимости кстати в одном месте), а юзеры со своих рабочих станций , имея штатное ПО просто не замечая этого используют это дополнение.


PS . Видно те, кто хочет писать громоздкие формулы, так и будут это делать
PSPS. Не забывай, что дополнение сделано не ради одной обсуждаемой в топике фишки.
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645578
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)Кстати, у Excel, начиная с версии 2002 (XP) существует родное, общедоступное, легко понятное, но редко используемое решение для динамических диапазонов, и имя ему - Данные-Список-Создать список...

Так функция , которую я предложил была написана 7 лет назад и все 7 лет успешно не взирая на твои усмешки работала.
Кстати, тоже не знал - и зачем знать, если все сделано на 7 лет раньше , чем у микрософт ? Кстати моя функция работает и даже визуально практически также , как упомянутая тобой фича.


Так-что, если речь об этих версиях, то и с именованными формулами связываться необязательно, ну а пресловутую DLL - вообще на свалку истории :-)
[MVP - Microsoft Excel]
Нельзя, т.к.
1) НАдо, в Excel2K чтобы это работало
2) Так , примерно еще в 1000 раз больше всего другого, кроме поддержки именованных диапазонов
Да и еще идей миллион есть, котрые не реализованы в Office(Excel) .
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645662
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuniki"Шельмуешь" - ругаешь что-ли? Наверно хотел сказать "мухлюешь"
Оба слова подразумевают намеренную ложь. Ругаться одному потоку байтов с другим - глупо и непродуктивно. Каждый из нас имеет свой стиль ведения дискуссии - мне больше свойственна ирония, тебе я вижу безаппеляционность. Плевать - речь то не о нас, а о тех, кто это читает. Они и выберут то, что им подуше.

И еще, когда нет серьезных аргументов, начинают анализировать тон. Если хочешь, я после своих посланий буду ставить твою фразу: "Простите, если обидел". Теперь легче?

yunikiсравнил - код в DLL несравненно оптимальнее.
Здесь, я так понял, мы должны тебе поверить на слово, ведь кода функции ты не выложил (или надо потрошить твою DLL?). А в прочем, ничего потрошить не надо, все предельно ясно (это тоже то, чего ты не знал, но как ты уже успел отметить, и выражаясь языком классика: «...все то вздор, чего не знает Митрофанушка...»):

в моем VPC2007, Intel Core Duo 2.16, SDRAM 1000Gb, XP-SP2, MSO 2003 PRO Eng, в 1000 заполненных ячеек...

1) Твой «несравненно более оптимальный код» занимает в среднем 150 миллисек. + время (хотя и копейки) на пересчет = СУММ(Поле2) , в то время как формула =СУММ(B9:ИНДЕКС(B9:B10000;ПОИСКПОЗ(ИСТИНА;A9:A10000="";0)-1)) тратит в среднем 15 миллисек.

2) Твой «несравненно более оптимальный код» еще и выстреливает при любом передвижении курсора , а формула =СУММ(B9:ИНДЕКС(B9:B10000;ПОИСКПОЗ(ИСТИНА;A9:A10000="";0)-1)) только если в искомом диапазоне произошли изменения

3) Не стану тебя расстраивать временем пересчета в XL2007, тут разрыв еще ощутимее .

Ты уж поясни пожалуйста , что для тебя оптимальность алгоритма.

yuniki Так , примерно еще в 1000 раз больше всего другого, кроме поддержки именованных диапазонов Да и еще идей миллион есть, котрые не реализованы в Office(Excel).
Ну с фанатизмом я не борец, да и лень. И хотя я не апологет Микрософта, насчет миллиона твоих идей, судя по предыдущему, ты можешь сильно удивиться (если конечно избавишься от слепой приверженности одному лишь решению/инструменту) тому, что может Excel и сколько времени ты вложил в изобретение колеса (иногда квадратного).

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645667
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выводы:
1) yuniki сам начал - я мол знаю супер способ, а вы все неправы, только не обижайтесь (что-то в этом роде). Поэтому не удивляйся, что такая реакция.

2) Благодаря таким как White Owl и KL (XL) я стал, не побоюсь этого слова, более менее опытным пользователем Exel. А если бы слушал ваших советов, так бы и думал, что всё это шайтан какой-то и никогда бы и близко не подходил к мало-мальскому програмированию.

3) Формулы чем вам не понравились вообще не пойму...

4) Хотя за 7 лет вы наверное керепко к этому привыкли, поэтому так и защищаете. Я бы тоже защищал.
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645743
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы резюмировал все аргументы так ( yuniki , пожалуйста поправь меня если я допустил неточность или добавь отсутствующее):

Метод с DLL "красивее" всех ранее предложенных методов потому что...

1) yuniki не понимает и не желает понимать формул ("...и рад этому..."), но зато считает, что писать макросы и устанавливать DLL дело плевое, и это, по его мнению относится к большинству пользователей (непрограммистов)

2) макрос в сочетании с DLL считает в 10 раз медленнее чем формула, что делает его оптимальным

3) макрос привязанный к событию Worksheet_SelectionChange обладает абсолютной летучестью, что в сочетании с пунктом 2 делает его еще оптимальнее

4) что в реальной жизни...
- все компании имеют/следуют корпоративной политике IT
- все корпоративные политики IT позволяют пользователям использовать макросы, Add-in и регистрировать DLL
- все поставщики и клиенты получают книги с уничтоженными формулами
- начальник желающий открыть файл у себя дома, гостинице или в офисе у клиента - сам виноват.

5) по утверждению yuniki, решение с DLL было реализовано на 7 лет раньше, чем фича Данные-Список-Создать список...

6) по мнению yuniki, пользователю, который все же понимает или желает понимать как работают функции ИНДЕКС и ПОИСКПОЗ, гораздо проще вносить изменения в код VBA, чем изменить формулу

7) лучше функции, замороженные в DLL, чем способность оперативно менять критерии выбора диапазона

8) по мнению yuniki, постоянное моргание его макроса не способно никого раздражать коль уж оно не раздражает yuniki


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645783
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 KL (XL) >И еще, когда нет серьезных аргументов, начинают анализировать тон.
Когда нет серьезных аргументов, начинают переходить на личности и обвинять в собственных грехах других.
2 KL (XL) >Оба слова подразумевают намеренную ложь. Ругаться одному потоку байтов с другим - глупо и непродуктивно. Каждый из нас имеет свой стиль ведения дискуссии - мне больше свойственна ирония, тебе я вижу безаппеляционность. Плевать - речь то не о нас, а о тех, кто это читает. Они и выберут то, что им подуше.
Не ирония тебе свойственна , а нарывание на выяснение отношений и эта самая упомянутая тобой безапелляционность и в некоторых случаях, как твое "Шельмуешь" , - абсолютная ахинея.
А на счет иронии - так я слишком много жил с ней, чтоб понять, что она непродуктивна в решении подобных вопросов , если б я начал тут иронизировать, с желанием еще(как у тебя) тебя унизить, то тема мигом бы перешла в "просто треп" или бы была закрыта . Зачем офтопить-то ?
Ты сам-то не чувствуешь чтоли, что требуется постояное выяснение отношений с тобой ? Если уж ирония, так уж должна бы быть потоньше, и подостойней. А у тебя сплошные попытки унизить - чего добьешься-то этим ?
А насчет сказанного тобой выше - сплошная подтасовка и переворот с ног на голову :
моя сумма не может считать медленнее, хотя бы потому, что формула на порядок проще, а изменение вручную именованного диапазона критично исключительно к времени реакции пользователя, которое во много раз больше времени работы функции поддержки именованного диапазона .

Deggasad3) Формулы чем вам не понравились вообще не пойму...
Вы можете оценить отличия кода =СУММ(Поле2) от =СУММ(B9:ИНДЕКС(B9:B10000;ПОИСКПОЗ(ИСТИНА;A9:A10000="";0)-1)) ?

Вам какой больше нравится ? Мне первый, Вам второй ? Это Ваш выбор, но это дольше, сложнее, да еще и программировать труднее - смотрел я такие Excel'ские файлы - они все испещрены лесом подобных формул, смысла расчетов, за которыми трудно, очень трудно увидеть. Я бы решился Вам посоветовать, каким бы способом Вы не кодировали ячейки Excel, применять по возможности исключительно именованные диапазоны (м.б. именованные формулы, как ратует тут поборник терминологии KL (XL),), причем имена должны быть говорящими. Поправьте, если я ошибаюсь, но рискну предположить, что Вы мало применяете имен в своих формулах, ссылках. А это оччень неправильно. Я,например, вообще не использую формулы без имен.
Deggasad
А если бы слушал ваших советов, так бы и думал, что всё это шайтан какой-то и никогда бы и близко не подходил к мало-мальскому програмированию.
Вообще - как это понять. Я ж наоброт вроде как получается по предыдущим Вашим постам Вас к программированию на VBA толкал, мешал громоздкие формулы в ячейках писать , а теперь уже мои советы от программирования отталкивают. Чей-то не понимаю я Вас...

PS
Ну, наверно, хватит уже , вам всем оставляю, как всегда благородно (не поймите правильно), последнее слово. Очевидное всегда очень трудно объяснить, когда приходится объяснять .
Успехов всем на все страницы выяснения , как нужно считать сумму в столбце .
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645815
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Само за себя говорит, неправда ли:

yuniki...Вообще, все предложения некрасивы...
...красиво работать с диапазонами , как с таблицами базы данных...
...У Excel много чего не достает для удобной работы...
...и мое решение практически полностью устраняет эту проблему...
...Ну и молодец, что извинился...
...Ты как-то не обращаешь внимания - для чего весь это Excel придумывался...
...А...99% юзеров его используют для создания отчетов...и их анализа...
...Она весьма универсальна, я ее использую во всех приложениях...
...Ты как-то не видишь того, что я говорю...
...а именованный Range автоматически ...можно как-то без макроса сделать?...
...у меня это сделано максимально просто...
...У Вас вообще диапазон именуется или нет ?...
...что формула может иметь имя не знал(или забыл) и был рад...
...все сделано на 7 лет раньше , чем у микрософт...
...абсолютная ахинея....
...ирония..должна бы быть потоньше...
...моя сумма не может считать медленнее...
...Я бы решился Вам посоветовать...
...имена должны быть говорящими...
...но рискну предположить, что Вы мало применяете имен в своих формулах...
...это оччень неправильно...
...Я...вообще не использую формулы без имен...
...Я...Вас к программированию на VBA толкал...
тут идет бриллиант:

yuniki...вам всем оставляю, как всегда благородно...

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645816
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuniki...моя сумма не может считать медленнее, хотя бы потому, что формула на порядок проще,...

Сумма-то к счастью не твоя, а Микрософта и считает действительно быстро, да вот беда: макрос - твой. Считает гад дюже медленно и без передыху. Да ты сам померь, небось знаешь как это делается ;-)

yuniki...а изменение вручную именованного диапазона критично исключительно к времени реакции пользователя, которое во много раз больше времени работы функции поддержки именованного диапазона...

Тебе три раза объясняли, что все решения считают диапазон автоматически, а ты все про белого бычка.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сумма диапазона
    #34645849
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напали все на тебя, уже и жалко как то. Ты такой невинный в своих заблуждениях.
Я умываю руки. Вспоминаю как все начиналось
DeggasadТут бы стоило вообще ничего не отвечать...
Но ведь обидно за тех кто будет это читать и пытаться приладидь вашу библиотеку...
Люди будьте бдительны говорю Вам как User со стажем, не подсаживайтес на этот крючок. Exel для того и есть чтобы самому крутить всё что захочется. А то получится чтобы сумму по другому считать придётся каждый раз "разработчика" вызывать.
И ещё раз напомню я не ярый поклонник Exel, по долгу службы просто пользуюсь в основном этой программой и могу уверить она может многое. И буть ты хоть гений SQL, Oracle и пусть даже VBA, ты можешь даже и не представлять её возможностей. И нечего натягивать шаблон БД на Exel и говрить что он ограничен, он совсем для другого...
Это может длиться вечно...
Поэтому вернусь ещё раз к началу...
DeggasadТут бы стоило вообще ничего не отвечать...

З.ы.: Он так ничего и не понял...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Сумма диапазона
    #35443728
Почитал я ваш спор, уважаемые, и посчитал нужным высказать свое мнение.

С одной стороны, использование библиотеки имеет большой мину с в отм, что файл, отправленный куда-нить в другой город, не будет корректно работать у человека, у которого эта библиотека не установлена. Это единственный и очень большой минус.

С другой стороны, для использования в пределах, скажем, одного предприятия при условии, что в итоге наружу выходят только бумажные копии - ОЧЕНЬ удобно. Особенно всякие фичи типа фамилий-имен в родительном падеже и правильного вывода сумм прописью.

А еще противники библиотеки противоречат сами себе: говорят, что пользователь не сможет установить библиотеку, что пользователю это нафиг не нужно, и тут же рассказывают, как этот самый пользователь будет убивать дни и ночи на поиски в хелпе подробного описания всяких заморочных Екселевских функций и вот так вот запросто писать трехэтажные формулы. Ага, верю, одну команду для регистрации библиотеки мы написать не в состоянии, а вот выделывать чудеса эквилибристики с написанием длиннючих и малопонятных формул - это каждый третьеклассник может.

LOL.
...
Рейтинг: 0 / 0
Сумма диапазона
    #35444390
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Черный ТрактористС одной стороны, использование библиотеки имеет большой мину с в отм, что файл, отправленный куда-нить в другой город, не будет корректно работать у человека, у которого эта библиотека не установлена. Это единственный и очень большой минус.
1) Здесь речь шла не о плюсах и минусах библиотек вообще (спор сам по себе был бы стерильным), а о нецелесообразности их в данном случае (Сравнивали конкретные формулы с конкретной DLL) и еще говорили о вреде огульных обобщений
2) упомянутый минус это наименьшее зло, проблема в использовании ресурсов и в гибкости решения

Черный ТрактористС другой стороны, для использования в пределах, скажем, одного предприятия при условии, что в итоге наружу выходят только бумажные копии - ОЧЕНЬ удобно. Особенно всякие фичи типа фамилий-имен в родительном падеже и правильного вывода сумм прописью.
3) об этом речи не было

Черный ТрактористА еще противники библиотеки противоречат сами себе: говорят, что пользователь не сможет установить библиотеку, что пользователю это нафиг не нужно,
4) Это White Owl противник библиотек?!!! Да он просто прикалывался. Почитай еще раз, неужели в абзаце про установку пользователем библиотек иронии не заметно.
5) При всем при этом, использование библиотек сопряжено с использованием макросов, а здесь препятствий хоть отбавляй - читай мой список в одном из постов.

Черный Трактористи тут же рассказывают, как этот самый пользователь будет убивать дни и ночи на поиски в хелпе подробного описания всяких заморочных Екселевских функций и вот так вот запросто писать трехэтажные формулы..
6) цитату в студию!
7) приведенные здесь конкретные формулы далеки от трехэтажных
8) то, что пользователи более восприимчивы к формулам - факт (достаточно поработать в хелпдеске или поучаствовать в форумах)

Черный ТрактористАга, верю, одну команду для регистрации библиотеки мы написать не в состоянии, а вот выделывать чудеса эквилибристики с написанием длиннючих и малопонятных формул - это каждый третьеклассник может
9) язык формул примитивен по своей структуре (по сути это тот же бейсик)
10) как правило, программисты ничего не понимают в формулах из-за благоприобретенного дремучего снобизма, а не из-за врожденной тупости.
11) плохо то, что программисты в массе своей свято верят в то, что и для пользователя язык формул находится за семью печатями.
...
Рейтинг: 0 / 0
Сумма диапазона
    #35445714
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ребят, извините, что вмешиваюсь, но мне интересно! почему поискпоз ?

чем плохо так: СУММ(A1:ДВССЫЛ(АДРЕС(ПОИСКПОЗ(9E+307;A:A);1)))

аргументы за:
- нет ограничения диапазона;
- не формула массива - :)
...
Рейтинг: 0 / 0
Сумма диапазона
    #35445719
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
черт, не поискпоз :) почему индекс?
...
Рейтинг: 0 / 0
Сумма диапазона
    #35445729
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_черт, не поискпоз :) почему индекс?

1) формула с ИНДЕКС тоже не массива :

=СУММ(A1:ИНДЕКС(A:A;ПОИСКПОЗ(9E307;A:A)))

2) твоя формула длиннее (использует одну лишнюю функцию)

3) главное: функция ДВССЫЛ - летучая
...
Рейтинг: 0 / 0
Сумма диапазона
    #35445738
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что есть летучая?
...
Рейтинг: 0 / 0
Сумма диапазона
    #35445740
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_что есть летучая?

/topic/570382&hl=%eb%e5%f2%f3%f7%e0%ff#5853516
...
Рейтинг: 0 / 0
Сумма диапазона
    #35445741
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это понял.

теперь: почему ограничивать диапазон? чем полохо A:A ?
...
Рейтинг: 0 / 0
Сумма диапазона
    #35445906
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_это понял.

теперь: почему ограничивать диапазон? чем полохо A:A ?

В XL2003 [A:A] = 65.536 ячеек
В XL2007 [A:A] = 1.048.576 ячеек

Чем больше ячеек, тем дольше расчеты. Для функций поиска да еще и часто повторяющихся это особенно актуально.
...
Рейтинг: 0 / 0
Сумма диапазона
    #35446329
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL) _slan_это понял.

теперь: почему ограничивать диапазон? чем полохо A:A ?

В XL2003 [A:A] = 65.536 ячеек
В XL2007 [A:A] = 1.048.576 ячеек

Чем больше ячеек, тем дольше расчеты. Для функций поиска да еще и часто повторяющихся это особенно актуально.

да, в общем случае это так..

но неужели поискпоз() тоже от этого зависит? или все же поиск начинается с первой позиции и заканчивается при нахождении первого подходящего значения? в данном случае перебора всех позиций быть не должно.

остается вопрос выделения памяти под массив. неужели индекс() выделяет память под rows.count элементов? ведь индекс известен заранее.. и выделяет ли память вообще? или работает прямо с записями в ячейках..
...
Рейтинг: 0 / 0
Сумма диапазона
    #35446925
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_но неужели поискпоз() тоже от этого зависит? или все же поиск начинается с первой позиции и заканчивается при нахождении первого подходящего значения? в данном случае перебора всех позиций быть не должно.
Не совсем так, но где-то ты прав :-)
В принцыпе, насколько мне известно...
1) функции СУММЕСЛИ() и СЧЕТЕСЛИ() перебирают все позиции.
2) функции точного поиска, напр. ВПР(арг1,арг2,арг3,ЛОЖЬ), ГПР(арг1,арг2,арг3,ЛОЖЬ), ПОИСКПОЗ(арг1,арг2,ЛОЖЬ) ведут поиск от первой позиции по порядку пока не наткнутся на искомое значение или не дойдут до конца рабочей области листа.
3) функции приблизительного поиска, напр. ВПР(арг1,арг2,арг3,ИСТИНА), ГПР(арг1,арг2,арг3,ИСТИНА), ПОИСКПОЗ(арг1,арг2,1), ПОИСКПОЗ(арг1,арг2,-1), ПРОСМОТР() ведут поиск по бинарному принцыпу, т.е, последовательно деля диапазон поиска пополам, тем самым постепенно его сокращая, и сравнивая центральное значение с искомым. Таким образом, в диапазоне 65.536 ячеек будет произведено не более 17 сравнений.

Я правда в предыдущем посте забыл упомянуть среди причин для ограничения области поиска, возможность того, что вне определенного диапазона могут находиться посторонние данные (заголовки, комментарии, итоговые расчеты и т.д.) способные привести к ошибочным результатам.

_slan_остается вопрос выделения памяти под массив. неужели индекс() выделяет память под rows.count элементов? ведь индекс известен заранее.. и выделяет ли память вообще? или работает прямо с записями в ячейках..
ИНДЕКС здесь не причем. Эта функция, за редкими исключениями, на скорость не влияет. Как раз это одна из самых быстрых функций в Excel. И подобно ДВССЫЛ(), СМЕЩ() и частн. случаю ЕСЛИ() она
...
Рейтинг: 0 / 0
Сумма диапазона
    #35446934
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_но неужели поискпоз() тоже от этого зависит? или все же поиск начинается с первой позиции и заканчивается при нахождении первого подходящего значения? в данном случае перебора всех позиций быть не должно.
Не совсем так, но где-то ты прав :-)
В принцыпе, насколько мне известно...
1) функции СУММЕСЛИ() и СЧЕТЕСЛИ() перебирают все позиции.
2) функции точного поиска, напр. ВПР(арг1,арг2,арг3,ЛОЖЬ), ГПР(арг1,арг2,арг3,ЛОЖЬ), ПОИСКПОЗ(арг1,арг2,ЛОЖЬ) ведут поиск от первой позиции по порядку пока не наткнутся на искомое значение или не дойдут до конца рабочей области листа.
3) функции приблизительного поиска, напр. ВПР(арг1,арг2,арг3,ИСТИНА), ГПР(арг1,арг2,арг3,ИСТИНА), ПОИСКПОЗ(арг1,арг2,1), ПОИСКПОЗ(арг1,арг2,-1), ПРОСМОТР() ведут поиск по бинарному принцыпу, т.е, последовательно деля диапазон поиска пополам, тем самым постепенно его сокращая, и сравнивая центральное значение с искомым. Таким образом, в диапазоне 65.536 ячеек будет произведено не более 17 сравнений.

Я правда в предыдущем посте забыл упомянуть среди причин для ограничения области поиска, возможность того, что вне определенного диапазона могут находиться посторонние данные (заголовки, комментарии, итоговые расчеты и т.д.) способные привести к ошибочным результатам.

_slan_остается вопрос выделения памяти под массив. неужели индекс() выделяет память под rows.count элементов? ведь индекс известен заранее.. и выделяет ли память вообще? или работает прямо с записями в ячейках..
ИНДЕКС здесь не причем. Эта функция, за редкими исключениями, на скорость не влияет. Как раз это одна из самых быстрых функций в Excel. И подобно ДВССЫЛ(), СМЕЩ() и частн. случаю ЕСЛИ() она возвращать как диапазон так и значение, но в отличее от первых двух она не летуча.
...
Рейтинг: 0 / 0
Сумма диапазона
    #35447395
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тут поисследовал - разница между поискпоз(a1:a9999) и поискпоз(a:a) - 5%. в пользу ограничения ..

а индексу все равно
...
Рейтинг: 0 / 0
Сумма диапазона
    #35447420
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ограничение до 999 элементов дает выигрыш 10%..
...
Рейтинг: 0 / 0
Сумма диапазона
    #35447523
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_я тут поисследовал - разница между поискпоз(a1:a9999) и поискпоз(a:a) - 5%. в пользу ограничения ..

а индексу все равно
_slan_а ограничение до 999 элементов дает выигрыш 10%..
А теперь заполни все 9999 ячеек числами и попробуй еще раз формулы

=ПОИСКПОЗ(9E+307;A:A)
и
=ПОИСКПОЗ(9E+307;$A$1:$A$10000)

у меня в XL2003, разница 1450% , т.е. 1.55 мсек против 0.1 мсек

На первый взгляд - что с того что разница большая раз макс. время все равно 0.0015 сек? Только теперь скопируй обе формулы каждую хотябы в 1000 ячеек. У меня соотношение осталось то же, только первая формула затрачивает 1 сек на полный расчет, а это уже заметно глазу.

у меня в XL2003, разница 1450%, т.е. 1005.013 мсек против 4.45667 мсек
...
Рейтинг: 0 / 0
Сумма диапазона
    #35448272
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неправильный подход..

15мск/1мск=1500%

НО 5.015/5,001=100,2%

...

естественно я брал большие диапазоны...

разница в десятые доли секунды может быть при одной и той же ф-ции.

правильнее будет еще и приоритет повысить до максимума..

но я искал существующее значение.. так что окончательно пока не скажу, завтра попробую искать заведомо большее..
...
Рейтинг: 0 / 0
Сумма диапазона
    #35448327
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_неправильный подход..

15мск/1мск=1500%

НО 5.015/5,001=100,2%

Ты читаешь, что пишешь? Неправильный подход - у тебя.
Суди сам: 1мск в 15 раз быстрее, чем 15мск. Каждый раз это 100%, следовательно 1мск на 1400% быстрее, чем 15мск.

А с твоей логикой, решения вообще не существует:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
=	:	15	/	1	=	1500.0%
+0.5	:	16	/	2	=	1033.3%
+1.0	:	16	/	2	=	800.0%
+5.0	:	20	/	6	=	333.3%
+10.0	:	25	/	11	=	227.3%
+50.0	:	65	/	51	=	127.5%
+100.0	:	115	/	101	=	113.9%
+500.0	:	515	/	501	=	102.8%
+1000.0	:	1,015	/	1,001	=	101.4%
+5000.0	:	5,015	/	5,001	=	100.3%
+10000.0	:	10,015	/	10,001	=	100.1%
...
Рейтинг: 0 / 0
Сумма диапазона
    #35448338
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_...правильнее будет еще и приоритет повысить до максимума..
Понятия не имею, о чем ты здесь говоришь :-(

_slan_но я искал существующее значение.. так что окончательно пока не скажу, завтра попробую искать заведомо большее..
Либо мы пробуем формульные конструкции изложенные в этой теме, либо читаем изложенные мной выше патроны поведения поисковых функций.

Совершенно очевидно, что в зависимости от местонахождения искомого значения, функции приблизительного поиска могут совершать от 1 до 17 сравнений. При нахождении первого же совпадения поиск прекращается.

В случае с заведомо несуществующим значением, кол-во сравнений в диапазоне из 65.536 ячеек всегда 17 (а может, кстати, и на одно-два больше, т.к. последнее значение диапазона - это результат несовсем логичный для данных функций).

По той же логике, вполне могут существовать ситуации, когда функции точного поиска окажуться быстрее функций приблизительного поиска - например когда искомое значение находится на первых 16-ти позициях диапазона поиска из 65.536 ячеек.
...
Рейтинг: 0 / 0
Сумма диапазона
    #35449688
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, поиск заведомо большего задействует максимальное количество операций..
и здесь ограничение диапазона влияет существенно..
...
Рейтинг: 0 / 0
Сумма диапазона
    #35449856
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL) _slan_неправильный подход..

15мск/1мск=1500%

НО 5.015/5,001=100,2%

Ты читаешь, что пишешь? Неправильный подход - у тебя.
Суди сам: 1мск в 15 раз быстрее, чем 15мск. Каждый раз это 100%, следовательно 1мск на 1400% быстрее, чем 15мск.

А с твоей логикой, решения вообще не существует:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
=	:	15	/	1	=	1500.0%
+0.5	:	16	/	2	=	1033.3%
+1.0	:	16	/	2	=	800.0%
+5.0	:	20	/	6	=	333.3%
+10.0	:	25	/	11	=	227.3%
+50.0	:	65	/	51	=	127.5%
+100.0	:	115	/	101	=	113.9%
+500.0	:	515	/	501	=	102.8%
+1000.0	:	1,015	/	1,001	=	101.4%
+5000.0	:	5,015	/	5,001	=	100.3%
+10000.0	:	10,015	/	10,001	=	100.1%


:) это как еще щитать - возможно только на 94 процента медленнее.. но определенно в 15 раз..
а неправильность - это я на счет таких малых интервалов.. - одна и та же функция может выполняться разное время за счет разделения времени процессора на разные задачи - вот про этот приоритет..

правильнее выполнять множество повторов и усреднять(или брать меньшее, если для рекламы)..

а читать - других читаю, сам пишу :)

___
ниразуниMVP
...
Рейтинг: 0 / 0
Сумма диапазона
    #35450196
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_...:) это как еще щитать - возможно только на 94 процента медленнее.. но определенно в 15 раз...
Ну это пожалуйста! По крайней мере не грешит против логики. Тут как говорится стакан или на 94% пуст или на 1500% полон - кому как нравится. Но ты же сам говорил про выигрыш в 5%, а потом и в 10%, а не про потерю. Или в тогда еще это был правильный подход?
_slan_...а неправильность - это я на счет таких малых интервалов...
...правильнее выполнять множество повторов и усреднять(или брать меньшее, если для рекламы)...
Здрасте Вам, приехали! Правильнее чем что?
Я разве тебе сказал, что делаю не так? Ты бы спросил, прежде чем вердикт выносить.
1) для чего же я тебе привел пример с формулами скопированными в 1000 ячеек? (вопрос риторический)
2) я всегда совершаю минимум 5 промеров и вычисляю среднее
3) погрешность в десятые мсек в формулах Excel - в порядке вещей, погрешность в мсек - почти нереальна. Конечно, важны еще и инструменты, которыми производятся данные измерения.
4) мой опыт промеров, показывает, что абсолютное время расчетов варьирует в силу множества причин (hardware, software, текущие процессы и т.д.), процентное соотношение - крайне редко (разве-что в зависимости от версии Office)
_slan____
ниразуниMVP
Вопреки бытующему мнению, MVP - это не аргумент в споре и не ученая степень в IT, а лишь указание на регулярно демонстрируемое желание безвозмездно делиться знаниями ;-)

___

4разаMVP
...
Рейтинг: 0 / 0
Сумма диапазона
    #35450469
DaniilK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL, где можно подробнее узнать о том, что ты упомянул ниже? Или объясни, плиз, в 2-х словах как с создавать списки и как потом с ними работать?

KL (XL)Кстати, у Excel, начиная с версии 2002 (XP) существует родное, общедоступное, легко понятное, но редко используемое решение для динамических диапазонов, и имя ему - Данные-Список-Создать список...

Так-что, если речь об этих версиях, то и с именованными формулами связываться необязательно, ну а пресловутую DLL - вообще на свалку истории :-)

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сумма диапазона
    #35450667
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilKKL, где можно подробнее узнать о том, что ты упомянул ниже? Или объясни, плиз, в 2-х словах как с создавать списки и как потом с ними работать?
Треннинг на англ. Office2003

Справка на русск. Office2003

Справка на русск. Office2007
...
Рейтинг: 0 / 0
Сумма диапазона
    #35451314
DaniilK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL).....

спасибо! уже изучаю
...
Рейтинг: 0 / 0
Сумма диапазона
    #35452480
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL) _slan_...:) это как еще щитать - возможно только на 94 процента медленнее.. но определенно в 15 раз...
Ну это пожалуйста! По крайней мере не грешит против логики. Тут как говорится стакан или на 94% пуст или на 1500% полон - кому как нравится. Но ты же сам говорил про выигрыш в 5%, а потом и в 10%, а не про потерю. Или в тогда еще это был правильный подход?
_slan_...а неправильность - это я на счет таких малых интервалов...
...правильнее выполнять множество повторов и усреднять(или брать меньшее, если для рекламы)...
Здрасте Вам, приехали! Правильнее чем что?
Я разве тебе сказал, что делаю не так? Ты бы спросил, прежде чем вердикт выносить.
1) для чего же я тебе привел пример с формулами скопированными в 1000 ячеек? (вопрос риторический)
2) я всегда совершаю минимум 5 промеров и вычисляю среднее
3) погрешность в десятые мсек в формулах Excel - в порядке вещей, погрешность в мсек - почти нереальна. Конечно, важны еще и инструменты, которыми производятся данные измерения.
4) мой опыт промеров, показывает, что абсолютное время расчетов варьирует в силу множества причин (hardware, software, текущие процессы и т.д.), процентное соотношение - крайне редко (разве-что в зависимости от версии Office)
_slan____
ниразуниMVP
Вопреки бытующему мнению, MVP - это не аргумент в споре и не ученая степень в IT, а лишь указание на регулярно демонстрируемое желание безвозмездно делиться знаниями ;-)

___

4разаMVP

за последнее - спасибо :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Сумма диапазона
    #36446812
Фотография vikttur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Там, де двоє бились, треті поживились (где двое дрались, третьим - выгода)"

Хоть где-то кто-то на кого-то иногда и наезжал, тема от этого хуже не стала :)
Почитал с удовольствием и "выгодой" :)
...
Рейтинг: 0 / 0
88 сообщений из 88, показаны все 4 страниц
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сумма диапазона
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]