Работа с негативными временами в Excel - PullRequest
2 голосов
/ 01 марта 2012

Я использую макрос для извлечения данных из SP и затем помещаю их в электронную таблицу, в одном столбце у меня есть кратные значения раз (ч: мм), некоторые из них положительные (12:23) и некоторые отрицательные (- 1:23), теперь я хочу получить среднее время, но у меня ошибка с отрицательными значениями.

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

например, система дат 1904 года работает в этом случае:

A:1 -> 3:23 
A:2 -> 4:23 
A:3 -> =A1-A2 -> -1:00

Мой случай:

A:1 -> 3:23
A:2 -> -4:23 (built in code behind as string value and placed it in the cell)
A:3 -> =A1-A2 -> ERROR

Любая помощь будет оценена

EDIT:

Вот как я устанавливаю значение ячейки:

.Cells(i, k).Value = NetWorkhours(.Cells(i, 19).Value, .Cells(i, 20).Value, True)

Где NetWorkHours возвращает вариант с разницей между двумя датами, но только в рабочие часы

1 Ответ

2 голосов
/ 01 марта 2012

Да, система дат 1904 года исправляет эту проблему. Однако не рекомендуется использовать это, если ваша рабочая книга содержит ссылки на другие файлы, поскольку вы можете получить неожиданные результаты.

Как вы размещаете значения -ve в ячейке A2? Я просто копирую результат формулы (чтобы получить значение -ve) и вставляю как значения в ячейку A2, и он отлично работает.

Также, когда вы делаете A1 - A2, то, что именно происходит, это

3: 23 - (-4: 23) => 3:23 + 4:23 => 7: 46

Followup

То, как вы вводите значения, создает проблему:)

Вместо A1 - A2 попробуйте эту формулу вместо

=IF(LEFT(A1,1)="-",VALUE(MID(A1,2,LEN(A1)-1)),VALUE(A1))-IF(LEFT(A2,1)="-",VALUE(MID(A2,2,LEN(A2)-1)),VALUE(A2)) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...