Страница: 1 |
Страница: 1 |
Вопрос: Format, или NumberFormat, или ???
Добавлено: 25.09.04 19:32
Автор вопроса: Anry Deriabine
Проблема такая: в Excel 2003
Так заполняются две ячейки:
Randomize Timer
m1 = Int((19 * Rnd) + 1)
Worksheets("Показания").Cells(14, 2).NumberFormat = m1
Worksheets("Показания").Cells(14, 2).NumberFormat = "00"
+ еще одна переменная
На других листах есть формула: =СЦЕПИТЬ(Показания!B14;".";Показания!C14;"0")
В ячейках с этой формулой должны быть цифры, например: 12.50 ; 05.10 ; 09.80
А пишется: 12.50 ; 5.10 ; 9.80
Как прописать 0 , если перед точкой одна цифра? Может есть другой метод реализации этой задачи?
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Anry Deriabine
Вопросов: 14
Ответов: 29
Профиль | | #1
Добавлено: 25.09.04 22:00
Проблему решил следующим образом:
Randomize Timer
m5 = Int((Rnd * 18) + 2)
a5 = Int((9 * Rnd) + 1)
Worksheets("Показания".Cells(14, 2) = m5
Worksheets("Показания".Cells(14, 3) = a5
Worksheets("1".Cells(27, 2) = Worksheets("Показания".Cells(14, 2) & "." & Worksheets("Показания".Cells(14, 3)
Worksheets("1".Cells(27, 2).NumberFormat = "00.00"
Только в национальных установках пришлось поменять делитель с , на .
Если кто-то знает другое решение, милости прошу, сообщите.
Номер ответа: 2
Автор ответа:
ActiveX
Вопросов: 0
Ответов: 73
Профиль | | #2
Добавлено: 06.10.04 13:17
Решение стандартными средствами MS Excel для первоначального вопроса :
=СЦЕПИТЬ(ЕСЛИ(Показания!B14<10;"0"&Показания!B14;Показания!B14);".";Показания!C14;"0"
=СЦЕПИТЬ(ЕСЛИ(ДЛСТР(Показания!B14=1);"0"&Показания!B14;Показания!B14);".";Показания!C14;"0"
Примерно тоже самое можно сделать средствами VBA, но нужно ???
Номер ответа: 3
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #3
Добавлено: 07.10.04 16:44
ДЛСТР ~ Len(MyString)
Только число сначала преобразовать в стоку и убрать лишний пробел в начале:
Номер ответа: 4
Автор ответа:
ActiveX
Вопросов: 0
Ответов: 73
Профиль | | #4
Добавлено: 07.10.04 18:57
To mc-black
Зачем всё усложнять ? Да ещё и извращаться при этом ? Формулы абсолютно рабочие !!!
Номер ответа: 5
Автор ответа:
Anry Deriabine
Вопросов: 14
Ответов: 29
Профиль | | #5
Добавлено: 07.10.04 22:42
Переписал по другому:
Убрал формулы с листов и вставил их в код:
Randomize Timer
u1 = Int(Rnd * 90)
n1 = Int(Rnd * 2)
Worksheets("1".Cells(19, 2) = Worksheets("Показания".Cells(10, 2) & "." & Worksheets("Показания".Cells(10, 3)
Worksheets("1".Cells(19, 2).NumberFormat = "00.00"
Но все равно требует изменения региональных установок.
Номер ответа: 6
Автор ответа:
Anry Deriabine
Вопросов: 14
Ответов: 29
Профиль | | #6
Добавлено: 07.10.04 22:43
А, присвоить забыл:
Worksheets("Показания".Cells(10, 2) = n1
Worksheets("Показания".Cells(10, 3) = u1
Номер ответа: 7
Автор ответа:
ActiveX
Вопросов: 0
Ответов: 73
Профиль | | #7
Добавлено: 07.10.04 23:31
Вот примерный код, без изменения национальных установок. Если Вы работаете с одними и теми ячейками, то можно вручную установить текстовый формат этих ячеек и убрать этот фрагмент кода.
Randomize Timer
u1 = Int(Rnd * 90)
n1 = Int(Rnd * 2)
If Len(u1) = 1 Then u1 = "0" & u1
If Len(n1) = 1 Then n1 = "0" & n1
'************************************************
'Worksheets("Показания".Cells(10, 3).NumberFormat = "@"
'Worksheets("Показания".Cells(10, 2).NumberFormat = "@"
Rem только если это нужно
'Worksheets("Показания".Cells(10, 2) = n1
'Worksheets("Показания".Cells(10, 3) = u1
'************************************************
Worksheets("1".Cells(19, 2).NumberFormat = "@"
Worksheets("1".Cells(19, 2) = n1 & "." & u1