Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

Странная работа функции, если аргументов выступает дата

Автор silentland, 17.08.2011, 00:09

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

silentland

Формулы:
=СУММЕСЛИМН(A2:A4;B2:B4;"60";C2:C4;"<"&СЕГОДНЯ())
=СУММЕСЛИМН(A2:A4;B2:B4;"60";C2:C4;">"&СЕГОДНЯ())

Некорректно работают с датами



Почему так и как выйти из положения?

Serge 007

ЦитироватьПочему 0 ?!
Может потому что девятое ноября ещё не наступило? :)
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

silentland

Цитата: Serge 007 от 17.08.2011, 00:17
Может потому что девятое ноября ещё не наступило? :)

Верно. Поэтому, числа 300 и 400, напротив которых стояло 9 ноября и сложились, а число 200, напротив которого стоит дата начала века, которая всяко меньше сегодняшнего число, почему-то не сложилось.

Serge 007

Цитата: silentland от 17.08.2011, 00:21
...напротив которого стоит дата начала века...
Чё-то в файле у Вас её нет ;)
В С3 пусто (пусто и ноль - это разные вещи). А теперь попробуйте ввести в неё "дату начала века".
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

kimtan

СУММЕСЛИМН() не воспринимает пустую ячейку как ноль, поэтому и сравнивать ей нечего - вот и все.
Поставьте ноль, результат не заставит себя долго ждать.
Webmoney: E350157549801 Z116603216205 R268084006579

silentland

Так в том-то и суть, что ячейка должна быть пустая!

Если я просто смотрю ее значение по ссылке, то отображается ноль.

kimtan

Нули можно скрывать условным форматирование, пользовательским форматом, настройками наконец...
По другому СУММЕСЛИМН() побороть не получится.
Webmoney: E350157549801 Z116603216205 R268084006579

Serge 007

Цитата: silentland от 17.08.2011, 00:30
Так в том-то и суть, что ячейка должна быть пустая!
Пустая ячейка - это не дата. Вы уж определитесь СУММЕСЛИМН Некорректно работают с датами или не с датами.

Цитата: silentland от 17.08.2011, 00:30
Если я просто смотрю ее значение по ссылке, то отображается ноль.
А хотите там 8 будет? Или Ваш ник?
Достаточно поменять формат (см. скрин, обратите внимание на строку формул).
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

Serge 007

Цитата: kimtan от 17.08.2011, 00:38
По другому СУММЕСЛИМН() побороть не получится.
Но можно зайти с тыла :)
=СУММПРОИЗВ((A2:A4)*(B2:B4="60")*(C2:C4<СЕГОДНЯ()))
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

kimtan

Дык в соседней теме автор на медлительность СУММЕСЛИМН() жаловался, потому массив даже предлагать не стал  :)
Webmoney: E350157549801 Z116603216205 R268084006579

silentland

Пользуясь последними разработками советских измерителем скорости выяснил, что в этой ситуации заход с тыла выполняется почти в 3,5 раза дольше лобовой атаки. Слава богу, не собираюсь использовать эту петрушку в 5000 ячеек :-)

Михаил С.

=СУММЕСЛИМН(A2:A4;B2:B4;"60";C2:C4;"<"&СЕГОДНЯ())+СУММЕСЛИМН(A2:A4;B2:B4;"60";C2:C4;"")
Отдельное спасибо можно на QiWi-кошелек 909-771-53-87 или ЯД 41001136675053

silentland

Результаты эксперимента не подтвердились!!!

После перезагрузки компьютера
=СУММЕСЛИМН($A$1:$A$1000;$B$1:$B$1000;"60";$C$1:$C$1000;"<"&СЕГОДНЯ()) стала вычисляться за 350 мс, а не 1 с как раньше
=СУММПРОИЗВ(($A$1:$A$1000)*($B$1:$B$1000="60")*($C$1:$C$1000<СЕГОДНЯ())) тоже за 350 мс, а не 3,5 с как раньше
=СУММЕСЛИМН(A2:A4;B2:B4;"60";C2:C4;"<"&СЕГОДНЯ())+СУММЕСЛИМН(A2:A4;B2:B4;"60";C2:C4;"") за 620 мс.

Проверьте у себя.

Serge 007

Цитата: silentland от 17.08.2011, 18:01
Результаты эксперимента не подтвердились!!!

После перезагрузки компьютера
=СУММЕСЛИМН($A$1:$A$1000;$B$1:$B$1000;"60";$C$1:$C$1000;"<"&СЕГОДНЯ()) стала вычисляться за 350 мс, а не 1 с как раньше
И в чём была суть эксперимента?
Убедится в том что в разные моменты одна и та же формула пересчитывается разное кол-во времени? Так это и так очевидно,  достаточно просто взглянуть на график загрузки процессора. Вы замечали что это именно ГРАФИК, а не прямая, даже если Вы не запускаете никаких программ? Поэтому при измерении скорости пересчёта берётся среднее пяти попыток подряд и конечная цель - не получение абсолютного значения, а в получении соотношения между замерами при работе разных формул.
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

silentland

То что расчеты стали быстрее это ладно. Непонятно почему изменилось относительное время. Почему СУММПРОИЗВ стала выполняться столько же сколько СУММЕСЛИМН?