Страница: 1 |
Страница: 1 |
Вопрос: Путаница с форматом ячеек
Добавлено: 10.07.07 20:53
Автор вопроса: Алексей Дубаев
Все та же программка, что и в предыдущем топике, только на этот раз числа в ячейке выводятся в виде даты, а должны быть формата х,ххх (целая и дробная часть).
Сделал следующее:
For i = 109 To 156
NewSheet.Cells(i, 2).Formula = "=R" & i & "C" & 4 & "*" & 80
Next i
В 4-ом столбце ("C" & 4) хранятся данные вида 0,016 или 0,0574 (к примеру).
А во второй столбец после данного фрагмента записывается янв.28 или фев.36 (к примеру).
Когда делаю трассировку - все считается нормально (допустим 0,016*80 - получается 1,28, как и должно быть).
Похоже вроде бы на то, что формат данных сменился, но когда открываю полученный файл и пробую изменить формат ячейки с значением "янв.28" на числовой, то получается 46753,00.
Кто-нибудь знает, с чем это связано и как это исправить?
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #1
Добавлено: 10.07.07 23:43
46753 - количество дней прошедших с 1900 года.
в целой части дни, в дробной время.
А что надо?
Номер ответа: 2
Автор ответа:
Алексей Дубаев
Вопросов: 2
Ответов: 3
Профиль | | #2
Добавлено: 11.07.07 00:01
Надо, чтобы в этой ячейке выводилось не 46753, а 1,28, т.е. результат выполнения строки:
NewSheet.Cells(i, 2).Formula = "=R" & i & "C" & 4 & "*" & 80
при "=R" & i & "C" & 4 равной 0,016
Номер ответа: 3
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #3
Добавлено: 11.07.07 00:42
Такого эффекта у себя не наблюдаю.
Почему-то у тебя получается:
46753 = 0,016 * 80 * 10 * 365,2578125
365,2578125 - дней в году с високосной частью?
Попробуй NewSheet.Cells(i, 2).NumberFormat = "0.00" перед вставкой формулы.
Номер ответа: 4
Автор ответа:
Алексей Дубаев
Вопросов: 2
Ответов: 3
Профиль | | #4
Добавлено: 11.07.07 19:22
Решил проблему следующим способом:
For i = 109 To 156
NewSheet.Cells(i, 2).Formula = "=R" & i & "C" & 4 & "*" & 80
Next i
For i = 109 To 156
NewSheet.Cells(i, 2).Value = NewSheet.Cells(i, 2).Value & "rcc"
Next i
For i = 109 To 156
strlength = Len(NewSheet.Cells(i, 2).Value)
NewSheet.Cells(i, 2).Value = Mid(NewSheet.Cells(i, 2).Value, 1, strlength - 3)
Next i
Выглядит глупо, но данные отображаются нормально. В чем причина проблемы, я так и не смог разобраться. Программку нужно быстрей закончить.