Vba убрать все пробелы в ячейке excel

Удаление лишних пробелов из строк с помощью кода VBA Excel. Функции LTrim, RTrim, Trim. Встроенная функция рабочего листа и пользовательская функция. Пример.

  • LTrim(строка) — удаление пробелов слева;
  • RTrim(строка) — удаление пробелов справа;
  • Trim(строка) — удаление пробелов слева и справа.

Встроенная функция рабочего листа

Функция VBA Trim удаляет пробелы только по краям строки, не затрагивая двойные, тройные и т.д. пробелы внутри текста. Для удаления всех лишних пробелов следует использовать встроенную функцию Trim рабочего листа Excel.

Синтаксис функции Trim рабочего листа:

WorksheetFunction.Trim(строка)

Пользовательская функция

Можно бороться с лишними пробелами и с помощью пользовательской функции:

Function myTrim(text As String) As String

‘Удаляем пробелы слева и справа строки

  text = Trim(text)

‘Удаляем лишние пробелы внутри строки

    Do While InStr(text, »  «)

      text = Replace(text, »  «, » «)

    Loop

  myTrim = text

End Function

Пример удаления лишних пробелов

Сократим лишние пробелы в одной и той же строке с помощью функции Trim VBA, встроенной функции Trim рабочего листа Excel, пользовательской функции myTrim и сравним результаты.

Sub Primer()

Dim a1 As String

a1 = »  Жили   у     бабуси «

MsgBox Trim(a1) & vbCrLf _

& WorksheetFunction.Trim(a1) _

& vbCrLf & myTrim(a1)

End Sub

Чтобы код примера сработал без ошибок, код пользовательской функции myTrim должен быть добавлен в тот же модуль.

 

pinguindell

Пользователь

Сообщений: 200
Регистрация: 01.01.1970

#1

16.05.2013 09:54:10

Добрый день уважаемые знатоки Excel и VBA в частности.
На работе нужен макрос, который бы проверял каждую строчку в столбце I и удалял лишние пробелы в каждой ячейке данного столбца, если они конечно есть.
Вот написал следующий код:

Код
Sub DeleteSpaces()
'Удаляет лишние пробелы в столбце I
Application.ScreenUpdating = False
Dim poz As Range
Dim Ans As Integer
Dim Config As Integer
Config = vbYesNo + vbQuestion + vbDefaultButton2
Ans = MsgBox("Вы действительно хотите удалить лишние пробелы во всех значениях столбца I ?" & Chr(13) & "Данное действие необходимо выполнять при каждом импорте новых значений", Config)
Select Case Ans
    Case vbYes
For Each poz In Range("I1:I2000"
poz.Value = Trim$(poz)
Next poz
 MsgBox "Ошибки успешно исправлены" & Chr(13) & "*лишние пробелы удалены"
 Case vbNo
 End Select
End Sub

Макрос успешно справляется со своей задачей, но работает очень долго, в особенности когда объем файла превышает 100 строк.

Помогите пожалуйста оптимизировать код так, чтобы макрос работал быстрее, если это возможно.
Спасибо.

Прикрепленные файлы

  • Example.xlsm (19.11 КБ)

 

Казанский

Пользователь

Сообщений: 8839
Регистрация: 11.01.2013

#2

16.05.2013 10:05:26

Код
With Range("I1", Cells(Rows.Count, "I").End(xlUp))
    .Value = Evaluate("INDEX(TRIM(" & .Address & "),)")
End With
 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#3

16.05.2013 10:19:37

Если не ошибаюсь, то можно еще так:

Код
With Range("I1", Cells(Rows.Count, "I").End(xlUp))
    .Value = Application.Trim(.Value)
End With

В принципе подход тот же.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Казанский, The_Prist, спасибо большое. Как говориться — все гениальное просто !  :)

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Забыл добавить ложку дегтя в примечание к своему коду. Код Казанского лучше, т.к. обработает любую строку.
Мой код не работает в случае, если длина строки внутри ячейке больше 255 символов.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

fvg

Пользователь

Сообщений: 33
Регистрация: 10.12.2014

Добрый день. А можно переделать этот макрос, чтоб он удалял не лишние, а все пробелы в выделенных ячейках?

Изменено: fvg10.12.2014 22:57:44

 

Юрий М

Модератор

Сообщений: 60575
Регистрация: 14.09.2012

Контакты см. в профиле

#7

10.12.2014 14:31:30

Вариант:

Код
Sub DeleteSpace()
Dim rCell As Range
    For Each rCell In Selection
        rCell = Replace(rCell, " ", "")
    Next
End Sub
 
 

fvg

Пользователь

Сообщений: 33
Регистрация: 10.12.2014

Юрий М, все работает, cпасибо большое!  

 

Влад

Пользователь

Сообщений: 1189
Регистрация: 24.12.2012

#9

10.12.2014 16:14:39

Эээ… А цикл-то зачем? Достаточно

Код
Selection.Replace " ", ""
 

camypai

Пользователь

Сообщений: 32
Регистрация: 25.12.2015

#10

18.04.2016 15:09:53

Цитата
The_Prist написал: End With

красавчик Пирст))) помогло мне наконецто, ато целый день мучился))

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#11

18.04.2016 15:36:35

Цитата
camypai написал: красавчик Пирст

Так еще Диму никто не обзывал :D

Я сам — дурнее всякого примера! …

 

sv2013

Пользователь

Сообщений: 657
Регистрация: 09.06.2015

#12

18.04.2016 17:26:05

еще вариант макроса ,кнопка vvv

Код
Sub vvv()
   Dim z, j&
   z = Range("I1:I" & Range("I" & Rows.Count).End(xlUp).Row).Value
With CreateObject("VBScript.RegExp"): .Pattern = "s": .Global = True
  For j = 1 To UBound(z)
     If .test(z(j, 1)) Then z(j, 1) = .Replace(z(j, 1), "")
   Next
  Range("I1").Resize(UBound(z), 1).Value = z
End With
End Sub

Прикрепленные файлы

  • example_19_04_2016_pl_пробел.xls (39 КБ)

 

lazareva

Пользователь

Сообщений: 8
Регистрация: 23.12.2014

Как удалить пробелы внутри числа (неразрывный пробел) с помощью макроса. Сейчас использую «Найти и Заменить», так как формулу =СЖПРОБЕЛЫ(ПОДСТАВИТЬ(J5;СИМВОЛ(160);»»;1))*1 использовать в моем случае не удобно.

 

Мотя

Пользователь

Сообщений: 3218
Регистрация: 25.12.2012

 

lazareva

Пользователь

Сообщений: 8
Регистрация: 23.12.2014

Спасибо,

Мотя

. Пробел забрала, но проблема не решена, сума не считает.

 

Мотя

Пользователь

Сообщений: 3218
Регистрация: 25.12.2012

Как профессионально решить проблему — я не знаю.
Советую создать новую тему на формуме: она непременно привлечет специалистов.
Примитивный вариант:
1. скопировать столб с данными в «Блокнот»,
2. выделить Ваш «пробел»,
3. в «Блокноте» в режиме «Заменить» избавиться от него в Ваших данных,
4. из «Блокнота» вернуть данные в Excel.

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#17

19.05.2016 16:24:26

Не, Матреш, будем проще :)
Выделите столбец с корявыми числами — данные — текст по столбцам — ок.
Ну или в окне Immeiate:

Код
[j:j].texttocolumns

Изменено: kuklp19.05.2016 16:27:49

Я сам — дурнее всякого примера! …

 

lazareva

Пользователь

Сообщений: 8
Регистрация: 23.12.2014

Спасибо,

kuklp

, сработало (окно Immeiate)! Остался один вопрос. Данные в документ вносятся каждый день. Что делать после ввода новых данных?

Изменено: lazareva19.05.2016 17:41:34

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#19

19.05.2016 17:44:58

Да хоть то же самое. Или можете оформить его макросом, повесить на кнопку:

Код
sub www(): [j:j].texttocolumns: end sub

Я сам — дурнее всякого примера! …

 

lazareva

Пользователь

Сообщений: 8
Регистрация: 23.12.2014

#20

20.05.2016 09:33:50

Мне стыдно,что я научилась только копировать макросы, а написать самой трудновато. Немножко потрудившись, вот что получилось. Работает, но мня не устраивает то что надо выделять диапазон перед выполнением макроса. Диапазонов у меня много и они разбросаны. Как сделать так, чтоб он работал в столбце I и столбце J пока не разобралась. Еще нужно учесть, что в этих столбцах будут данные, которые уже прошли через макрос

Код
Sub удалить_неразрывный_пробел()
Dim rCell As Range
    For Each rCell In Selection
        rCell = Replace(rCell, Chr(160), "")
        rCell.TextToColumns
    Next
End Sub

Изменено: lazareva20.05.2016 09:35:41

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#21

20.05.2016 09:42:43

Код
Public Sub www()
    With Intersect(ActiveSheet.UsedRange, [i:j])
        .Replace Chr(160), "", 2
        .Replace ",", ".", 2
    End With
End Sub

Я сам — дурнее всякого примера! …

 

lazareva

Пользователь

Сообщений: 8
Регистрация: 23.12.2014

kuklp

, большое спасибо! То что надо!

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#23

20.05.2016 09:51:39

Вариант:

Код
Public Sub www()
        Intersect(ActiveSheet.UsedRange, [i:j]).Replace Chr(160), "", 2
        Intersect(ActiveSheet.UsedRange, [i:i]).TextToColumns
        Intersect(ActiveSheet.UsedRange, [j:j]).TextToColumns
End Sub

Я сам — дурнее всякого примера! …

 

IvI80

Пользователь

Сообщений: 36
Регистрация: 04.09.2017

Подскажите, пожалуйста, как переделать код Казанского, чтобы он выполнялся не только в отдельном столбце, а в произвольно выбранном диапазоне?

 

GroshevDV

Пользователь

Сообщений: 16
Регистрация: 27.03.2018

Казанский, The_Prist, Спасибо ОГРОМНОЕ! Очень мне помогли ваши решения.

 

DARR

Пользователь

Сообщений: 42
Регистрация: 10.02.2016

#26

15.07.2019 12:58:12

Цитата
Казанский написал:
With Range(«I1», Cells(Rows.Count, «I»).End(xlUp))
  .Value = Evaluate(«INDEX(TRIM(» & .Address & «),)»)
End With

Добрый день. Как в данном макросе задать только видимый диапазон ячеек столбца I ? Дело в том, что на столбце A стоит автофильтр и часть строк скрыто, поэтому надо, чтобы обрабатывались только видимые ячейки

 

casag

Пользователь

Сообщений: 175
Регистрация: 11.06.2018

#27

15.07.2019 16:53:16

DARR, у меня получилось так

Код
Sub csg()
Dim iCell As Range
For Each iCell In Range("I1", Cells(Rows.Count, "I").End(xlUp))
   If iCell.EntireRow.Hidden = False Then
      iCell.Value = Application.Trim(iCell.Value)
   End If
 Next
End Sub
 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#28

15.07.2019 17:05:00

Так д.б. шустрей:

Код
Sub www()
    Dim a As Range
    For Each a In Range("I1", Cells(Rows.Count, "I").End(xlUp)).SpecialCells(12).Areas
        a.Value = Application.Trim(a.Value)
    Next
End Sub

Я сам — дурнее всякого примера! …

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

Добавлю, что Application.Trim при применении к массиву равен по скорости применению в прямом цикле, только запись короче

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

DARR

Пользователь

Сообщений: 42
Регистрация: 10.02.2016

#30

16.07.2019 08:01:56

kuklp, casag, супер! спасибо!

In this Article

  • Trim Function
    • Trim Spaces Before and After Text
    • Trim Multiple Spaces Before and After Text
    • VBA Trim will NOT Remove Multiple Spaces Between Words
    • Trim as a Worksheet Function
    • Use Worksheet Trim Function in VBA
    • Difference Between WorksheetFunction.Trim and VBA Trim
    • Use VBA to add Trim Function in a Range
    • LTrim Function
    • RTrim Function
    • Remove all spaces from text

This tutorial will demonstrate how to use the Trim, LTrim, and RTrim VBA functions as well as the Trim worksheet function.

Trim Function

The VBA Trim function removes (“trims”) erroneous spaces before and after strings of text.

Trim Spaces Before and After Text

The VBA Trim function will remove spaces before and after strings of text:

Sub TrimExample_1()
MsgBox Trim(" I love excel ")		
'Result is: "I love excel"

MsgBox Trim(" I love excel")		
'Result is: "I love excel"

MsgBox Trim("I love excel ")		
'Result is: "I love excel"
End Sub

Trim Multiple Spaces Before and After Text

This includes trimming multiple spaces before and after text:

Sub TrimExample_2()
MsgBox Trim("     I love excel          ")		
'Result is: "I love excel"

MsgBox Trim("      I love excel")			
'Result is: "I love excel"

MsgBox Trim("I love excel             ")		
'Result is: "I love excel"
End Sub

VBA Trim will NOT Remove Multiple Spaces Between Words

However, the Trim function will not remove multiple spaces in between words:

Sub TrimExample_3()
MsgBox Trim("     I love    excel          ")		
'Result is: "I love    excel"

MsgBox Trim("      I  love excel")			
'Result is: "I  love excel"

MsgBox Trim("I love        excel             ")		
'Result is: "I love        excel"
End Sub

Trim as a Worksheet Function

However, the Excel Trim worksheet function can be used to remove extra spaces between words:

trim worksheet remove extra spaces

Use Worksheet Trim Function in VBA

To use the Excel Trim Function in VBA, call it by using WorksheetFunction:

Sub TrimExample_4()
Msgbox WorksheetFunction.Trim("     I love    excel          ")	
'Result is: "I love excel"

Msgbox WorksheetFunction.Trim("      I  love excel")		
'Result is: "I love excel"

Msgbox WorksheetFunction.Trim("I love        excel             ")	
'Result is: "I love excel"
End Sub

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

automacro

Learn More

Difference Between WorksheetFunction.Trim and VBA Trim

This will demonstrate the differences between Trim and WorksheetFunction.Trim:

Sub TrimExample_5()
Msgbox WorksheetFunction.Trim("     I love    excel          ")	
'Result is: "I love excel"
Msgbox Trim("     I love    excel          ")				
'Result is: "I love    excel"

Msgbox WorksheetFunction.Trim("      I  love excel")		
'Result is: "I love excel"
Msgbox Trim("      I  love excel")					
'Result is: "I  love excel"

Msgbox WorksheetFunction.Trim("I love        excel             ")	
'Result is: "I love excel"
Msgbox Trim("I love        excel             ")				
'Result is: "I love        excel"

End Sub

Use VBA to add Trim Function in a Range

The Trim Worksheet function can be added in a Range using property .Formula:

Sub TrimExample_6()
ThisWorkbook.Worksheets("Sheet1").Range("B1").Formula = "=trim(A1)"		
End Sub

LTrim Function

The LTrim function removes spaces only from the left side of the word:

Sub TrimExample_7()
MsgBox LTrim(" I love excel ")			
'Result is: "I love excel "

MsgBox LTrim(" I love excel")			
'Result is: "I love excel"

MsgBox LTrim("I love excel ")			
'Result is: "I love excel "

MsgBox LTrim("   I love   excel   ")		
'Result is: "I love   excel   "

MsgBox LTrim("   I   love excel")			
'Result is: "I   love excel"

MsgBox LTrim("I love    excel   ")			
'Result is: "I love    excel    "
End Sub

VBA Programming | Code Generator does work for you!

RTrim Function

The RTrim function removes spaces only from the right side of the word:

Sub TrimExample_8()
MsgBox RTrim(" I love excel ")			
'Result is: " I love excel"

MsgBox RTrim(" I love excel")			
'Result is: " I love excel"

MsgBox RTrim("I love excel ")			
'Result is: "I love excel"

MsgBox RTrim("   I love   excel   ")		
'Result is: "   I love   excel"

MsgBox RTrim("    I    love excel")		
'Result is: "    I    love excel"

MsgBox RTrim("I    love excel    ")		
'Result is: "I     love excel    "
End Sub

Trim, Ltrim and Rtrim do not remove spaces between words.

Remove all spaces from text

Trim will only remove extra spaces in between words, but to remove all spaces in a string of text, you can use the Replace Function:

Sub ReplaceExample ()
MsgBox Replace("     I love     excel ", " ", "")		
'Result is: "Iloveexcel"
End Sub

Excel VBA TRIM Function

VBA TRIM comes under the String and Text functions. This function is a Worksheet function in VBA. Similar to the worksheet reference, this function one may use to trim or remove unwanted spaces from a string. It takes a single argument, an input string, and returns an output as a string.

There are several situations where we download the data from online servers, and we face a situation of unorganized data and unwanted spaces in the cell. Dealing with unnecessary spaces is very painful to work with. So, in regular Worksheet functions, we have TRIM in excelThe Trim function in Excel does exactly what its name implies: it trims some part of any string. The function of this formula is to remove any space in a given string. It does not remove a single space between two words, but it does remove any other unwanted spaces.read more to eliminate “Leading Spaces, Trailing Spaces, and In-Between Space.” In VBA, we also have a TRIM function, which works the same as the Excel function, but there is only one slight difference. We will see that in this article a little later.

Table of contents
  • Excel VBA TRIM Function
    • What Does Trim Function Do?
      • Syntax
    • Examples
      • Example #1
      • Example #2
      • Example #3 – Clean the Data in Cells
    • Difference Between Excel & VBA Trim Function
    • Things to Remember
    • Recommended Articles

VBA TRIM

You are free to use this image on your website, templates, etc, Please provide us with an attribution linkArticle Link to be Hyperlinked
For eg:
Source: VBA TRIM (wallstreetmojo.com)

What Does Trim Function Do?

TRIM is a string function that removes spaces in excelWhile importing or copy-pasting the data from an external source, extra spaces are also copied in Excel. This makes the data disorganized and difficult to be used. The purpose of removing unwanted spaces from the excel data is to make it more presentable and readable for the user.
read more
from the selected cell. For example, in space, we have three types: Leading Space, Trailing Space, and In-Between Space.

Leading Space is nothing, but before any value starts in the cell, if there is any space, then it is called Leading Space.

Leading space

Trailing Space is nothing, but after the end of the value in the cell, if there is any space, it is called Trailing Space.

Trailing space

In-Between Space is nothing after the end of each word. Ideally, we should have one space character. Anything more than one space character is known as In-Between Space.

In Between space

To overcome all these problems, we have a function called TRIM.

Syntax

VBA Trim

String: What is the string or value you want to trim? It could be a cell reference and a direct value supply to the formula.

Examples

You can download this VBA TRIM Function Template here – VBA TRIM Function Template

Example #1

Now, we will see how to remove leading spaces in excelThe TRIM function in Excel can remove all the unwanted spaces in the excel cell. read more using the TRIM function. Follow the below steps:

Step 1: Create a Macro name and declare a variable as String.

Code:

Sub Trim_Example1()

    Dim k As String

End Sub

VBA Trim Example 1

Step 2: Now, assign a value using the TRIM for this declared variable.

Code:

Sub Trim_Example1()

    DimAs String

    k = Trim(

End Sub

VBA Trim Example 1-1

Step 3: For this String type, the word in double quotes is “Welcome to VBA.”

Code:

Sub Trim_Example1()

    Dim k As String

    k = Trim(" Welcome to VBA")

End Sub

VBA Trim Example 1-2

Step 4: Now, show the result of this variable in the message box.

Code:

Sub Trim_Example1()

    Dim k As String

    k = Trim(" Welcome to VBA")

    MsgBox k

End Sub

VBA Trim Example 1-3

Step 5: Run this code using the F5 key or manually. We should get the correct string in the message box.

VBA Trim Example 1-4

Output:

VBA Trim Example 1-5

So, the TRIM function removed all the leading spaces we had entered into the string value. Hence, the correct sentence, i.e., “Welcome to VBA.

Example #2

Now, take a look at one more example to remove trailing spaces. Again, take the same word but this time, enter trailing spaces.

“Welcome to VBA. “

Code:

Sub Trim_Example2()

    Dim k As String

    k = Trim("Welcome to VBA ")

    MsgBox k

End Sub

VBA Trim Example 2

Run this code manually or through the F5 key Trim function removes trailing spaces.

VBA Trim Example 2-1

Output:

VBA Trim Example 2-2

Example #3 – Clean the Data in Cells

Now, we will see the practical example of cleaning the data in excel cells. Assume you have a data set like the one below in your Excel sheet.

VBA Trim String Example 3

We need to write different codes when we have more than one data cell. Follow the below steps to write code.

Step 1: Declare a variable as “Range.”

Code:

Sub Trim_Example3()

    Dim MyRange As Range

End Sub

VBA Trim String Example 3-1

Step 2: Since the Range data type is an object, we must set the range first. So, set the range as “selection.”

Code:

Sub Trim_Example3()

    Dim MyRange As Range

    Set MyRange = Selection

End Sub

VBA Trim String Example 3-2

Note: MyRange = Selection means whatever the cells we select becomes a range. So in that range, TRIM removes unwanted spaces.

Step 3: Now, apply the TRIM function using For Each VBA LoopA VBA loop in excel is an instruction to run a code or repeat an action multiple times.read more.

Code:

Sub Trim_Example3()

    Dim MyRange As Range

    Set MyRange = Selection

    For Each cell In MyRange
    cell.Value = Trim(cell)
    Next
End Sub

VBA Trim Example 3-3

Step 4: Now, go back to the worksheet. Go to insert and draw a rectangular shape.

VBA Trim Example 3-4

Step 5: Add a word to the inserted rectangular shape as click here to clean the data.

VBA Trim Example 3-5

Step 6: Right-click on the rectangular shape and select the assigned Macro.

Example 3-6

Step 7: Now, the Macro names box will open. Select the name of the Macro we just created. Then, click on “OK.”

Example 3-7

Step 8: Now, select the range where we need to clean the data.

Example 3-8

Step 9: After selecting the range, click on the assigned Macro rectangular box. It will clean the data.

Example 3-9

So, we got cleaned value, i.e., after removing leading and trailing spaces.

Difference Between Excel & VBA Trim Function

The only difference between them is that the VBA function cannot remove in between spaces while the worksheet function in VBAThe worksheet function in VBA is used when we need to refer to a specific worksheet. When we create a module, the code runs in the currently active sheet of the workbook, but we can use the worksheet function to run the code in a particular worksheet.read more does. For example, take a look at the below example.

Example 3-10

In cell A3, we have in-between spaces. However, selecting and clicking on the rectangular shape will only remove trailing and leading spaces, not in-between spaces.

Example 3-11

To overcome this problem, we need to use the Trim function as a worksheet function in the code.

Code:

Sub Trim_Example3()

    Dim MyRange As Range

    Set MyRange = Selection
  
    For Each cell In MyRange
    cell.Value = WorksheetFunction.Trim(cell)
    Next

End Sub

Example 3-12

Here we have used a worksheet function, not a VBA functionVBA functions serve the primary purpose to carry out specific calculations and to return a value. Therefore, in VBA, we use syntax to specify the parameters and data type while defining the function. Such functions are called user-defined functions.read more. It will remove all kinds of spaces.

Things to Remember

  • VBA Trim and Worksheet Trim syntax are the same.
  • It can only remove leading and trailing spaces, not in-between spaces.
  • The Excel Trim function can remove all kinds of spaces.

Recommended Articles

This article has been a guide to VBA TRIM Function. Here, we learn how to use the TRIM function to remove spaces such as leading and trailing, with practical examples and a downloadable Excel template. Below you can find some useful Excel VBA articles: –

  • Excel VBA String Functions
  • VBA DIR Function
  • FIND Function in VBA
  • Cell References in VBA

Содержание

  1. Метод WorksheetFunction.Trim (Excel)
  2. Синтаксис
  3. Параметры
  4. Возвращаемое значение
  5. Замечания
  6. Поддержка и обратная связь
  7. VBA Trim, LTrim, and RTrim Functions – Remove Spaces From Text
  8. Trim Function
  9. Trim Spaces Before and After Text
  10. Trim Multiple Spaces Before and After Text
  11. VBA Trim will NOT Remove Multiple Spaces Between Words
  12. Trim as a Worksheet Function
  13. Use Worksheet Trim Function in VBA
  14. VBA Coding Made Easy
  15. Difference Between WorksheetFunction.Trim and VBA Trim
  16. Use VBA to add Trim Function in a Range
  17. LTrim Function
  18. RTrim Function
  19. Remove all spaces from text
  20. VBA Code Examples Add-in
  21. VBA Trim — Как использовать функцию обрезки VBA для удаления пробелов в Excel?
  22. Функция обрезки Excel VBA
  23. Как использовать функцию обрезки Excel VBA?
  24. Функция обрезки VBA — пример № 1
  25. Функция обрезки VBA — пример № 2
  26. Плюсы функции Excel VBA Trim
  27. То, что нужно запомнить
  28. Рекомендуемые статьи
  29. VBA Excel. Работа с текстом (функции)
  30. Функции для работы с текстом
  31. Ключевые слова для работы с текстом
  32. Примеры
  33. Вывод прямых парных кавычек

Метод WorksheetFunction.Trim (Excel)

Удаляет из текста все пробелы, кроме отдельных пробелов между словами. Используйте обрезку для текста, полученного от другого приложения, который может иметь неправильный интервал.

Синтаксис

expression. Обрезка (Arg1)

Выражение Переменная, представляющая объект WorksheetFunction .

Параметры

Имя Обязательный или необязательный Тип данных Описание
Arg1 Обязательный String Text — текст, из которого нужно удалить пробелы.

Возвращаемое значение

String

Замечания

Функция TRIM в Excel предназначена для обрезки 7-битового символа пространства ASCII (значение 32) от текста. В наборе символов Юникода есть дополнительный символ пробела, который называется неразрывным пробелом, который имеет десятичное значение 160. Этот символ обычно используется на веб-страницах в качестве сущности HTML, . Сама по себе функция Trim и метод WorksheetFunction.Trim не удаляют этот неразрывный пробел.

Метод WorksheetFunction.Trim в Excel отличается от функции Trim в VBA, которая удаляет только начальные и конечные пробелы.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

VBA Trim, LTrim, and RTrim Functions – Remove Spaces From Text

In this Article

This tutorial will demonstrate how to use the Trim, LTrim, and RTrim VBA functions as well as the Trim worksheet function.

Trim Function

The VBA Trim function removes (“trims”) erroneous spaces before and after strings of text.

Trim Spaces Before and After Text

The VBA Trim function will remove spaces before and after strings of text:

Trim Multiple Spaces Before and After Text

This includes trimming multiple spaces before and after text:

VBA Trim will NOT Remove Multiple Spaces Between Words

However, the Trim function will not remove multiple spaces in between words:

Trim as a Worksheet Function

However, the Excel Trim worksheet function can be used to remove extra spaces between words:

Use Worksheet Trim Function in VBA

To use the Excel Trim Function in VBA, call it by using WorksheetFunction:

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

Difference Between WorksheetFunction.Trim and VBA Trim

This will demonstrate the differences between Trim and WorksheetFunction.Trim:

Use VBA to add Trim Function in a Range

The Trim Worksheet function can be added in a Range using property .Formula:

LTrim Function

The LTrim function removes spaces only from the left side of the word:

RTrim Function

The RTrim function removes spaces only from the right side of the word:

Trim, Ltrim and Rtrim do not remove spaces between words.

Remove all spaces from text

Trim will only remove extra spaces in between words, but to remove all spaces in a string of text, you can use the Replace Function:

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

Источник

VBA Trim — Как использовать функцию обрезки VBA для удаления пробелов в Excel?

Функция обрезки Excel VBA

Функция обрезки Excel VBA используется для удаления лишних пробелов из любой ячейки или текста и дает нам вывод, который имеет стандарт с точки зрения требуемых пробелов. Функция обрезки VBA работает точно так же, как функция обрезки Excel, а функция обрезки также удаляет лишние пробелы тремя способами;

  1. Пробелы от начала текста.
  2. Пробелы от конца текста.
  3. Пробелы от середины текста, если видно более 1 лишнего пробела.

В основном это происходит, когда мы загружаем данные с какого-либо сервера, из хранилища данных или при неправильной вставке лишних пробелов вручную. Хотя мы можем легко увидеть пробелы в середине текста, но пробелы в начале и конце текста не могут быть легко видны до тех пор, пока мы не перейдем в режим редактирования этой конкретной ячейки. Это может сделать VBA Marco.

Как использовать функцию обрезки Excel VBA?

Мы обсудим, как использовать функцию обрезки VBA на нескольких примерах.

Вы можете скачать этот шаблон Excel с функцией обрезки VBA здесь — Шаблон Excel с функцией обрезки VBA

Функция обрезки VBA — пример № 1

Здесь у нас есть 3 ячейки на скриншоте ниже.

И каждая ячейка имеет несколько пробелов, связанных с ними. Ячейка А1 имеет пробелы в конце.

В ячейке A2 есть пробелы в начале текста.

И ячейка A3 имеет пространство между текстом, который выделен на скриншоте ниже.

Для обрезки этих ячеек мы будем использовать Excel VBA. Для этого одновременно нажмите клавиши Alt + F11 или на вкладке «Разработчик» щелкните Visual Basic, как показано ниже.

Это приведет нас к окну кодирования Visual Basic. Теперь перейдите в меню «Вставка» в окне VBA и выберите «Модуль», как показано ниже.

Это создаст новый модуль, в котором мы напишем код для обрезки. Ниже приведены шаги для создания и написания кода обрезки:

  • Сначала выберите переменную и определите диапазон. Здесь мы выбрали переменную «А». Эта переменная может быть чем угодно.
  • Поскольку в нашем наборе данных уже есть какой-то текст или объект, нам нужно установить диапазон для него. И для этого мы будем использовать « Выбор ». Он автоматически выберет данные в настоящем листе.

Код:

  • Для выбора каждой заполненной ячейки листа «For Each» используется функция «And Value», для выбора значения с выбором « Trim (Cell)» .

Код:

На этом мы завершаем работу по кодированию для создания макроса через VBA Trim. Теперь давайте применим созданный код в какую-то вкладку. Для этого перейдите в меню « Вставка» и в разделе « Иллюстрации» выберите « Фигуры» .

Из этой опции Shapes создайте любую фигуру, используя форматы и стили форм.

Здесь мы создали прямоугольную рамку и назвали ее TRIM, как показано ниже.

Теперь нажмите в режиме «Дизайн» в меню «Разработчик» и щелкните правой кнопкой мыши на созданном окне или фигуре Щелкните правой кнопкой мыши по списку меню и выберите « Назначить макрос», чтобы связать созданный нами код, как показано ниже.

Мы получим окно Assign Marco, оттуда выберите уже созданный код макроса, здесь у нас есть Trim_Data и затем нажмите OK .

Теперь выберите данные и нажмите кнопку TRIM . Мы получим выбранную обрезку, и теперь ненужные места будут удалены, как показано ниже.

Функция обрезки VBA — пример № 2

Кодирование VBA, показанное выше, может быть написано еще одним способом. В приведенном выше примере мы обрезали только выбранные данные. В этом мы вставим функцию в окно сообщения, а также она будет отображаться после обрезки данных.

Для этого мы будем использовать те же данные, которые мы использовали в примере 1. Выполните те же шаги, перейдите на вкладку Develop r и нажмите на Visual Basic .

Как только мы это сделаем, мы получим окно Visual Basic. Теперь откройте новый модуль и начните кодирование на этой странице.

Теперь рассмотрим тот же код, который мы написали в примере-1. Но здесь для печати окна сообщения с текстом мы вставим некоторый текст.

Код:

Как только мы закончим с написанием кода, закройте окна Visual Basic.

Теперь снова перейдите на вкладку «Разработчик» и нажмите «Вставить», как показано ниже. Мы получим выпадающее меню различных форм кнопок, как показано ниже.

Теперь выберите любую из форм кнопок и нарисуйте ее в любом месте вашей рабочей книги. Из списка созданных макросов выберите необходимую опцию. Здесь мы выбрали Trim_Data2, который мы создали для этого примера, и затем нажмите OK.

После этого мы получим кнопку, созданную на экране.

Мы можем назвать кнопку в соответствии с функцией, которую мы будем выполнять. Давайте назовем это TRIM согласно функции. Теперь щелкните правой кнопкой мыши на созданной кнопке TRIM и выберите Assign Marco. Как только мы это сделаем, мы получим окно Assign Marco, как показано ниже. Теперь выберите нужный макрос и нажмите ОК.

Таким образом, наш код обрезки будет назначен на кнопку TRIM. Теперь для тестирования сначала выберите данные, а затем нажмите эту кнопку TRIM.

Как мы видим выше, здесь наши данные были обрезаны, и мы также можем увидеть сообщение « Trimming Done ».

Плюсы функции Excel VBA Trim

  • Мы можем обрезать огромные наборы данных за один кадр, не проверяя количество лишних пробелов в ячейках.
  • Кодирование функции обрезки также довольно мало.
  • Шансов, что любое дополнительное пространство будет сэкономлено, очень мало или нет.

То, что нужно запомнить

  • Всегда сохраняйте файл как Macro-Enabled Worksheet. Делая это, мы можем использовать назначенный макрос несколько раз.
  • Скомпилируйте код, прежде чем назначать его любой кнопке.
  • Существует 2 разных способа создания кнопки, и оба могут быть использованы в соответствии с индивидуальными потребностями или пожеланиями.
  • Попробуйте написать код VBA, как показано в примере 2, который также выдаст сообщение.

Рекомендуемые статьи

Это было руководство по Excel VBA Trim. Здесь мы обсудили, как использовать функцию обрезки VBA для удаления пробелов в Excel, а также некоторые практические примеры и загружаемый шаблон Excel. Вы также можете просмотреть наши другие предлагаемые статьи —

  1. Функция VBA в Excel
  2. VBA VLOOKUP Функция
  3. Руководство по вкладке Excel Developer
  4. Как создать кнопку команды печати в Excel?

Источник

VBA Excel. Работа с текстом (функции)

Работа с текстом в коде VBA Excel. Функции, оператор & и другие ключевые слова для работы с текстом. Примеры использования некоторых функций и ключевых слов.

Функции для работы с текстом

Основные функции для работы с текстом в VBA Excel:

Функция Описание
Asc(строка) Возвращает числовой код символа, соответствующий первому символу строки. Например: MsgBox Asc(«/Stop»). Ответ: 47, что соответствует символу «/».
Chr(код символа) Возвращает строковый символ по указанному коду. Например: MsgBox Chr(47). Ответ: «/».
Format(Expression, [FormatExpression], [FirstDayOfWeek], [FirstWeekOfYear]) Преобразует число, дату, время в строку (тип данных Variant (String)), отформатированную в соответствии с инструкциями, включенными в выражение формата. Подробнее…
InStr([начало], строка1, строка2, [сравнение]) Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с начала строки. Подробнее…
InstrRev(строка1, строка2, [начало, [сравнение]]) Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с конца строки. Подробнее…
Join(SourceArray,[Delimiter]) Возвращает строку, созданную путем объединения нескольких подстрок из массива. Подробнее…
LCase(строка) Преобразует буквенные символы строки в нижний регистр.
Left(строка, длина) Возвращает левую часть строки с заданным количеством символов. Подробнее…
Len(строка) Возвращает число символов, содержащихся в строке.
LTrim(строка) Возвращает строку без начальных пробелов (слева). Подробнее…
Mid(строка, начало, [длина]) Возвращает часть строки с заданным количеством символов, начиная с указанного символа (по номеру). Подробнее…
Replace(expression, find, replace, [start], [count], [compare]) Возвращает строку, полученную в результате замены одной подстроки в исходном строковом выражении другой подстрокой указанное количество раз. Подробнее…
Right(строка, длина) Возвращает правую часть строки с заданным количеством символов. Подробнее…
RTrim(строка) Возвращает строку без конечных пробелов (справа). Подробнее…
Space(число) Возвращает строку, состоящую из указанного числа пробелов. Подробнее…
Split(Expression,[Delimiter],[Limit],[Compare]) Возвращает одномерный массив подстрок, извлеченных из указанной строки с разделителями. Подробнее…
StrComp(строка1, строка2, [сравнение]) Возвращает числовое значение Variant (Integer), показывающее результат сравнения двух строк. Подробнее…
StrConv(string, conversion) Изменяет регистр символов исходной строки в соответствии с заданным параметром «conversion». Подробнее…
String(число, символ) Возвращает строку, состоящую из указанного числа символов. В выражении «символ» может быть указан кодом символа или строкой, первый символ которой будет использован в качестве параметра «символ». Подробнее…
StrReverse(строка) Возвращает строку с обратным порядком следования знаков по сравнению с исходной строкой. Подробнее…
Trim(строка) Возвращает строку без начальных (слева) и конечных (справа) пробелов. Подробнее…
UCase(строка) Преобразует буквенные символы строки в верхний регистр.
Val(строка) Возвращает символы, распознанные как цифры с начала строки и до первого нецифрового символа, в виде числового значения соответствующего типа. Подробнее…
WorksheetFunction.Trim(строка) Функция рабочего листа, которая удаляет все лишние пробелы (начальные, конечные и внутренние), оставляя внутри строки одиночные пробелы.

В таблице перечислены основные функции VBA Excel для работы с текстом. С полным списком всевозможных функций вы можете ознакомиться на сайте разработчика.

Ключевые слова для работы с текстом

Ключевое слово Описание
& Оператор & объединяет два выражения (результат = выражение1 & выражение2). Если выражение не является строкой, оно преобразуется в Variant (String), и результат возвращает значение Variant (String). Если оба выражения возвращают строку, результат возвращает значение String.
vbCrLf Константа vbCrLf сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит последующий текст на новую строку (результат = строка1 & vbCrLf & строка2).
vbNewLine Константа vbNewLine в VBA Excel аналогична константе vbCrLf, также сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит текст на новую строку (результат = строка1 & vbNewLine & строка2).

Примеры

Вывод прямых парных кавычек

Прямые парные кавычки в VBA Excel являются спецсимволами и вывести их, заключив в самих себя или в одинарные кавычки (апострофы), невозможно. Для этого подойдет функция Chr:

Источник

Понравилась статья? Поделить с друзьями:
  • Vba только для чтения word на
  • Vba таблицы excel примеры
  • Vba строка состояния excel
  • Vba сравнение значений ячеек в excel в одну
  • Vba сдвиг на одну ячейку excel