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

Фото
- - - - -

Excel formula

IF IF IF IF

  • Вы не можете создать новую тему
  • Please log in to reply
3 ответов в этой теме

#1 Dinamis

Dinamis
  • Пользователь
  • 95 сообщений
  • Откуда:Tallinn

Отправлено 01 ноября 2012 - 17:48

Доброго времени суток.
Интересует формула для ситуации:
Имеется перечень времени , 00,20,01; 01,05,20; 00,03,05.. и т.д. Значения стоят в столбец, порядка 800 значений... Интересует формула которая проверит по времени числа и в окончательном результате покажет, сколько из этих значений меньше часа, а сколько больше. Тоесть итог два окна где к примеру 300 за и 500 против.
Очень буду благодарен если поможете.
Формулу желательно для английского варианта.
Дополнительно хотелось бы узнать

есть две даты, нужна разница по времени. =TIMEVALUE(B1)-TIMEVALUE(В2) не работает если отличается дата=(
Пример:
2012-09-28 09:11:49.866 2012-09-27 21:00:00
Физически мы видим что разница 12:11:49 но моя формула спотыкается=(
С Уважением и благодарностью,
Дмитрий
  • 0

#2 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 01 ноября 2012 - 18:24

1.
=IF(A1<TIME(13,0,0),1,0)
вернет 1 в случае если время меньше 13:00:00, 0 - если больше или равно. Остается эти значения сложить и будет кол-во значений меньших 13:00:00
=1-B1
Инвертирует предыдущие занчения. Т.е. 1 если больше или равно 13:00:00, и 0 если меньше. Ну или просто
=COUNT(A1:A7)-SUM(B1:B7)
2.
TimeValue ожидает на вход текст, вы же суете date-time. date-time в Excel (да и далеко не только в Exel) представляется вещественными числами. Целочисленная часть указывает на дату, дробная на время. Соответсвенно, что бы получить время, нужно из date-time вытащить дробную часть.
=ABS((A15-TRUNC(A15))-(B15-TRUNC(B15)))
ABS() - возвращает абсолютное значение, использован вследствии того, что время не может быть отрицательным

Вообще, для подобных вопросов имеется закрепленная тема Вопросы по VBA / Excel / Access. На новый топик они никак не тянут.
  • 0

#3 Dinamis

Dinamis
  • Пользователь
  • 95 сообщений
  • Откуда:Tallinn

Отправлено 01 ноября 2012 - 20:53

В следующий раз полезу в соответствующий раздел) извините...
Попробовал данные Вами формулы, ексель постоянно ругается не нравится ему что-тоРазмещенное изображение(
timevalue выхватывает из 2012-07-15 12:00:00 нужное мне время и удачно его вычитает из другого параметра, но если дата отличается то всё начинает криво идти...((
Показанные вами формулы ругаются постоянно(( может я не так обяснил.. попробую ещё.
Есть две ячейки первая со значением 2012-10-24 09:10:13.965, вторая 2012-10-23 23:00:00, в третей формула должна расчитать разницу учитывая день месяца и время...
Формула =TIMEVALUE(B784)-TIMEVALUE(C784) хорошо работает для случая если в обоих ячейках дата идентична
2012-07-15 12:11:42.918 2012-07-15 12:00:00 0:11:42 (=TIMEVALUE(B2)-TIMEVALUE(C2))

Для третей ячайки хотелось бы формулу которая генирировала бы в 4-тую ячейку значение 1 или 0, в зависимости от того привышает ли третяя ячейка целый час или недотягивает до него(время болше часа рзницы - 1, меньше часа - 0.

В формулах Екселя профан... хотелось бы поподробнее, для меня всё это Филькина грамота)

Сообщение изменено: Dinamis (01 ноября 2012 - 20:55 )

  • 0

#4 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 02 ноября 2012 - 10:24

timevalue выхватывает из e нужное мне время и удачно его вычитает из другого параметра, но если дата отличается то всё начинает криво идти...((

Коли timevalue работает, то у вас на входе текст, а нет date-time. Timevalue возвращает только время, дату результат не содержит, соответсвенно, будет работать не завизимо от дат. Ошибка в чем-то другом.

Есть две ячейки первая со значением 2012-10-24 09:10:13.965, вторая 2012-10-23 23:00:00, в третей формула должна расчитать разницу учитывая день месяца и время...

От оно. Естественно, вы получаете не то, что желаете. Как уже писал, timevalue возвращает лишь время. Хотите учитывать даты, а в расчете используете только время.
=DATEVALUE(B1)+TIMEVALUE(B1)-DATEVALUE(C1)-TIMEVALUE(C1)

Для третей ячайки хотелось бы формулу которая генирировала бы в 4-тую ячейку значение 1 или 0, в зависимости от того привышает ли третяя ячейка целый час или недотягивает до него(время болше часа рзницы - 1, меньше часа - 0.

Достаточно добавить в мною приведенный if, timevalue(), ибо приведенная формула расчитывает иметь на входе date-time у вас же text
=IF(timevalue(A1)<TIME(13,0,0),1,0)

В формулах Екселя профан... хотелось бы поподробнее, для меня всё это Филькина грамота)

Просто при отсутсвии знаний как работает та или иная формула нужно обращаться к справочнику для заполнения данный пробелов, а не пытаться использовать на авось прокатит. Может прокатить при десяти значениях, глазами сверили, вроде ОК, но когда больше, можно упустить косяк. Так вы использовали timevalue не удосужовшись выяснить, что результат будет содержать только время, хотя и название об этом говорит.

Если вруг не получится, прикрепите тестовый excel файл с тестовыми значениями. Формулы Excel чувствительны к типам значений и используемые вормулы нужно выбирать изходя и типов входных данных. По внешнему виду значения в ячейке тип значения не определить. Это уже показал и приведенный вами пример, вроде как используете дату/время, но работающий timevalue говорит, что на самом деле имеете дело с отфарматированным текстом.
  • 0