Страницы: 1
RSS
Функция сжать пробелы макросом (VBA)
 
Добрый вечер.

Необходима помощь в VBA, понимаю что функцию поиска выполняется через Find, но всё же нужна рука помощи, суть проблемы: в столбце I:I имеются данные в виде цифр в этом столбце имеются тысячные которые разделены пробелами с сотыми долями, необходимо найти и сжать все имеющиеся пробелы в столбце I:I.

Спасибо.
 
сжать<>удалить
 
Скорее всего это не обычный, а неразрывный пробел - 160.
 
Цитата
Andrey Ka написал:
данные в виде цифр
В виде (= формате) или просто это числа ?

? Replace() ?
 
т.е. удалить пробелы
 
Replace
 
Прикрепил пример. Это какой то баг видимо, не понимаю. В обоих случаях СЖПРОБЕЛЫ и Replace не помагает.
 
Нужно читать внимательно все сообщения:
Цитата
Юрий М написал: неразрывный пробел - 160.
=ПОДСТАВИТЬ(A2;СИМВОЛ(160);)
Код
Replace(Cells(2,1).Value,Chr$(160);"")
 
Код
Range("A2") = Replace(Range("A2"), Chr(160), "")
 
Помогло, но только для ячейки, как применить этот код к столбцу, менял на Columns (1) не помогает, ругается.
 
А включить макрорекордер и записать Ctrl+H не помогает?
 
В таком случае пробел не удаляется, пробовал.

Код
ActiveCell.Replace What:=" ", Replacement:=""
Изменено: Andrey Ka - 13.02.2020 03:38:38
 
Код
Sub УдалениеПробелов()
    Dim ws As Worksheet
    Dim i As Integer
    Dim LastRow As Integer
    Application.EnableEvents = False
    Application.Calculation = xlManual
    Application.ScreenUpdating = False
     
    Set ws = Worksheets(1)
    LastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To LastRow
        ws.Cells(i, 1) = WorksheetFunction.Trim(ws.Cells(i, 1))
        ws.Cells(i, 1) = Replace(ws.Cells(i, 1), Chr(160), "") 
    Next i
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    Application.Calculation = xlAutomatic
End Sub
 
OFF:
Цитата
aequit: Application.Calculation = xlAutomatic
не у всех стоит/должен стоять автопресчёт по-умолчанию, поэтому лучше запоминать:
Код
Dim AC&
…
AC=Application.Calculation
Application.Calculation = xlCalculationManual
…
Application.Calculation = AC
Изменено: Jack Famous - 13.02.2020 09:27:40
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Andrey Ka написал:
В таком случае пробел не удаляется, пробовал
Я ведь уже говорил, что там не привычный нам пробел, а неразрывный. Его код 160,
 
Друзья, спасибо за помощь, aequit ответил на мой вопрос, код работает, все супер.
Страницы: 1
Наверх