Вопрос знатокам Excel (формулы, функции, преобразование)

Компьютеры, программы, периферия, коммуникации, интернет, программирование и т.п. Ранее назывался Hard-n-Soft.
Сообщение
Автор
Splinter
Аватара пользователя
Не грузин
Благодарил (а): 91 раз
Поблагодарили: 487 раз

№ 0 Сообщение Splinter » 11 май 2005 10:56

Постараюсь объяснить суть проблемы проще и доступнее. :)

Есть массив R[68], каждый элемент которого представляет собой время наступления события. [6:00, 6:07, 6:24, ..., 21:42]

Есть значение T, представляющее собой реальное значение времени, полученное с помощью встроенной функции ТДАТА().

Необходимо создать новый массив R1[68], состоящий из разницы T-R[n].

Поясняю "по-русски". Нужно, чтобы исходя из реального времени отображалось время прошедшее с момента наступления каждого события, либо время, оставшееся до наступления события, (если R1[N] < T).

Проблема в следующем.
Если реальное время T больше R[n] (событие уже произошло), то отображение корректно: показывается время, прошедшее с момента наступления события.
Если же реальное время T меньше R[n] (событие еще не произошло), то отображение некорректно:

Пример:
...
R[17]:=11:30
R[18]:=11:47
R[19]:=11:51
R[20]:=11:59
...

T:=11:48

Результат:
...
R1[17]=[00:18]
R1[18]=[00:01]
R1[19]=[23:57]
R1[20]=[23:49]
...

Элементы R[19], R[20] отображают время в несколько ином формате. До времени наступления события, указанного в R[19] осталось действительно три минуты (24:00 - 23:57), но нельзя ли сделать именно так, чтобы элементы R1[n] отображались в виде -00:03, -00:11 и т.д.? Нужной функции в библиотеке Excel'я нет.

Пробовал преобразовывать данные из формата "дата/время" в формат "число". Считается опять-таки правильно, но при обратном преобразовании полученного результата в формат "дата/время" значения для отрицательных величин не высчитываеются (получаю "######").
Таки проблема, да.

Burg
Аватара пользователя
Зок-модератор
Благодарил (а): 14 раз
Поблагодарили: 138 раз

№ 1 Сообщение Burg » 11 май 2005 11:27

=IF(SIGN(A1-A10)>=0,"+"&TEXT(A1-A10,"чч:мм"),"-"&TEXT(A10-A1,"чч:мм"))

Splinter
Аватара пользователя
Не грузин
Благодарил (а): 91 раз
Поблагодарили: 487 раз

№ 2 Сообщение Splinter » 11 май 2005 11:49

1: Burg
Я правильно понимаю, что вместо A1 предполагается вставить значение T, а вместо А10 - значение R[n]?

Splinter
Аватара пользователя
Не грузин
Благодарил (а): 91 раз
Поблагодарили: 487 раз

№ 3 Сообщение Splinter » 11 май 2005 11:58

Не получается. :(

Во-первых, элементы R[n] после преобразования всегда больше нуля:
6:00 преобразуется в 0,25 (четверть суток, все верно)
6:10 - в 0,25694
6:20 - в 0,26389
...
21:41 - в 0,90417

А текущее время преобразуется в 38453 с копейками после запятой.
И сравнивать их на больше/меньше нуля не имеет смысла.
Почему они в разные форматы-то преобразовываются?

Во-вторых, в дальнейшем предполагается сравнивать элементы массива R1[n] на больше/меньше и насколько сравнение значений в текстовом формате будет корректным - не знаю...

Burg
Аватара пользователя
Зок-модератор
Благодарил (а): 14 раз
Поблагодарили: 138 раз

№ 4 Сообщение Burg » 11 май 2005 12:22

Все прекрасно преобразовывается...
Задай формат для всех ячеек TIME

Splinter
Аватара пользователя
Не грузин
Благодарил (а): 91 раз
Поблагодарили: 487 раз

№ 5 Сообщение Splinter » 11 май 2005 12:44

4: Burg
Дык, тайм и установлен.

[отчаянно тупит]
Так, пробую по порядку.
Создаю новый файл, в столбец А тупо ручками ввожу значения от 06:00:00 до 22:00:00.
В отдельной ячейке A23 вбиваю формулу =тдата()
Потом в столбце B пишу формулу =$A$23-A1.

Растягиваю формулу вниз для пересчета всех значений. Получаю результат, описанный в сообщении 0.
Изображение
Пробую применить твою формулу по частям, для чего в столбец С ввожу =ЗНАК($A$23-A1)
Во всех ячейках получаю 1 (больше нуля).

Вернуться в «Компьютерный форум»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя