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

Вход

Регистрация

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

 

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

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавление пробелов в числа (из 11111111,1 в 11 111 111,10) (Макросы/Sub)
Добавление пробелов в числа (из 11111111,1 в 11 111 111,10)
Yar4i Дата: Суббота, 17.09.2016, 14:08 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 137
Репутация: 1 ±
Замечаний: 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 (9.5 Kb)


Сообщение отредактировал 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
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

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


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

Автор - Pelena
Дата добавления - 17.09.2016 в 14:16
buchlotnik Дата: Суббота, 17.09.2016, 14:25 | Сообщение № 3
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

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


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

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

Excel 2016 х 64
Хы, а я чет на 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
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 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]


Сообщение отредактировал 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
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

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


Сообщение отредактировал 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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 137
Репутация: 1 ±
Замечаний: 0% ±

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

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

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