Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2013, 15:18   #1
destic
Пользователь
 
Регистрация: 23.01.2013
Сообщений: 10
По умолчанию отделить числа пробелом

привет всем! имеется таблица, в которой указан % состав выручки, проблема вся в том, что иногда ячейка имеет следующий формат: 60%рубли30%доллары5%евро5%гривны, помогите макросом, который отделит ТОЛЬКО цифры находящиеся внутри ячейки пробелом - 60%рубли 30%доллары 5%евро 5%гривны. Спасибо!
Вложения
Тип файла: rar Лист Microsoft Excel.rar (6.1 Кб, 22 просмотров)
destic вне форума Ответить с цитированием
Старый 23.01.2013, 16:23   #2
xmypka
Новичок
Джуниор
 
Регистрация: 15.06.2010
Сообщений: 2
По умолчанию

вот посмотри пробел.rar
xmypka вне форума Ответить с цитированием
Старый 23.01.2013, 17:05   #3
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

или так
Код:
Sub ertert()
Dim x, i&, j&
x = Range("C5", Cells(Rows.Count, 3).End(xlUp)).Value
With CreateObject("vbscript.regexp")
    .Global = True: .Pattern = "\d+(?=%)"
    For j = 1 To UBound(x)
        With .Execute(x(j, 1))
            For i = .Count - 1 To 1 Step -1
                x(j, 1) = Mid(x(j, 1), 1, .Item(i).firstindex) & " " & _
                          Mid(x(j, 1), .Item(i).firstindex + 1)
            Next i
        End With
    Next j
End With
Range("C5").Resize(j - 1).Value = x
End Sub
nilem вне форума Ответить с цитированием
Старый 23.01.2013, 18:09   #4
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Цитата:
60%рубли30%доллары5%евро5%гривны
Код:
.Pattern = "(?=\b\d)"
.Replace(text, " ")
Цитата:
100%рыЫВГUSDJ5%UUDJвлы
Код:
.Pattern = "\d+%"
.Replace(text, " $&")
Тишина – самый громкий звук

Последний раз редактировалось Stilet; 23.01.2013 в 21:27.
nerv вне форума Ответить с цитированием
Старый 23.01.2013, 20:24   #5
destic
Пользователь
 
Регистрация: 23.01.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от nilem Посмотреть сообщение
или так
Код:
Sub ertert()
Dim x, i&, j&
x = Range("C5", Cells(Rows.Count, 3).End(xlUp)).Value
With CreateObject("vbscript.regexp")
    .Global = True: .Pattern = "\d+(?=%)"
    For j = 1 To UBound(x)
        With .Execute(x(j, 1))
            For i = .Count - 1 To 1 Step -1
                x(j, 1) = Mid(x(j, 1), 1, .Item(i).firstindex) & " " & _
                          Mid(x(j, 1), .Item(i).firstindex + 1)
            Next i
        End With
    Next j
End With
Range("C5").Resize(j - 1).Value = x
End Sub
а как-то можно сделать, чтобы при наличии одного пробела перед цифрами, при запуске макроса еще одни не добавлялись?
destic вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дано предложение из нескольких слов, отделенных пробелом или запятой и пробелом, заканчивающейся точкой..... zzz6 Помощь студентам 5 12.07.2011 11:00
CSS. Отделить td.buttonheading от table.contentpaneopen Kaz34 HTML и CSS 2 12.05.2010 11:06
отделить в текстовом файле Rabitka Свободное общение 2 23.10.2009 00:04
отделить дробную часть от числа |v||v|<<IpShot Общие вопросы C/C++ 19 24.09.2008 18:21
отделить буквы от цифр Teleport Помощь студентам 4 12.06.2008 14:46