Excel vba удалить символы слева

Извлечение (вырезание) части строки с помощью кода VBA Excel из значения ячейки или переменной. Функции Left, Mid и Right, их синтаксис и аргументы. Пример.

Эта функция извлекает левую часть строки с заданным количеством символов.

Синтаксис функции Left:

Left(строка, длина)

  • строка — обязательный аргумент: строковое выражение, из значения которого вырезается левая часть;
  • длина — обязательный аргумент: числовое выражение, указывающее количество извлекаемых символов.

Если аргумент «длина» равен нулю, возвращается пустая строка. Если аргумент «длина» равен или больше длины строки, возвращается строка полностью.

Функция Mid

Эта функция извлекает часть строки с заданным количеством символов, начиная с указанного символа (по номеру).

Синтаксис функции Mid:

Mid(строка, начало, [длина])

  • строка — обязательный аргумент: строковое выражение, из значения которого вырезается часть строки;
  • начало — обязательный аргумент: числовое выражение, указывающее положение символа в строке, с которого начинается извлекаемая часть;
  • длина — необязательный аргумент: числовое выражение, указывающее количество вырезаемых символов.

Если аргумент «начало» больше, чем количество символов в строке, функция Mid возвращает пустую строку. Если аргумент «длина» опущен или его значение превышает количество символов в строке, начиная с начального, возвращаются все символы от начальной позиции до конца строки.

Функция Right

Эта функция извлекает правую часть строки с заданным количеством символов.

Синтаксис функции Right:

Right(строка, длина)

  • строка — обязательный аргумент: строковое выражение, из значения которого вырезается правая часть;
  • длина — обязательный аргумент: числовое выражение, указывающее количество извлекаемых символов.

Если аргумент «длина» равен нулю, возвращается пустая строка. Если аргумент «длина» равен или больше длины строки, возвращается строка полностью.

Пример

В этом примере будем использовать все три представленные выше функции для извлечения из ФИО его составных частей. Для этого запишем в ячейку «A1» строку «Иванов Сидор Петрович», из которой вырежем отдельные компоненты и запишем их в ячейки «A2:A4».

Sub Primer()

Dim n1 As Long, n2 As Long

Range(«A1») = «Иванов Сидор Петрович»

‘Определяем позицию первого пробела

n1 = InStr(1, Range(«A1»), » «)

‘Определяем позицию второго пробела

n2 = InStr(n1 + 1, Range(«A1»), » «)

‘Извлекаем фамилию

Range(«A2») = Left(Range(«A1»), n1 1)

‘Извлекаем имя

Range(«A3») = Mid(Range(«A1»), n1 + 1, n2 n1 1)

‘Извлекаем отчество

Range(«A4») = Right(Range(«A1»), Len(Range(«A1»)) n2)

End Sub

На практике часто встречаются строки с лишними пробелами, которые необходимо удалить перед извлечением отдельных слов.

удаление символов средствами vba

DreOne

Дата: Четверг, 10.12.2015, 18:14 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 35


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Здравствуйте!
Возникла проблема удаления символов.
С 1С выгружаются номера счетов в столбце А такого типа:
0000-001578
0000-001579
0000-000875
0000-000790

Как кодом убрать символы слева до знака «-«, включая этот знак и убрать нули, чтобы остались номера 1578,1579,875,790?
Заранее спасибо.


Саморазвитие — это всё…

 

Ответить

_Boroda_

Дата: Четверг, 10.12.2015, 18:23 |
Сообщение № 2

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Обязательно кодом?
Выделяете столбец А, жмете Контрл h, в найти «*-» без кавычек (звездочка тире), в заменить на — ничего.
Это всё можно макрорекодером записать


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

DreOne

Дата: Четверг, 10.12.2015, 18:29 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 35


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Да, так как это только часть всей задачи, для заполнения в дальнейшем бланка счетов.


Саморазвитие — это всё…

 

Ответить

abtextime

Дата: Четверг, 10.12.2015, 18:31 |
Сообщение № 4

Группа: Проверенные

Ранг: Ветеран

Сообщений: 828


Репутация:

117

±

Замечаний:
0% ±


Excel 2010

Еще вариант, не знаю проще или нет — через Данные — Текст по столбцам, разделитель «-» или по ширине

 

Ответить

_Boroda_

Дата: Четверг, 10.12.2015, 18:32 |
Сообщение № 5

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Так нужно?
[vba]

Код

Sub Макрос1()
    Columns(«A:A»).Replace What:=»*-«, Replacement:=»»
End Sub

[/vba]


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

DreOne

Дата: Четверг, 10.12.2015, 18:39 |
Сообщение № 6

Группа: Пользователи

Ранг: Новичок

Сообщений: 35


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Sub Макрос1()
Columns(«A:A»).Replace What:=»*-«, Replacement:=»»
End Sub

Спасибо огромное, работает, супер)


Саморазвитие — это всё…

 

Ответить

abtextime

Дата: Четверг, 10.12.2015, 18:39 |
Сообщение № 7

Группа: Проверенные

Ранг: Ветеран

Сообщений: 828


Репутация:

117

±

Замечаний:
0% ±


Excel 2010

Не тестировал

[vba]

Код

Public Function Clean(S As String) As String

Clean = «»
Founded = False

For i = 1 To Len(S)
    If Founded Or (Mid(S, i, 1) <> «0» And Mid(S, i, 1) <> «-«) Then
        Clean = Clean & Mid(S, i, 1)
        Founded = True
    End If
Next i

End Function

[/vba]

 

Ответить

RAN

Дата: Четверг, 10.12.2015, 19:30 |
Сообщение № 8

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

abtextime, Назвать функцию именем существующего метода — это найти приключения на свою… (ну, вы в курсе)


Быть или не быть, вот в чем загвоздка!

 

Ответить

Kuzmich

Дата: Четверг, 10.12.2015, 19:49 |
Сообщение № 9

Группа: Проверенные

Ранг: Ветеран

Сообщений: 707


Репутация:

154

±

Замечаний:
0% ±


Excel 2003

UDF
[vba]

Код

Function Удаление(cell As Range) As String
  Удаление = Split(cell, «-«)(1)
End Function

[/vba]

 

Ответить

abtextime

Дата: Четверг, 10.12.2015, 22:18 |
Сообщение № 10

Группа: Проверенные

Ранг: Ветеран

Сообщений: 828


Репутация:

117

±

Замечаний:
0% ±


Excel 2010

RAN, начал изучать VBA месяц назад, простите великодушно )

 

Ответить

sv2014

Дата: Четверг, 10.12.2015, 22:25 |
Сообщение № 11

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 226


Репутация:

61

±

Замечаний:
0% ±


Excel 2013

DreOne, добрый вечер,вариант для файл-примера с функцией yyy в столбце C

[vba]

Код

Function yyy%(t$)
    With CreateObject(«VBScript.RegExp»): .Pattern = «0000-0{2,3}»
       yyy = .Replace(t, «»)
    End With
End Function

[/vba]

Сообщение отредактировал sv2014Четверг, 10.12.2015, 22:29

 

Ответить

sv2014

Дата: Четверг, 10.12.2015, 22:52 |
Сообщение № 12

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 226


Репутация:

61

±

Замечаний:
0% ±


Excel 2013

DreOne, добавлю еще функцию zzz в столбец D,преимущество таких функций простота

[vba]

Код

Function zzz%(t$)
    Dim j%
   For j = 1 To Len(t)
     If Mid(t, j, 1) Like «[1-9]» Then zzz = Mid(t, j): Exit Function
   Next
End Function

[/vba]

К сообщению приложен файл:

7357533.xls
(36.5 Kb)

 

Ответить

DreOne

Дата: Пятница, 11.12.2015, 09:38 |
Сообщение № 13

Группа: Пользователи

Ранг: Новичок

Сообщений: 35


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Спасибо огромное Вам всем,

добавлю еще функцию zzz в столбец D,преимущество таких функций простота

с этим я вообще не силен, первый ответ проще для моего понимания, но и к этому постараюсь придти в скором времени.


Саморазвитие — это всё…

 

Ответить

Wasilich

Дата: Пятница, 11.12.2015, 12:01 |
Сообщение № 14

Группа: Друзья

Ранг: Старожил

Сообщений: 1232


Репутация:

326

±

Замечаний:
0% ±


2003

А еще так можно
[vba]

Код

Sub WWW()
  Range(«A:A»).Replace «-«, «», xlPart
End Sub

[/vba]

 

Ответить

 

Здравствуйте уважаемые любители и профессионалы программы excel, поделитесь пожалуйста может у кого то есть готовый макросик, задача в том, что есть прайс лист, в столбцах D и G нужно убирать определённое количество символов как справа так и слева , было бы очень удобно чтобы в макросе просто ставить количество символов и символы бы убирались с данных столбцов!  

Изменено: vikttur04.06.2021 10:13:24

 

evgeniygeo

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

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

#2

04.06.2021 08:42:38

Артём Москвитин,

Код
Sub aa()
s = ActiveCell
r = 2
l = 2
ActiveCell = Right(Left(s, Len(s) - r), Len(Left(s, Len(s) - l)) - l)
End Sub

Изменено: evgeniygeo04.06.2021 09:47:26

 

msi2102

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

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

#3

04.06.2021 09:07:10

Или так

Код
Sub Obrezka()
    sl = 2 'количество символов слева
    sr = 2 'количество символов справа
    ActiveCell.Value = Mid(ActiveCell.Value, sl + 1, Len(s) - sr - sl)
End Sub

А вообще если вы не разбираетесь в макросах, то зачем они Вам, можно просто формулами, например ЛЕВСИМВ(), ПРАВСИМВ(), ПСТР(), ДЛСТР(). Аналог выше приведенного макроса =ПСТР(K17;2+1;ДЛСТР(K17)-2-2)

Изменено: msi210204.06.2021 09:15:31

 

МатросНаЗебре

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

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

#4

04.06.2021 09:09:57

Ещё вариант, работающий по выделенному диапазону.

Код
Sub УбратьСимволы()
    Const sl = 2 'количество символов слева
    Const sr = 2 'количество символов справа
    Dim r As Range
    On Error Resume Next
        Set r = Selection.SpecialCells(xlCellTypeConstants)
    On Error GoTo 0
    If r Is Nothing Then Exit Sub
    
    Dim Application_Calculation As Long
    Application_Calculation = Application.Calculation
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    
    Dim t As Range
    Dim a As Variant
    Dim k As Long
    Dim y As Long
    Dim x As Integer
    For Each t In r.Areas
        If t.Cells.Count = 1 Then
            ReDim a(1 To 1, 1 To 1)
            a(1, 1) = t.Value
        Else
            a = t
        End If
        For y = 1 To UBound(a, 1)
        For x = 1 To UBound(a, 2)
            If a(y, x) <> "" Then
                k = Len(a(y, x)) - sr
                If k < 0 Then k = 0
                a(y, x) = Left(a(y, x), k)
                
                k = Len(a(y, x)) - sl
                If k < 0 Then k = 0
                a(y, x) = Right(a(y, x), k)
            End If
        Next
        Next
        t = a
    Next
    
    Application.Calculation = Application_Calculation
    Application.EnableEvents = True
End Sub

Изменено: МатросНаЗебре04.06.2021 09:14:10

 

msi2102

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

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

#5

04.06.2021 10:04:51

Или ещё так, символы удаляются в выделенном диапазоне видимых ячеек (если строка скрыта, то в ней не удаляются)

Код
Sub Obrezka()
    Dim sl As Byte, sr As Byte
    Dim r As Range, t As Range
    
    On Error Resume Next
    Set r = Selection.SpecialCells(xlVisible)
    sl = 2 'количество символов слева
    sr = 2 'количество символов справа
    For Each t In r
        If Len(t) > sl + sr Then t = Mid(t, sl + 1, Len(t.Value) - sr - sl) Else t = ""
    Next t
End Sub
 

Артём Москвитин

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

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

#6

04.06.2021 10:12:13

Код
Sub Obrezka()
    sl = 2
    sr = 2
    ActiveCell.Value = Mid(ActiveCell.Value, sl + 1, Len(s) - sr - sl)
End Sub

Жалуется на предпоследнюю строку, жёлтым почему то выделяет!

Изменено: Артём Москвитин04.06.2021 10:13:48

 

msi2102

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

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

#7

04.06.2021 10:16:27

Цитата
Артём Москвитин написал:
Жалуется на предпоследнюю строку, жёлтым почему то выделяет!

Просто число удаляемых символов меньше общего количества символов. Возьмите макрос из сообщения 5 там это учтено, если количество удаляемых символов больше то удаляется полностью

 

Спасибо огромное с этим разобрался, только непонятно почему при выполнении макроса в некоторых строках повляются решётки!

Изменено: vikttur05.06.2021 00:18:47

 

msi2102

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

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

#9

04.06.2021 10:49:57

Из за формата ячеек. К примеру после удалении символов остается 01.21, Excel понимает это как дату и автоматом ее меняет на 01.01.2021 (в зависимости от формата даты). Поэтому перед началом установите формат ячеек «Текст»
Замените макрос на такой

Код
Sub Obrezka()

    Dim sl As Byte, sr As Byte
    Dim r As Range, t As Range
    
    On Error Resume Next
    
    Set r = Selection.SpecialCells(xlCellTypeVisible)
    sl = 2 'количество символов слева
    sr = 2 'количество символов справа

    If r.Count = 1 Then
        If Len(Selection) > sl + sr Then Selection = Mid(Selection, sl + 1, Len(Selection) - sr - sl) Else Selection = ""
        Exit Sub
    End If
    For Each t In r
        If Len(t) > sl + sr Then t = Mid(t, sl + 1, Len(t.Value) - sr - sl) Else t = ""
    Next t
End Sub

Изменено: msi210204.06.2021 10:54:54

 

Артём Москвитин

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

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

#10

04.06.2021 12:26:38

Спасибо Вам огромное, всё работает! И спасибо всем кто откликнулся!!!

Изменено: vikttur05.06.2021 00:19:01

In this Article

  • Left Function
    • VBA Left Function n First Characters
    • VBA Left Function n First Characters in a Variable
    • VBA Left Function n First Characters in a Cell
    • VBA Left Function Trim off the Last Letter
    • VBA Left to Extract First Name
  • VBA Left$ Function vs Left Function

This tutorial will demonstrate how to use the Left VBA Function.

Left Function

The VBA Left function returns the first n characters from a string.

VBA Left Function n First Characters

The VBA Left function returns the first n characters from a string:

Sub LeftExample_1()
MsgBox Left("ABCDEFGHI", 4)        'Result is: "ABCD"
MsgBox Left("ABCDEFGHI", 2)        'Result is: "AB"
MsgBox Left("ABCDEFGHI", 1)        'Result is: "A"
MsgBox Left("ABCDEFGHI", 100)      'Result is: "ABCDEFGHI"
End Sub

VBA Left Function n First Characters in a Variable

As shown above, you can define a string simply by entering text surrounded by quotation marks. But the LEFT Function will also work with string variables. These examples will extract the first n characters from a string variable.

Sub LeftExample_2()
Dim StrEx As String 'Define a string variable

StrEx = "ABCDEFGHI"

MsgBox Left(StrEx, 4)   'Result is: "ABCD"
MsgBox Left(StrEx, 2)   'Result is: "AB"
MsgBox Left(StrEx, 1)   'Result is: "A"
MsgBox Left(StrEx, 100) 'Result is: "ABCDEFGHI"

End Sub

VBA Left Function n First Characters in a Cell

Strings can be defined in VBA code but also you can use values from cells. Read the value of a cell, keep it in a string variable, and extract n first characters from that Worksheet Cell value.

left cell value vba

Sub LeftExample_3()
Dim StrEx As String 'Define a string variable

'Read the value of cell A1 in worksheet Sheet1
StrEx = ThisWorkbook.Worksheets("Sheet1").Range("A1").Value

'For this example the value of cell A1 is "A bCDEFGHI"

MsgBox Left(StrEx, 4)   'Result is: "ABCD"
MsgBox Left(StrEx, 2)   'Result is: "AB"
MsgBox Left(StrEx, 1)   'Result is: "A"
MsgBox Left(StrEx, 100) 'Result is: "ABCDEFGHI"
End Sub

VBA Left Function Trim off the Last Letter

To remove letters from the end of a string, use the LEFT Function along with the LEN Function.

The VBA LEN function counts the number of characters in a string:

Len(StrEx)

By combining the functions, we can remove a certain number of characters from the end of the string:

Sub LeftExample_4()
Dim StrEx As String 'Define a string variable

StrEx = "ABCDEF"

MsgBox Left(StrEx, Len(StrEx))     'Result is: "ABCDEF"
MsgBox Left(StrEx, Len(StrEx) - 1) 'Result is: "ABCDE"
MsgBox Left(StrEx, Len(StrEx) - 2) 'Result is: "ABCD"
End Sub

To extract the first name from a string with a full name, use the Left Function along with the Instr Function.

The VBA Instr function searches for a substring inside a string and returns the position number of the substring.

InStr(StrEx, " ")

By combining the functions, we can extract the first word from a phrase:

Sub LeftExample_5()
Dim StrEx As String 'Define a string variable

StrEx = "Alexander Graham Bell"

MsgBox Left(StrEx, InStr(StrEx, " "))
'Result is: "Alexander "                   (notice the space at the end)

MsgBox Left(StrEx, InStr(StrEx, " ") - 1)
'Result is: "Alexander"                   (NO space at the end)

StrEx = "Leonardo da Vinci"

MsgBox InStr(StrEx, " ")
'Result is: 9 because space is found in position 9

MsgBox Left(StrEx, InStr(StrEx, " ") - 1)
'Result is: "Leonardo"
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

VBA Left$ Function vs Left Function

Both the Left and the Left$ function will return the same answer if the variable where the data is being returned to is declared as a string. However, if the variable has been declared as a variant, then the Left function is allowed to return NULL values whereas the Left$ function can only return string values.

If, for example, you are truing to return some data from an Access query, but the data returned is a NULL value, the Left$ function will return an error.

Have a look at the code below:

leftleft string

In the above example, even though our variable has been declared as a variant, the Left$ function prevents the variable being populated with the NULL value.

In the code below however, the variable is populated with the NULL value.

left left populate variant

String manipulation is a crucial skill in VBA programming. The skill level of a VBA developer is often determined by how well he/she can manipulate string data. Excel is very strong in mathematics operations and comes with loads of built-in calculation functions. But text manipulation is less straightforward and always requires some creativity and experience.

In this article, I am going to show you how to remove characters from strings. We’ll go through a series of common scenarios, and you’ll learn about how to tackle them with the Replace, Left, Right, Trim, and Instr VBA functions.

Remove All Occurrences of Specific Characters from Strings

The basic VBA skill to remove characters from a string is with the Replace method.

The basic  syntax of VBA Replace method you need to remember is:

Replace (inputString, findwhat, replace)

Example 1 is the most typical approach where the Replace method is used to remove all occurrences of specific character(s) from the input string.

Example 1 – The Most Common Approach, Case Sensitive

Here we want to remove all occurrence of “b” from variable input1,”aabbccAABBCC”, with the expected output of “aaccAABBCC”. In line 6 of the macro, the Replace method looks for “b” and replaces it with an empty string “”.

Sub removechar()
Dim input1 As String
Dim result As String
input1 = "aabbccAABBCC"
'to remove all occurrences of b from input string
result = Replace(input1, "b", "")
MsgBox result
End Sub

After running the macro, the answer is displayed in the message box:

aaccAABBCC

However, this approach with the Replace method is case sensitive. Only the lower case “b” characters were removed but not the “B”. We can modify our macro to automatically handle both lower and upper cases.

Example 2 – Simple Non-Case Sensitive Approach

We can enhance the macro to remove both the lower case “b” and upper case “B” from the input string. In macro removechar2 below, the character to be remove is defined in line 6. Then, in line 7, we first remove the lower case, and then in line 8 the upper case is also removed.

Sub removechar2()
Dim input1 As String
Dim remove1 As String
Dim result As String
input1 = "aabbccaabbcc"
remove1 = "b"	'this is the char to be removed
result = Replace(input1, LCase(remove1), "")
result = Replace(result, UCase(remove1), "")
MsgBox result
End Sub

aaccAACC

Remove the First n Occurrences of Specific Characters from Strings

Sometimes we want to remove only the first n occurrences of specific characters. This is easy to do by using the optional argument “count” of the VBA Replace method:

Syntax:

Replace (inputString, findwhat, replace, start_position, count)

The following macro “removechar3” removes the first 3 occurrences of “b” from input1 “aabbccaabbcc”. The expected result is “aaccaabcc”.

Sub removechar3()
Dim input1 As String
Dim remove1 As String
Dim result As String
input1 = "aabbccaabbcc"
remove1 = "b"
'remove the first 3 occurrences of "b" from input string
result = Replace(input1, remove1, "", , 3)
MsgBox result
End Sub

After running the macro, the answer is displayed in the message box:

aaccaabcc

Remove Characters from Left of Strings

Here we have a list of staff IDs in the format “X12345678” with 9 characters each. We want to remove the leading letter from every ID in the list.

List of staff IDs in Excel

We can use the Right function for this purpose. While each staff ID is 9 characters long, removing 1 character from the left is equivalent to outputting 8 (9 minus 1) characters from the right.

Sub removeLeft()
Dim cell As Range
Dim MyRange As Range
Dim tmp As String
Set MyRange = Selection  'this is your range of data
'loop through every cell in range and remove 1 char from left
For Each cell In MyRange.Cells
    tmp = cell.Value
    'output n - 1 characters from the right
    cell.Value = Right(tmp, Len(tmp) - 1)
Next
End Sub

However, after running the above macro, we realize that it did not fully meet our expectations (see the picture below). Because some of the original IDs have numeric parts with leading zeros. (Lines 1, 5 and 7), Excel is too clever and automatically trims those zeros. (e.g. 021 is treated by Excel as 21.) We want to make sure the zeros remain after the leading letters were removed.

Example with highlighted rows

We can achieve this by forcing Excel to treat numeric data as strings by adding a leading apostrophe to the result. For example, ‘021 will be treated by Excel as string. To achieve this, we can modify line 9 of the macro as shown below:

Sub removeLeft()
Dim cell As Range
Dim MyRange As Range
Dim tmp As String
Set MyRange = Selection  'this is your range of data
'loop through every cell in range and remove 1 char from left
For Each cell In MyRange.Cells
    tmp = cell.Value
    'output n-1 char from the right, and add apostrophe
    cell.Value = "'" &amp;amp; Right(tmp, Len(tmp) - 1)
Next
End Sub

IDs after processing in a list

Remove Characters from Right of Strings

Example 1 – Remove a Fixed Number of Characters from the Right

To remove a fixed number of characters x from the right of strings, you can use the LEFT function. The macro is almost the same as the macro above for removing characters from the left.

Sub removeRight()
Dim cell As Range
Dim MyRange As Range
Dim tmp As String
Set MyRange = Selection  'this is your range of data
'loop through every cell in range and remove 1 char from right
For Each cell In MyRange.Cells
    tmp = cell.Value
    'output n - 1 characters from the left
    cell.Value = Left(tmp, Len(tmp)-3)
Next
End Sub

Example 2 – Remove a Variable Number of Characters from the Right

If we want to remove characters from the right based on the variable position of a certain character(s), we can use the INSTR function in conjunction with the LEFT function.

Here we have a list of email addresses. We want to remove the domain names on the right of each address.

List of emails to process

We can find out the position of “@” with the following VBA statement, which in the case returns 9. Therefore, to remove the domain name, we have to extract the first 8 characters.

x = Instr("[email protected]","@")

The following macro loops through every cell in a selected range and removes the domain names.

Sub removeDomain()
Dim cell As Range
Dim MyRange As Range
Dim tmp As String

Set MyRange = Selection  'this is your range of data

'loop through every cell in range and remove characters after @
For Each cell In MyRange.Cells
    tmp = cell.Value
    '
    cell.Value = Left(tmp, InStr(tmp, "@") - 1)
Next
End Sub

Here’s a couple key takeaways to remember about removing characters from one side or the other of strings:

Scenario Function to be used
Remove characters from the Left RIGHT
Remove characters from the Right LEFT
Position specific remove INSTR (+ LEFT/RIGHT)

Removing Unwanted Spaces from Strings

There are two common scenarios where we want to remove unwanted spaces from strings:

  • Strings with leading and trailing spaces
  • Unwanted extra spaces within string (e.g. double spaces)

Remove Leading and Trailing Spaces from Strings

We can use the Trim function to remove leading and trailing spaces. In the example below we have an input string of  "   This is my data   " (line 5). The Trim function is used in line 6. The macro produces a message box to show a comparison of the input and output.

Sub removespace1()
Dim MyInput As String
Dim result As String
'here is the input string with leading and trailing spaces
MyInput = "   This is my data   "  
result = Trim(MyInput)  'remove leading and trailing spaces

'display result in msgbox
MsgBox "Original text: &amp;gt;" &amp;amp; MyInput &amp;amp; "&amp;lt;" &amp;amp; Chr(10) &amp;amp; _
    "Original length: " &amp;amp; Len(MyInput) &amp;amp; Chr(10) &amp;amp; _
    "Final text: &amp;gt;" &amp;amp; result &amp;amp; "&amp;lt;" &amp;amp; Chr(10) &amp;amp; _
    "Final length: " &amp;amp; Len(result)
End Sub

Messagebox showing before and after with spaces trimmed

Removing “extra spaces” is different from removing “all spaces.” You can visualize the difference here:

Example string with every single space removed

The macro removeAllUnwantedSpace below removes leading and trailing spaces as well as all unwanted repeated spaces. Pay special attention to line 10 to 12. The same statement must be run 3 times to ensure all repeated spaces are replaced with single spaces.

Sub removeAllUnwantedSpace()
Dim MyInput As String
Dim result As String
'here is the input string with unwanted spaces
MyInput = "   This     is    my   data   "
'first remove leading and trailing spaces
result = Trim(MyInput)  
'then replace double spaces with single space
'this step has to be repeated 3 times
result = Replace(result, "  ", " ")
result = Replace(result, "  ", " ")
result = Replace(result, "  ", " ")
'display result in msgbox
MsgBox "Original text: &amp;gt;" &amp;amp; MyInput &amp;amp; "&amp;lt;" &amp;amp; Chr(10) &amp;amp; _
    "Original length: " &amp;amp; Len(MyInput) &amp;amp; Chr(10) &amp;amp; _
    "Final text: &amp;gt;" &amp;amp; result &amp;amp; "&amp;lt;" &amp;amp; Chr(10) &amp;amp; _
    "Final length: " &amp;amp; Len(result)
End Sub

Messagebox showing spaces removed

Remove Numbers from String

Sometimes we want to remove all numeric characters from strings. We can achieve this with a For-Next loop to remove each of the digits from 0 to 9.

The custom VBA function below shows how to remove all numeric characters from an input string.

Function removenumbers(ByVal input1 As String) As String
Dim x
Dim tmp As String
tmp = input1
'remove numbers from 0 to 9 from input string
For x = 0 To 9
    tmp = Replace(tmp, x, "")
Next
'return the result string
removenumbers = tmp
End Function

You could also consider using a regular expression for a task like this.

Remove line breaks from string

Sometimes our data may contain line breaks with the strings and we want to remove them. A line break is actually an invisible character. We can simply use the VBA Replace function to remove them.

There are 2 types of line break characters. The most common one is Chr(10). But a less common one is Chr(13). Chr(13) is more common on the Mac. We can use a statement like this to remove such line break characters:

result = Replace(myString, Chr(10))
'or
result = Replace(Replace(myString, Chr(10)), Chr(13))

Remove Accented Characters from Names

There is a special situation that we want to remove the “accent” from accented characters in names. As an example, we have a list of French names below. In this case, we want to stick to “regular” English letters. Our expected result is shown on the right.

The macro “removeAccented” below loops through every cell in a selected range and replaces all accented characters with the corresponding regular English letters.

At the beginning of the macro, two constant strings were defined: “Accent” holds all accented characters; and “Normal” holds the corresponding regular English letters.

The For-Next loop (which begins in line 13 of code) loops through every accented character in the constant “Accent” and replaces with the alphabet in the same position in the constant “Normal”, e.g. “à” which is in position 1 of “Accent” will be replaced with “a” in position 1 of “Normal”.

Sub removeAccented()
Const Accent = _
"àáâãäåçèéêëìíîïðñòóôõöùúûüýÿŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝ"
Const Normal = _
"aaaaaaceeeeiiiidnooooouuuuyySZszYAAAAAACEEEEIIIIDNOOOOOUUUUY"
Dim cell As Range
Dim x As Integer
Dim tmp As String
'loop through each cell in selection
For Each cell In Selection.Cells
    tmp = cell.Value
    'loop through the constants, and replace 
    For x = 1 To Len(Accent)
        tmp = Replace(tmp, Mid(Accent, x, 1), Mid(Normal, x, 1))
    Next
    cell.Value = tmp
Next
End Sub

Conclusion

You can see in the above examples that text manipulation in Excel VBA indeed requires some creativity. There is no single universal approach to remove characters from strings which can serve all scenarios. The Replace function is the most important function to use. In some cases, you also have to apply the Left, Right, Trim, Instr functions.

The technique to loop through cells in a range has also been used in most of the examples above. You may refer to my article on this topic for more examples on the topic.

Tagged with: Characters, InStr, LEFT, Line Breaks, Replace, RIGHT, Spaces, String Processing, Strings, Substring, Trimming, VBA

Содержание

  1. Строковые функции (Visual Basic)
  2. Пример: UCase
  3. Пример: LTrim
  4. Пример: Mid
  5. Пример: Len
  6. Пример: InStr
  7. Пример: формат
  8. VBA Excel. Функции Left, Mid, Right (вырезать часть строки)
  9. Функция Left
  10. Функция Mid
  11. Функция Right
  12. Пример
  13. Примеры использования функций VBA
  14. Удаление ненужных символов
  15. Определение длины строки
  16. Сравнение и поиск строк
  17. Функция StrComp
  18. Функция InStr
  19. Разбиение строки
  20. Функция Left
  21. Функция Right
  22. Функция Mid
  23. Символы, которые нельзя ввести с клавиатуры
  24. Форматирование значений данных
  25. Именованные форматы для использования с функцией Format
  26. Символы-заполнители для создания пользовательских форматов

Строковые функции (Visual Basic)

В следующей таблице перечислены функции, предоставляемые Visual Basic в Microsoft.VisualBasic.Strings классе для поиска строк и управления ими. Их можно рассматривать как встроенные функции Visual Basic; то есть вам не нужно вызывать их как явные члены класса, как показано в примерах. В классе доступны System.String дополнительные методы, а в некоторых случаях — дополнительные.

Метод платформа .NET Framework Описание
Asc, AscW Возвращает значение, Integer представляющее код символа, соответствующий символу.
Chr, ChrW Возвращает знак, связанный с указанным кодом знака.
Filter Возвращает массив (с индексацией от нуля), который содержит подмножество массива типа String , выделяемое согласно указанным условиям фильтрации.
Format Возвращает строку, отформатированную в соответствии с инструкциями, содержащимися в формате выражения String .
FormatCurrency Возвращает выражение в формате денежной единицы с использованием символа денежной единицы, определенного в системной панели управления.
FormatDateTime Возвращает строковое выражение, представляющее значение даты и времени.
FormatNumber Возвращает выражение в формате числа.
FormatPercent Возвращает выражение в виде процента (умноженное на 100) с символом % в конце.
InStr Возвращает целое число, указывающее начальную позицию первого вхождения одной строки в другую.
InStrRev Возвращает позицию первого вхождения одной строки в другую, начиная с правого конца строки.
Join Возвращает строку, образуемую путем соединения нескольких подстрок, содержащихся в массиве.
LCase Возвращает строку или символ, преобразованные в нижний регистр.
Left Возвращает строку, содержащую указанное число знаков с левой стороны строки.
Len Возвращает целое число, содержащее количество символов в строке.
LSet Возвращает выровненную по левому краю строку запрашиваемой длины, содержащую указанную строку.
LTrim Возвращает строку, содержащую копию указанной строки без пробелов в начале.
Mid Возвращает строку, содержащую указанное число символов из строки.
Replace Возвращает строку, в которой указанная подстрока заданное число раз заменена другой подстрокой.
Right Возвращает строку, содержащую указанное число знаков с правой стороны строки.
RSet Возвращает выровненную по правому краю строку, содержащую указанную строку, настроенную под указанную длину.
RTrim Возвращает строку, содержащую копию указанной строки без пробелов в конце.
Space Возвращает строку, состоящую из указанного числа пробелов.
Split Возвращает одномерный массив (с индексацией от нуля), содержащий указанное число подстрок.
StrComp Возвращает -1, 0 или 1 в зависимости от результата сравнения строк.
StrConv Возвращает строку, преобразованную как указано.
StrDup Возвращает строку или объект, состоящие из указанного знака, повторенного определенное количество раз.
StrReverse Возвращает строку, содержащую те же знаки, что и в заданной строке, но в противоположном порядке.
Trim Возвращает строку, содержащую копию указанной строки без начальных или конечных пробелов.
UCase Возвращает строку или знак, содержащий указанную строку, преобразованную в верхний регистр.

С помощью оператора Option Compare можно указать, сравниваются ли строки с помощью порядка сортировки текста без учета регистра, определяемого языковым стандартом системы ( Text ) или внутренним двоичным представлением символов ( Binary ). Метод сравнения текста по умолчанию — Binary .

Пример: UCase

В данном примере функция UCase используется для возврата строки в верхнем регистре.

Пример: LTrim

В данном примере функция LTrim используется, чтобы убрать пробелы в начале, а функция RTrim — чтобы убрать пробелы в конце строковой переменной. Функция Trim в примере используется для удаления обоих типов пробелов.

Пример: Mid

В этом примере функция используется Mid для возврата указанного количества символов из строки.

Пример: Len

В данном примере Len используется для возврата числа знаков в строке.

Пример: InStr

В данном примере функция InStr используется для возврата позиции первого вхождения одной строки в другую.

Пример: формат

В данном примере показаны различные способы использования функции Format для форматирования значений с применением как форматов String , так и определенных пользователем форматов. Фактическое отображение системой разделителя даты ( / ), разделителя времени ( : и индикаторов AM/PM ( t и tt ) зависит от региональных параметров, применяемых кодом. При отображении времени и даты в среде разработки используется короткий формат времени и даты региональных установок кода.

Для языков, использующих 24-часовой формат, индикаторы AM/PM ( t и tt ) не отображаются.

Источник

VBA Excel. Функции Left, Mid, Right (вырезать часть строки)

Извлечение (вырезание) части строки с помощью кода VBA Excel из значения ячейки или переменной. Функции Left, Mid и Right, их синтаксис и аргументы. Пример.

Функция Left

Эта функция извлекает левую часть строки с заданным количеством символов.

Синтаксис функции Left:

Left(строка, длина)

  • строка — обязательный аргумент: строковое выражение, из значения которого вырезается левая часть;
  • длина — обязательный аргумент: числовое выражение, указывающее количество извлекаемых символов.

Если аргумент «длина» равен нулю, возвращается пустая строка. Если аргумент «длина» равен или больше длины строки, возвращается строка полностью.

Функция Mid

Эта функция извлекает часть строки с заданным количеством символов, начиная с указанного символа (по номеру).

Синтаксис функции Mid:

Mid(строка, начало, [длина])

  • строка — обязательный аргумент: строковое выражение, из значения которого вырезается часть строки;
  • начало — обязательный аргумент: числовое выражение, указывающее положение символа в строке, с которого начинается извлекаемая часть;
  • длина — необязательный аргумент: числовое выражение, указывающее количество вырезаемых символов.

Если аргумент «начало» больше, чем количество символов в строке, функция Mid возвращает пустую строку. Если аргумент «длина» опущен или его значение превышает количество символов в строке, начиная с начального, возвращаются все символы от начальной позиции до конца строки.

Функция Right

Эта функция извлекает правую часть строки с заданным количеством символов.

Синтаксис функции Right:

Right(строка, длина)

  • строка — обязательный аргумент: строковое выражение, из значения которого вырезается правая часть;
  • длина — обязательный аргумент: числовое выражение, указывающее количество извлекаемых символов.

Если аргумент «длина» равен нулю, возвращается пустая строка. Если аргумент «длина» равен или больше длины строки, возвращается строка полностью.

Пример

В этом примере будем использовать все три представленные выше функции для извлечения из ФИО его составных частей. Для этого запишем в ячейку «A1» строку «Иванов Сидор Петрович», из которой вырежем отдельные компоненты и запишем их в ячейки «A2:A4».

Источник

Примеры использования функций VBA

Удаление ненужных символов

Зачастую строки в программе содержат ненужные символы пробелов в конце или в начале строки, которые необходимо удалить, т.к. посторонние начальные или конечные пробелы в строке могут вызвать «неполадки» в работе программы.

В VBA имеются три функции, предназначенные для удаления начальных и конечных пробелов из строки: LTrim, RTrim, Trim. Следует иметь ввиду, что эти функции на самом деле не изменяют исходную строку, а возвращают копию строки с удаленными лишними пробелами.

Определение длины строки

Длину строки, как правило, надо знать при форматировании сообщений для пользователя или при форматировании строковых данных, вводимых процедурой в рабочий лист Excel или документ Word. VBA для этих целей использует функцию Len. В приведенным ниже листинге между знаками круглых скобок и словом присутствует по два пробела.

Следует быть внимательными со строками фиксированной длины. Поскольку строка фиксированной длины имеет всегда одну и ту же длину, функция Len всегда возвращает объявленную длину строки, независимо от фактической длины строки. Например, если в строковой переменной фиксированной длины StrokeName, имеющей длину 15 символов, фактически находится слово «солнце», то функция Len(StrokeName) возвратит результат 15. Чтобы в таком случае узнать фактическую длину строки (в нашем случае — 6), необходимо использовать следующую комбинацию функций: Len(Trim(StrokeName)).

Сравнение и поиск строк

В VBA имеются две функции, помогающих сравнивать строки: StrComp, InStr.

Функция StrComp

StrComp (String1, String2 [, Compare])

String1, String2 — любые два строковых выражения, которые необходимо сравнивать.

Compare — необязательный аргумент, может быть любой из следующих предопределенных констант (если он опускается, то используется текущая установка Option Compare):

  • vbBinaryCompare — бинарное сравнение двух строк;
  • vbTextCompare — текстовое сравнение двух строк;
  • vbDatabaseCompare — используется только в Microsoft Access.

При выполнении StrComp возвращается одно из следующих значений:

  • -1, если String1 меньше String2;
  • 0, если String1 и String2 равны;
  • 1, если String1 больше String2.

В вышеприведенном листинге в текстовом режиме сравниваются две строки: «Строка по умолчанию» и » Строка по умолчанию». Результат сравнения = 1, т.е. «Строка по умолчанию» больше, чем » Строка по умолчанию».

Поэкспериментируйте с разнообразными строками для лучшего понимания работы функции StrComp.

Функция InStr

Функция InStr дает возможность определить, содержит ли одна строка другую строку.

StrComp ([Start, ] String1, String2 [, Compare])

String1, String2 — любые допустимые строковые выражения. Функция проверяет содержится ли String1 в String2.

Compare — необязательный аргумент, может быть любой из следующих предопределенных констант (если он опускается, то используется текущая установка Option Compare):

  • vbBinaryCompare — бинарное сравнение двух строк;
  • vbTextCompare — текстовое сравнение двух строк;
  • vbDatabaseCompare — используется только в Microsoft Access.

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

InStr возвращает число, обозначающее положение символа в String1, где было обнаружено String2. Если InStr не находит String2 в String1, то возвращается 0. Если String1 (или String2) имеет значение Null, то функция также возвращает Null.

Разбиение строки

Иногда возникает необходимость разбиения строки на составляющие части. В VBA эту задачу решают три функции: Left, Right, Mid.

Функция Left

Left (String, Length)

String — любое допустимое строковое выражение.

Length — любое численное значение.

Функция возвращает копию String, начиная с первого символа и включая количество символов, заданных с помощью Length. Если Length является числом, большим, чем фактическая длина String, то возвращается все строковое выражение String.

Функция Right

Right (String, Length)

String — любое допустимое строковое выражение.

Length — любое численное значение.

Функция возвращает копию String, начиная с последнего символа и включая справа налево количество символов, заданных с помощью Length. Если Length является числом, большим, чем фактическая длина String, то возвращается все строковое выражение String. Функция Right всегда копирует символы от конца строки к ее началу.

Функция Mid

Mid (String, Start, [, Length])

String — любое допустимое строковое выражение.

Length, Start — любые численные значения.

Функция Mid возвращает копию String, начиная с положения символа в String, задаваемого с помощью аргумента Start . Необязательный аргумент Length определяет количество копируемых в Mid символов из String. Если Start содержит большее число, чем фактическая длина String, то возвращается пустая строка.

Символы, которые нельзя ввести с клавиатуры

Зачастую случается, что надо ввести какой-либо символ, для которого отсутствует клавиша на клавиатуре (например, символ копирайта). Другая ситуация — когда надо в строку включить служебный символ VBA (самый распространенный случай — включение двойных кавычек).

Чтобы включить в строку символы, которые невозможно ввести с клавиатуры, или которые имеют особое значение для VBA, используется функция Chr.

Charcode — любое численное выражение, являющееся допустимым кодом для набора символов, используемого компьютером. Должен быть целым числом от 0 до 255.

Функция Chr принимает код отдельного символа в качестве аргумента и возвращает строку, содержащую соответствующий этому коду символ. Данная функция использована в вышеприведенных листингах для перевода строки при выводе сообщения на экран Chr (13).

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

  • vbCr — символ возврата каретки. Эквивалент Chr(13)
  • vbLf — символ смещения на одну строку. Эквивалент Chr(10)
  • vbCrLf — символ возврата каретки+смещения на одну строку. Эквивалент Chr(13)+ Chr(10)
  • vbTab — символ табуляции. Эквивалент Chr(9)

Для просмотра списка код-символ надо открыть справочную систему VBA и по запросу «character sets» будет представлена соответствующая таблица.


Форматирование значений данных

Очень часто формат данных на выходе программы по тем или иным причинам нас не совсем устраивает. Эту задачу решает функция Format.

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

Format (Expression [, Format[, Firstdayofweek [, Firstweekofyear]]])

Expression — любое допустимое выражение (обязательный аргумент).

Format — допустимое выражение именованного или определенного пользователем формата.

Firstdayofweek — константа, которая определяет первый день недели.

Firstweekofyear — константа, которая определяет первую неделю года.

Чтобы использовать функцию Format, надо либо задать предопределенный формат, либо создать образ определенного формата, используя символы-заполнители.

Именованные форматы для использования с функцией Format

Именованный формат Действие
General Date Форматирует информацию о дате и времени в последовательное число даты, используя установки формата даты и времени для данного компьютера.
Long Date Форматирует в последовательной дате только часть, содержащую дату, используя установки компьютера для Long-формата даты.
Medium Date Форматирует в последовательной дате только часть, содержащую дату, используя установки компьютера для Medium-формата даты.
Short Date Форматирует в последовательной дате только часть, содержащую дату, используя установки компьютера для Short-формата даты.
Long Time Форматирует в последовательной дате только часть, содержащую время, используя установки компьютера для Long-формата времени.
Medium Time Форматирует в последовательной дате только часть, содержащую время, используя установки компьютера для Medium -формата времени.
Short Time Форматирует в последовательной дате только часть, содержащую время, используя установки компьютера для Short -формата времени.
General Number Форматирует число в строку без каких-либо особых символов.
Currency Форматирует число с символом денежной единицы, разделителем тысяч и только двумя десятичными разрядами.
Fixed Форматирует число так, чтобы всегда была, по крайней мере, одна цифра перед десятичным разделителем и, по крайней мере, две цифры после него.
Standart Форматирует число с разделителем тысяч так, чтобы была, по крайней мере, одна цифра перед десятичным разделителем и, по крайней мере, две цифры после него.
Percent Форматирует число как процентное отношение, умножая его на 100 и добавляя символ процента.
Scientific Форматирует число в обычный экспоненциальный формат.
Yes/No Возвращается строка «Да» если форматируемое число ненулевое, иначе — «Нет».
True/False Возвращается строка «Истина» если форматируемое число ненулевое, иначе — «Ложь».
On/Off Возвращается строка «Вкл» если форматируемое число ненулевое, иначе — «Выкл».

Символы-заполнители для создания пользовательских форматов

Символ-заполнитель Действие (в качестве примера используется число 1234.45)
0 Цифровой символ, отображает цифру, если таковая находится в этой позиции, или 0, если — нет. Можно использовать символ 0 для отображения начальных нулей для целых чисел и конечных нулей в десятичных дробях: 00000.000 отображает 01234.450
# Цифровой символ, отображает цифру, если таковая находится в этой позиции, иначе — не отображает ничего. Символ-заполнитель # эквивалентен 0, кроме того, что начальные и конечные нули не отображаются: #####.### отображает 1234.45
$ Отображает знак доллара: $###,###.00 отображает $1 234,45
. Десятичный символ-заполнитель, отображает десятичную точку в обозначенной позиции в строке символов-заполнителей 0: #.##.## отображает 1234.45
% Символ процента, умножает значение на 100 и добавляет знак процента в позицию, указанную символами-заполнителями 0:#.#0.00% отображает число 0.12345 как 12.35% (происходит округление)
, Разделитель тысяч, добавляет запятые как разделители тысяч в строках символов-заполнителей 0 и #: ###,###,###.00 отображает 1 234,45
E- e- Отображает значение в экспоненциальном формате со знаком порядка только для отрицательных значений: #.####E-00 отображает 1.23445Е03
E+ e+ Отображает значение в экспоненциальном формате со знаком порядка как для отрицательных, так и для положительных значений: #.####E+00 отображает 1.23445Е+03
/ Отделяет день, месяц и год для форматирования значений дат.
m Указывает, как отображать месяцы в датах: m отображает 1, mm — 01, mmm — янв, mmmm — Январь
d Указывает, как отображать дни в датах: d отображает 1, dd — 01, ddd — Вс, dddd — воскресенье
y Отображает день года как число от 1 до 366
yy Указывает, как отображать годы в датах: yy — 66, yyyy — 1966
q Отображает квартал года как число от 1 до 4
w Отображает день недели как число (1 — воскресенье)
ww Отображает неделю года как число от 1 до 54
: Отделяет часы, минуты и секунды в значениях формата времени: hh:mm:ss — 01:01:01, h:m:s — 1:1:1
h Указывает, как отображать часы: hh — 01, h — 1
m Указывает, как отображать минуты: mm — 01, m — 1
s Указывает, как отображать секунды: ss — 01, s — 1
AM/PM Отображает время в 12-часовом формате времени с добавленными АМ или РМ
@ Символьный заполнитель, отображает пробел, если не имеется соответствующего символа в форматируемой строке.
Отображает все символы в верхнем регистре.
> Отображает все символы в нижнем регистре.

В начало страницы

В начало страницы

Источник

Excel VBA Left

VBA Left is also one of the worksheet functions categorized under the text functions used in VBA with the application.worksheet method. It returns the specified number of characters from the left part of the string.

Some of the excel functionsExcel functions help the users to save time and maintain extensive worksheets. There are 100+ excel functions categorized as financial, logical, text, date and time, Lookup & Reference, Math, Statistical and Information functions.read more are integrated with VBA as well. Of all the many text functions, VBA LEFT is one of those functions we use quite often than other formulas.

If you know the excel LEFT functionThe left function returns the number of characters from the start of the string. For example, if we use this function as =LEFT ( «ANAND»,2), the result will be AN.read more, then the VBA LEFT function is the same. It can extract the characters from the left side of the string or the value given by the user.

VBA Left Function

The syntax of the LEFT function is the same as in the worksheet function.

VBA Left

It has two arguments.

  • String: This is nothing but the value or cell referenceCell reference in excel is referring the other cells to a cell to use its values or properties. For instance, if we have data in cell A2 and want to use that in cell A1, use =A2 in cell A1, and this will copy the A2 value in A1.read more. From this value, we are looking to chop the characters.
  • Length: How many characters do you want to extract from the supplied string? It should be a numerical value.
Table of contents
  • Excel VBA Left
    • How to use Excel VBA Left Function?
      • Example #1
      • Example #2 – LEFT with Other Functions
    • Things to Remember
    • Recommended Articles

How to use Excel VBA Left Function?

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

Example #1

Assume you have the word “Sachin Tendulkar,” and you want only the first 6 characters from this word. We will show how to extract from the left using the LEFT function in VBA.

Step 1: Create a macro name and define the variable as a string.

Code:

Sub Left_Example1()
     
    Dim MyValue As String

End Sub

VBA Left Function Example 1

Step 2: Now, assign a value to this variable.

Code:

Sub Left_Example1()

    Dim MyValue As String

    MyValue =

End Sub

VBA Left Function Example 1-1

Step 3: Open the LEFT function.

Code:

Sub Left_Example1()

    Dim MyValue As String

    MyValue = Left(

End Sub

VBA Left Function Example 1-2

Step 4: The first argument is to tell what is the string or value. Our value here is “Sachin Tendulkar.”

Code:

Sub Left_Example1()

    Dim MyValue As String

    MyValue = Left("Sachin Tendulkar",

End Sub

VBA Left Function Example 1-3

Step 5: Length is nothing but how many characters we need from the left. We need 6 characters.

Code:

Sub Left_Example1()

    Dim MyValue As String

    MyValue = Left("Sachin Tendulkar", 6)

End Sub

VBA Left Function Example 1-4

Step 6: Show the value in the VBA MsgBoxVBA MsgBox function is an output function which displays the generalized message provided by the developer. This statement has no arguments and the personalized messages in this function are written under the double quotes while for the values the variable reference is provided.read more.

Code:

Sub Left_Example1()

    Dim MyValue As String

    MyValue = Left("Sachin Tendulkar", 6)

    MsgBox MyValue

End Sub

VBA Left Function Example 1-5

Step 7: Run the macro using the F5 key or manually through a run option to get the result in a message box.

VBA Left Function Example 1-6

Output:

VBA Left Function Example 1-7

Instead of showing the result in a message box, we can store this result in one of the cells in our Excel worksheet. Then, we need to add the cell reference and variable value.

Code:

Sub Left_Example1()

    Dim MyValue As String

    MyValue = Left("Sachin Tendulkar", 6)

    Range("A1").Value = MyValue

End Sub

VBA Left Function Example 1-8

We will get the value in cell A1 if you run this code.

VBA Left Function Example 1-9

Example #2 – LEFT with Other Functions

In the above case, we have directly supplied the length of the characters we need from the left direction, but this is more suitable for one or two values. For example, assume the list of values you have in your Excel sheet below.

VBA Left Function Example 2

In each case, first-name characters are different. Therefore, we cannot directly specify the number of characters we need from each name.

That is where the beauty of other functions will come into the picture. For example, we can use the “VBA Instr” function to dynamically supply the number of characters.

In the above names, we need all the characters from the left until we reach the space character. So, the Instr function can return those many characters.

Step 1: Start an excel macroA macro in excel is a series of instructions in the form of code that helps automate manual tasks, thereby saving time. Excel executes those instructions in a step-by-step manner on the given data. For example, it can be used to automate repetitive tasks such as summation, cell formatting, information copying, etc. thereby rapidly replacing repetitious operations with a few clicks.
read more
name and define a variable as a string.

Code:

Sub Left_Example2()

    Dim FirstName As String

End Sub

VBA Left Function Example 2-1

Step 2: Assign the value to the variable through the LEFT function.

Code:

Sub Left_Example2()

    Dim FirstName As String

    FirstName = Left(

End Sub

VBA Left Function Example 2-2

Step 3: Here, we need to refer to the cell to get the value from the cells. So write the code as CELLE (2,1).Value.

Code:

Sub Left_Example2()

    Dim FirstName As String

    FirstName = Left(Cells(2,1).Value,

End Sub

Visual Basic Application Example 2-3

Step 4: The next thing is how many characters we need. After applying the LEFT function, do not manually enter the characters’ length. Apply the Instr function.

Code:

Sub Left_Example2()

    Dim FirstName As String

    FirstName = Left(Cells(2, 1).Value, InStr(1, Cells(2, 1).Value, " "))

End Sub

Visual Basic Application Example 2-4

Step 5: Store this result in the B2 cell. So the code is CELLS (2,2).Value = FirstName.

Code:

Sub Left_Example2()

    Dim FirstName As String

    FirstName = Left(Cells(2, 1).Value, InStr(1, Cells(2, 1).Value, " "))
 
    Cells(2, 2).Value = FirstName

End Sub

Visual Basic Application Example 2-5

Step 6: Run this code manually, or through F5, we will get the first name.

Visual Basic Application Example 2-6

We got the first name for one name, but we also have several others. So, if we cannot write 100 lines of code to extract, then how do we extract?

It is where the beauty of loops comes into the picture. Below is the loop code, which can eliminate all the unwanted steps and do the job in 3 lines.

Code:

Sub Left_Example2()

    Dim FirstName As String
    Dim i As Integer

    For i = 2  To 9
    FirstName = Left(Cells(i, 1).Value, InStr(1, Cells(i, 1).Value, " ") - 1)
    Cells(i, 2).Value = FirstName
    Next i

 End Sub

Visual Basic Application Example 2-7

Note: The Instr function also returns space character, so we need to minus 1 from the Instr result.

If you run this code, we will get the first name values.

Visual Basic Application Example 2-8

Output:

Example 2-9

Things to Remember

  • We can extract the LEFT function only from the left.
  • VBA Instr function finds the position of the supplied character in the string.

Recommended Articles

This article has been a guide to VBA Left Function. Here, we learn how to use the Left function to extract the characters from the left side of the string, along with some examples and a downloadable Excel template. Below are some useful Excel articles related to VBA: –

  • Select a Range in VBA
  • Excel VBA Functions
  • VBA DIR Function
  • VBA Select Case

Понравилась статья? Поделить с друзьями:
  • Excel vba удалить символы в строке
  • Excel vba удалить последний символ строки
  • Excel vba удалить перенос строки
  • Excel vba удалить массив строк
  • Excel vba удалить листы кроме активного