Перейти к содержимому

Фотография

Microsoft ExcelВычисления, формулы, макросы


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 809

#424946
Petro

Petro
  • В доску свой
  • 3 679 сообщений
MODERATORIAL [egoist]

Microsoft Excel - программа для работы с электронными таблицами. Работает под управлением Microsoft Windows или Mac OS. Предоставляет возможности расчетов, графические инструменты и язык макро-программирования VBA (Visual Basic for Applications).

Смежная тема на форуме: Microsoft Office, обсуждение всех версий

Домашняя страница: http://office.micros...com/ru-ru/excel

Полезные приемы и хитрости: http://www.planetaexcel.ru/tips.php

Сообщение отредактировал egoist: 25.09.2009, 12:52:33

  • 0

#801
NastyaNS3

NastyaNS3
  • Завсегдатай
  • 136 сообщений

опечатка


Сообщение отредактировал NastyaNS3: 19.12.2018, 10:58:05

  • 0

#802
Daulet.tech

Daulet.tech
  • Завсегдатай
  • 235 сообщений
В сообщении не разрешено прикреплять .xls в открытом виде.

rar формате разрешено

Вы примерчиком сделайте, если 15.01.2018 по 21.02.2018 г.г. и т.д. или у Вас фиксированные даты, обязательно должно быть Х.ММ.ГГГГ по Х.ММ.ГГГГ и конец месяца по конец меся???, то 

=ЕСЛИ(И(ДЕНЬ(КОНМЕСЯЦА(H6;0))=ДЕНЬ(H6);КОНМЕСЯЦА(H6;1)=I6);30;ДНЕЙ360(H6;I6))

Сообщение отредактировал Daulet.tech: 19.12.2018, 12:05:51

  • 0

#803
NastyaNS3

NastyaNS3
  • Завсегдатай
  • 136 сообщений

Спасибо. Это, конечно, всё понятно и можно прилепить ЕСЛИ, И, ИЛИ. Просто думалось как-то более элегантно решить этот вопрос. 

Все даты не фиксированные и все периоды между датами могут быть произвольными. В подавляющем большинстве работает всё ОК за исключением нескольких частных случаев. 

 

Эксель никак не хочет понять отличие между "28 (29)-й день февраля" и "последний день февраля". Например,

=ДНЕЙ360(ДАТА(2018;2;27);ДАТА(2018;2;28);ИСТИНА)

возвращает: 1 день (28-27=1 день). 

мне нужно: 3 дня (30-27=3 дня). 

 

Или ещё, срок между 1 марта и "последний день февраля" (последний день срока в расчёт не входит) 

возвращает: 3 дня (28, 29 и 30 февраля),

мне нужно: 1 день (30 февраля).

Правда этот случай поправляется легко, если аргументом ДНЕЙ360 написать ЛОЖЬ. 

В других месяцах как видно из рисунка Эксель везде правильно считает.  

 

Первое, что пришло в голову - это попытаться принудительно сказать Экселю "30 февраля" -это ДАТА(2018;2;30) или ДАТА(2018;3;0), но увы, хитрость не удалась. 

Другой раз везде к конечной дате прибавлялась "1", выполнялось ДНЕЙ360, потом вычиталась "1". Лечится конкретно эта проблема, но появляются другие нестыковки. Тоже не вариант. 

 

В любом случае спасибо, что откликнулись.


  • 0

#804
Daulet.tech

Daulet.tech
  • Завсегдатай
  • 235 сообщений

Проверьте

Прикрепленные файлы

  • Прикрепленный файл  ДНЕЙ360.zip   6,99К   Количество загрузок: 11

  • 0

#805
NastyaNS3

NastyaNS3
  • Завсегдатай
  • 136 сообщений

Проверьте

Спасибо большое. Мы с вами на одной волне. 

 

Ваша формула в первой ячейке и далее протягивается вниз: 

=ЕСЛИ(И(ДЕНЬ(КОНМЕСЯЦА(A1;0))=ДЕНЬ(A1);КОНМЕСЯЦА(A1;1)=B1);30;ДНЕЙ360(A1;B1)+(И(МЕСЯЦ(A1)=2;МЕСЯЦ(B1)=2)*(30-ДЕНЬ(КОНМЕСЯЦА(A1;0))))*(ДЕНЬ(КОНМЕСЯЦА(A1;0))=ДЕНЬ(B1))) 

 

Моя формула в первой ячейке и далее протягивается вниз: 

=ДНЕЙ360(A1;B1;ИСТИНА)-(ДАТА(ГОД(A1);3;0)=A1)*(30-ДЕНЬ(A1))+(ДАТА(ГОД(B1);3;0)=B1)*(30-ДЕНЬ(B1)) 

 

... выполняется одна и та же корректировка. Вероятно, более простого способа уже не найти. 

 

PS. в вашей формуле по умолчанию в ДНЕЙ360 стоит ЛОЖЬ и счёт по NASD-алгоритму. срок с 29 авг по 31 авг возвращает 2 дня. правильно будет 1 день (только 29 авг), так как 30 и 31 число в 360-году принимаются за один день по европейскому алгоритму. Но это уже детали, не важно. Просто вдруг кому-нибудь тоже понадобятся такие расчёты.


  • 2

#806
Daulet.tech

Daulet.tech
  • Завсегдатай
  • 235 сообщений

в вашей формуле по умолчанию в ДНЕЙ360 стоит ЛОЖЬ и счёт по NASD-алгоритму
  тогда формула не правильная у меня )) не увлекался алгоритмами дат
  • 0

#807
Заинтересованная

Заинтересованная
  • В доску свой
  • 2 427 сообщений

привет, подскажите, пожалуйста, а что за формула =1*(A1>0) , как она называется, она же не арифметическая, то есть если в A1 стоит значение 50 000, то ответ будет 1


  • 0

#808
Daulet.tech

Daulet.tech
  • Завсегдатай
  • 235 сообщений

Здравствуйте!

 

 

=1*(A1>0) ... A1 стоит значение 50 000, то ответ будет 1

формула условная. ИСТИНА равен 1, ЛОЖЬ 0

Формулу так можете написать

=ЕСЛИ(A1>0;1;0)

Сообщение отредактировал Daulet.tech: 11.02.2019, 14:55:42

  • 2

#809
Заинтересованная

Заинтересованная
  • В доску свой
  • 2 427 сообщений

 

Здравствуйте!

 

 

=1*(A1>0) ... A1 стоит значение 50 000, то ответ будет 1

формула условная. ИСТИНА равен 1, ЛОЖЬ 0

Формулу так можете написать

=ЕСЛИ(A1>0;1;0)

спасибо, в первый раз вижу в таком исполнении логическую функцию, значит и так можно обыгрывать?


  • 0

#810
Daulet.tech

Daulet.tech
  • Завсегдатай
  • 235 сообщений

Да, можно.

Все 3 варианта формул дадут одинаковые результаты

Результат 1 или 0

=1*(A1>0)
=--(A1>0)
=ЕСЛИ(A1>0;1;0)

Сообщение отредактировал Daulet.tech: 11.02.2019, 17:58:25

  • 1




Количество пользователей, читающих эту тему: 0

пользователей: 0, неизвестных прохожих: 0, скрытых пользователей: 0

X

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2019 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.