Страницы: 1
RSS
Макрос. Перевод из текстового в числовой формат.
 
Всем доброго дня!
Есть вопрос, подскажите пожалуйста.

Нужно перевести текст в столбце J в числа.
Файл с данными и макросом приложил. Макрос привязан к кнопке (находится на уровне столбца X).

Код макроса:
Код
    Columns("J").SpecialCells(xlCellTypeConstants, xlTextValues). _
    Replace What:=".", Replacement:="", LookAt:=xlPart                  'убираю точки

    Columns("J").Select
    Selection.TextToColumns                                             'форматирую как число
   
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False                                            'меняю точки на запятые
    
    Selection.TextToColumns                                             'форматирую как число

Код, сразу говорю, работает. Однако работает за 4 итерации, что на мой взгляд избыточно.
Можно ли сделать элегантнее/правильнее за 1 действие?
Интересует решение именно для файла, который приложен.
 
Воспользуйтесь макрорекордером и командой "Текст по столбцам"
Скрытый текст
Изменено: heso - 27.02.2017 15:57:19
 
Спасибо за решение, однако у меня оно не работает.
Вот что получается:
http://prnt.sc/edyum4
Файл с макросом по Вашему решению приложил.

P.s. Через меню всё работает четко, а вот макрос уже не работает, как нужно.
Изменено: SnowLs - 27.02.2017 19:21:26
 
Код
Private Sub CommandButton1_Click()
    [J:J].Replace ".", "", xlPart
    [J:J].TextToColumns 'форматирую как число
End Sub
Я сам - дурнее всякого примера! ...
 
Доброго дня!
Заменил свой макрос Вашим.

У меня сработал вот так (тоже неверно):
http://prnt.sc/edzop9
Что не так?

P.s. Если это важно: у меня по умолчанию разделитель дробной и целой части стоит запятая.
 
http://www.planetaexcel.ru/techniques/7/1091/

возможно вам эта статья подскажет.
 
Код
Private Sub CommandButton11_Click()
    With [J:J].SpecialCells(2, 2)
        .Replace ".", "", xlPart
        .FormulaLocal = .FormulaLocal
    End With
End Sub
Я сам - дурнее всякого примера! ...
 
Цитата
kuklp написал:
Private Sub CommandButton11_Click()    With [J:J].SpecialCells(2, 2)
Проверял работоспособность данного кода и ... он действительно работал... пока я не поставил 0 в одну из ячеек в столбце (прикрепил данный пример+Ваш макрос внутри).
SpecialCells(2, 2) в этом случае перестает выполнять то, что необходимо, а выдает вот что: http://prnt.sc/ee2s0s

Что бы изменить, чтобы верно работало?
Изменено: SnowLs - 27.02.2017 20:56:53
 
Цитата
Александр L написал:
http://www.planetaexcel.ru/techniques/7/1091/

возможно вам эта статья подскажет.
Александр, спасибо за ссылку, просмотрел, мне нужен макрос, значит это способ 6 с таким кодом:
Код
Sub Convert_Text_to_Numbers()
    Selection.NumberFormat = "General"
    Selection.Value = Selection.Value
End Sub

Он не работает.

Также не работает способ, который Alex ST предложил в комментариях к той статье.

К сожалению вот такая ситуация.

 
Код
Private Sub CommandButton1_Click()
    Dim a As Range
    For Each a In [J:J].SpecialCells(2, 2).Areas
        a.Replace ".", "", 2: a.FormulaLocal = a.FormulaLocal
    Next
End Sub
Я сам - дурнее всякого примера! ...
 
Цитата
kuklp написал:
Private Sub CommandButton1_Click()    Dim a As Range    For Each a In [J:J].SpecialCells(2, 2).Areas        a.Replace ".", "", 2: a.FormulaLocal = a.FormulaLocal    NextEnd Sub
Протестировал на всём массиве данных.
Работает!
Спасибо за красивое решение, выглядит гораздо лучше, чем у меня.

Вопрос решен.
Страницы: 1
Наверх