Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Добавление пробелов в числа (из 11111111,1 в 11 111 111,10) - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавление пробелов в числа (из 11111111,1 в 11 111 111,10) (Макросы/Sub)
Добавление пробелов в числа (из 11111111,1 в 11 111 111,10)
Yar4i Дата: Суббота, 17.09.2016, 14:08 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый вечер дамы и господа.
В Excel есть возможность форматировать ячейки с числом для для комфортного восприятия тысяч, десяти тысяч и т.д.
Но стоит в такую ячейку добавить текст, как все прекрасы сводятся на нет.
Пример во вложении.
Нужно в число 11111111,1
1. Добавить копейки т.е. ноль или два нуля, если б не было запятой (добавить запятую 11111111,10).
2. Перед третьей цифрой до запятой добавить пробел, если число больше чем трёхзначное. (1 111,10 или 11 111,10 или 111 111,10)
3. Перед шестой цифрой до запятой поставить пробел, если число больше чем шестизначное. (1 111 111,10 или 11 111 111,10 или 111 111 111,10)
4. Ну и перед девятой.
5. И самое сложное - все эти пробелы нужны в текстовом формате.
С данным числом не будут производится в дальнейшем никакие арифметические действия, данное число будет носит информативный характер.

Почему в VBA? - Мне всё это в коде нужно для макроса.

Спасибо.
К сообщению приложен файл: 9657080.xlsx(10Kb)


Сообщение отредактировал Yar4i - Суббота, 17.09.2016, 14:15
 
Ответить
СообщениеДобрый вечер дамы и господа.
В Excel есть возможность форматировать ячейки с числом для для комфортного восприятия тысяч, десяти тысяч и т.д.
Но стоит в такую ячейку добавить текст, как все прекрасы сводятся на нет.
Пример во вложении.
Нужно в число 11111111,1
1. Добавить копейки т.е. ноль или два нуля, если б не было запятой (добавить запятую 11111111,10).
2. Перед третьей цифрой до запятой добавить пробел, если число больше чем трёхзначное. (1 111,10 или 11 111,10 или 111 111,10)
3. Перед шестой цифрой до запятой поставить пробел, если число больше чем шестизначное. (1 111 111,10 или 11 111 111,10 или 111 111 111,10)
4. Ну и перед девятой.
5. И самое сложное - все эти пробелы нужны в текстовом формате.
С данным числом не будут производится в дальнейшем никакие арифметические действия, данное число будет носит информативный характер.

Почему в VBA? - Мне всё это в коде нужно для макроса.

Спасибо.

Автор - Yar4i
Дата добавления - 17.09.2016 в 14:08
Pelena Дата: Суббота, 17.09.2016, 14:16 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 9853
Репутация: 2254 ±
Замечаний: 0% ±

Excel 2010 & Mac Excel 2011
Здравствуйте.
Код
="счастье есть "&ТЕКСТ(C3;"# ##0,00")


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Код
="счастье есть "&ТЕКСТ(C3;"# ##0,00")

Автор - Pelena
Дата добавления - 17.09.2016 в 14:16
buchlotnik Дата: Суббота, 17.09.2016, 14:25 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 2049
Репутация: 613 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
можно чуть покороче :
Код
="счастье есть "&TEXT(C3;"# 0,00")


платная помощь:
ЯД: 410012595572239; WM: 311017577133
buchlotnik@mail.ru


Сообщение отредактировал buchlotnik - Суббота, 17.09.2016, 14:40
 
Ответить
Сообщениеможно чуть покороче :
Код
="счастье есть "&TEXT(C3;"# 0,00")

Автор - buchlotnik
Дата добавления - 17.09.2016 в 14:25
Udik Дата: Суббота, 17.09.2016, 16:10 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1214
Репутация: 153 ±
Замечаний: 0% ±

Excel 2013
Хы, а я чет на UDF-ку размахнулся
[vba]
Код

Public Function formatNum(rng As Range) As String
    Dim str1 As String, str2$
    Dim i As Integer, start%
    If rng.Count > 1 Then Exit Function
    If Not IsNumeric(rng.Value) Then formatNum = "Not Numeric": Exit Function
    str1 = CStr(rng.Value)
    str2 = ","
    i = InStr(str1, str2)
    If i = 0 Then
        str2 = ",00"
        ElseIf Len(str1) - i = 1 Then
        str2 = Right(str1, 2) & "0"
        str1 = Left(str1, i - 1)
    Else
        str2 = Right(str1, 3)
        str1 = Left(str1, i - 1)
    End If
    start = Len(str1) - 2
    If Len(str1) < 4 Then start = 1
    Do While start > -3
        If start > 1 Then
            str2 = " " & Mid(str1, start, 3) & str2
        Else
            If (Len(str1) Mod 3) = 0 Then
            i = 3
            Else
            i = Len(str1) Mod 3
            End If
            str2 = " " & Mid(str1, 1, i) & str2
        End If
        start = start - 3
    Loop
    formatNum = LTrim(str2)
End Function
[/vba]


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Суббота, 17.09.2016, 18:36
 
Ответить
СообщениеХы, а я чет на UDF-ку размахнулся
[vba]
Код

Public Function formatNum(rng As Range) As String
    Dim str1 As String, str2$
    Dim i As Integer, start%
    If rng.Count > 1 Then Exit Function
    If Not IsNumeric(rng.Value) Then formatNum = "Not Numeric": Exit Function
    str1 = CStr(rng.Value)
    str2 = ","
    i = InStr(str1, str2)
    If i = 0 Then
        str2 = ",00"
        ElseIf Len(str1) - i = 1 Then
        str2 = Right(str1, 2) & "0"
        str1 = Left(str1, i - 1)
    Else
        str2 = Right(str1, 3)
        str1 = Left(str1, i - 1)
    End If
    start = Len(str1) - 2
    If Len(str1) < 4 Then start = 1
    Do While start > -3
        If start > 1 Then
            str2 = " " & Mid(str1, start, 3) & str2
        Else
            If (Len(str1) Mod 3) = 0 Then
            i = 3
            Else
            i = Len(str1) Mod 3
            End If
            str2 = " " & Mid(str1, 1, i) & str2
        End If
        start = start - 3
    Loop
    formatNum = LTrim(str2)
End Function
[/vba]

Автор - Udik
Дата добавления - 17.09.2016 в 16:10
Michael_S Дата: Суббота, 17.09.2016, 17:38 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1687
Репутация: 327 ±
Замечаний: 0% ±

Excel2016
в VBA будет так:
[vba]
Код
N=Format(N,"#,###.00")
[/vba]

Хы, а я чет на UDF-ку размахнулся

[vba]
Код
Public Function formatNum$(rng As Range)
     formatNum =Format(rng,"#,###.00")
End Function
[/vba]

ps. Если нужно число, то примерно так: [vba]
Код
ActiveCell.NumberFormat="#,###.00"
[/vba]


ЯД: 41001136675053
WM: R389613894253


Сообщение отредактировал Michael_S - Суббота, 17.09.2016, 17:52
 
Ответить
Сообщениев VBA будет так:
[vba]
Код
N=Format(N,"#,###.00")
[/vba]

Хы, а я чет на UDF-ку размахнулся

[vba]
Код
Public Function formatNum$(rng As Range)
     formatNum =Format(rng,"#,###.00")
End Function
[/vba]

ps. Если нужно число, то примерно так: [vba]
Код
ActiveCell.NumberFormat="#,###.00"
[/vba]

Автор - Michael_S
Дата добавления - 17.09.2016 в 17:38
buchlotnik Дата: Суббота, 17.09.2016, 21:18 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 2049
Репутация: 613 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
в VBA тоже сокращённо можно :[vba]
Код
S="счастье есть " & Format(S, "#,0.00")
[/vba]


платная помощь:
ЯД: 410012595572239; WM: 311017577133
buchlotnik@mail.ru


Сообщение отредактировал buchlotnik - Суббота, 17.09.2016, 21:18
 
Ответить
Сообщениев VBA тоже сокращённо можно :[vba]
Код
S="счастье есть " & Format(S, "#,0.00")
[/vba]

Автор - buchlotnik
Дата добавления - 17.09.2016 в 21:18
Yar4i Дата: Понедельник, 19.09.2016, 12:21 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо огромное.
Я думал что решение через функцию будет, но молчал (т.к. не хотел)))
 
Ответить
СообщениеСпасибо огромное.
Я думал что решение через функцию будет, но молчал (т.к. не хотел)))

Автор - Yar4i
Дата добавления - 19.09.2016 в 12:21
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавление пробелов в числа (из 11111111,1 в 11 111 111,10) (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!