Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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

Выглядит глупо, но данные отображаются нормально. В чем причина проблемы, я так и не смог разобраться. Программку нужно быстрей закончить.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам