Замена подстроки, содержащейся в текстовых значениях ячеек указанного диапазона, другой подстрокой с помощью метода Range.Replace из кода VBA Excel.
Range.Replace – это метод, который находит по шаблону подстроку в содержимом ячеек указанного диапазона, заменяет ее на другую подстроку и возвращает значение типа Boolean.
Метод имеет некоторые особенности, которые заключаются в следующем:
- при присвоении булева значения, возвращаемого методом Range.Replace, переменной, необходимо список параметров (аргументов) метода заключать в круглые скобки;
- если метод используется без присвоения возвращаемого значения переменной, параметры должны быть указаны без заключения их в круглые скобки.
Синтаксис и параметры метода
Синтаксис
Синтаксис при замене подстроки и присвоении переменной возвращаемого значения типа Boolean:
variable = expression.Replace(What, Replacement, [LookAt], [SearchOrder], [MatchCase], [MatchByte], [SearchFormat], [ReplaceFormat])
Синтаксис при замене подстроки без присвоения переменной возвращаемого значения:
expression.Replace What, Replacement, [LookAt], [SearchOrder], [MatchCase], [MatchByte], [SearchFormat], [ReplaceFormat]
- variable – переменная (тип данных — Boolean);
- expression – выражение, возвращающее объект Range.
Параметры
Параметр | Описание |
---|---|
What | Искомая подстрока или шаблон*, по которому ищется подстрока в диапазоне ячеек. Обязательный параметр. |
Replacement | Подстрока, заменяющая искомую подстроку. Обязательный параметр. |
LookAt | Указывает правило поиска по полному или частичному вхождению искомой подстроки в текст ячейки: 1 (xlWhole) – поиск полного вхождения искомого текста; 2 (xlPart) – поиск частичного вхождения искомого текста. Необязательный параметр. |
SearchOrder | Задает построчный или постолбцовый поиск: 1 (xlByRows) – построчный поиск; 2 (xlByColumns) – постолбцовый поиск. Необязательный параметр. |
MatchCase | Поиск с учетом или без учета регистра: 0 (False) – поиск без учета регистра; 1 (True) – поиск с учетом регистра. Необязательный параметр. |
MatchByte | Способы сравнения двухбайтовых символов: 0 (False) – двухбайтовые символы сопоставляются с однобайтовыми эквивалентами; 1 (True) – двухбайтовые символы сопоставляются только с двухбайтовым символами. Необязательный параметр. |
SearchFormat | Формат поиска. Необязательный параметр. |
ReplaceFormat | Формат замены. Необязательный параметр. |
* Смотрите знаки подстановки для шаблонов, которые можно использовать в параметре What.
Работа метода в VBA Excel
Исходная таблица для всех примеров:
Пример 1
Примеры записи строк кода с методом Range.Replace и поиском по частичному совпадению подстроки с содержимым ячейки:
Sub Primer1() ‘Запись 1: Range(«A1:C6»).Replace «Лиса», «Рысь», 2 ‘Запись 2: Range(«A1:C6»).Replace What:=«Лиса», Replacement:=«Рысь», LookAt:=2 ‘Запись 3: If Range(«A1:C6»).Replace(«Лиса», «Рысь», 2) Then End If ‘Запись 4: Dim a a = Range(«A1:C6»).Replace(«Лиса», «Рысь», 2) End Sub |
Результат выполнения любого из вариантов кода примера 1:
Пример 2
Поиск по шаблону с использованием знаков подстановки и по полному совпадению подстроки с содержимым ячейки:
Sub Primer2() Range(«A1:C6»).Replace «Ли??», «Рысь», 1 End Sub |
Обратите внимание, что слово «Лиса» заменено словом «Рысь» не во всех ячейках. Это произошло из-за того, что мы использовали параметр LookAt:=1 – поиск полного вхождения искомого текста в содержимое ячейки.
Dim numberColumn, phraseColumn, titleColumn, nFirstRow, nLastRow As Integer Dim currentPosition As Long Dim currentRow As Integer Sub DoEverything() Call DoInit 'x = Application.CountA(Rows("35:35")) 'x = Application.WorksheetFunction.CountA(ActiveWorksheet.Columns("A")) Worksheets(1).Copy After:=Worksheets(Worksheets.Count) Set currentWorksheet = Worksheets(Worksheets.Count) currentWorksheet.Activate currentWorksheet.Name = "Технические данные" currentColumns = Application.WorksheetFunction.CountA(currentWorksheet.Rows("1")) currentColumns = currentColumns + 1 currentWorksheet.Cells(1, currentColumns - 1).Copy currentWorksheet.Cells(1, currentColumns) currentWorksheet.Cells(1, currentColumns).Value = "Список фраз" 'fusion outText = "" completedRow = nFirstRow counter = CStr(currentWorksheet.Cells(completedRow, numberColumn)) For currentRow = completedRow To nLastRow If CStr(currentWorksheet.Cells(currentRow, numberColumn)) = CStr(counter) Then If outText = "" Then outText = currentWorksheet.Cells(currentRow, phraseColumn).Value Else outText = outText & ", " & currentWorksheet.Cells(currentRow, phraseColumn).Value End If Else 'counter = counter + 1 counter = CStr(currentWorksheet.Cells(currentRow, numberColumn)) currentWorksheet.Cells(completedRow, currentColumns).Value = outText completedRow = currentRow outText = currentWorksheet.Cells(currentRow, phraseColumn).Value End If If currentRow = nLastRow Then If outText = "" Then outText = currentWorksheet.Cells(currentRow, phraseColumn).Value Else outText = outText & ", " & currentWorksheet.Cells(currentRow, phraseColumn).Value End If currentWorksheet.Cells(completedRow, currentColumns).Value = outText End If Next currentRow 'removal completedRow = nFirstRow counter = CStr(currentWorksheet.Cells(completedRow, numberColumn)) For currentRow = completedRow To nLastRow If CStr(currentWorksheet.Cells(currentRow, numberColumn)) <> CStr(counter) Then counter = CStr(currentWorksheet.Cells(currentRow, numberColumn)) completedRow = completedRow + 1 nLastRow = nLastRow - (currentRow - 1 - completedRow) If currentRow > completedRow Then currentWorksheet.Range(Rows(completedRow).EntireRow, Rows(currentRow - 1).EntireRow).Delete End If ' For j = currentRow - 1 To completedRow Step -1 ' currentWorksheet.Rows(j).EntireRow.Delete ' Next j currentRow = completedRow End If Next currentRow 'New column Заголовок ТЗ nLastRow = currentWorksheet.Cells(Rows.Count, numberColumn).End(xlUp).Row currentWorksheet.Columns(1).Insert Shift:=xlToLeft currentWorksheet.Cells(1, 2).Copy currentWorksheet.Cells(1, 1) currentWorksheet.Cells(1, 1).Value = "Заголовок ТЗ" currentWorksheet.Columns(1).ColumnWidth = 62 currentWorksheet.Range(currentWorksheet.Cells(1, 1), currentWorksheet.Cells(nLastRow, 1)).Interior.Color = 11910834 currentColumns = currentColumns + 1 titleColumn = 3 For currentColumn = 3 To currentColumns If currentWorksheet.Cells(1, currentColumn).Value = "Название" Then titleColumn = currentColumn End If Next currentColumn For currentRow = nFirstRow To nLastRow 'currentWorksheet.Cells(currentRow, 2).Copy currentWorksheet.Cells(currentRow, 1) currentWorksheet.Cells(currentRow, 1).Value = "ТЗ №" & CStr(currentWorksheet.Cells(currentRow, 2).Value) & " для страницы - " & CStr(currentWorksheet.Cells(currentRow, titleColumn).Value) Next currentRow End Sub Sub DoInit() numberColumn = 1 phraseColumn = 2 titleColumn = 3 nFirstRow = 2 nLastRow = ActiveSheet.Cells(Rows.Count, numberColumn).End(xlUp).Row End Sub Sub macrzamena() 'Замена символов Columns("A:A").Select Selection.Replace What:=",", Replacement:="ггггг", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.Replace What:=":", Replacement:="ааа", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.Replace What:="~?", Replacement:="ааа", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.Cells(1).Select ExecuteExcel4Macro ("SOUND.PLAY(,""C:WindowsMediattt.wav"")") 'Замена символов End Sub
0 / 0 / 0 Регистрация: 20.09.2014 Сообщений: 7 |
|
1 |
|
Заменить один символ на другой на всех листах рабочей книги20.09.2014, 22:45. Показов 20603. Ответов 20
Доброго времени суток! В excel нужен макрос замены одного символа на другой (к примеру замена буквы «ё» на букву «е» на всех листах) , устал пользоваться комбинацией Ctrl+H на каждом листе, хочется кнопочкой)
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
21.09.2014, 01:21 |
2 |
Зачем же на каждом? Меняйте сразу во всей книге — поищите там в подменюшках…
0 |
призрак 3261 / 889 / 119 Регистрация: 11.05.2012 Сообщений: 1,702 Записей в блоге: 2 |
|
21.09.2014, 11:56 |
3 |
Hugo121, «во всей книге» — это не для каждой версии.
0 |
1 / 1 / 1 Регистрация: 02.05.2014 Сообщений: 20 |
|
22.09.2014, 00:02 |
4 |
В 2010) Миниатюры
0 |
Заблокирован |
||||||
22.09.2014, 01:12 |
5 |
|||||
Решение Без разницы какая версия, у меня код состоит из кода.. Кликните здесь для просмотра всего текста
Вложения
1 |
Заблокирован |
|
22.09.2014, 01:18 |
6 |
Кликните здесь для просмотра всего текста ps: версия Excel 2003
0 |
призрак 3261 / 889 / 119 Регистрация: 11.05.2012 Сообщений: 1,702 Записей в блоге: 2 |
|
22.09.2014, 01:58 |
7 |
Без разницы какая версия, у меня код состоит из кода.. реально ржач.
j = Split(s, «-«) функция Split была в VBA не всегда.
0 |
Заблокирован |
||||
22.09.2014, 02:15 |
8 |
|||
функция Split была в VBA не всегда. да причем здесь ваши догадки ?.. это базовая функция Split и Join а результат замены..
который заменяет символы во всех страницах книги.. ТС, так и подумает, да это не заработает можно не проверять, а я, зря старался
0 |
призрак 3261 / 889 / 119 Регистрация: 11.05.2012 Сообщений: 1,702 Записей в блоге: 2 |
|
22.09.2014, 02:26 |
9 |
а причём тут «догадки»? ну и ещё на пару моментов Вы наплевали.
Remarks поэтому:
это не заработает можно не проверять нет-нет, ничего подобного! Добавлено через 2 минуты
0 |
Заблокирован |
|
22.09.2014, 02:28 |
10 |
Да параметры: LookAt, SearchOrder, MatchCase надо было проставить
0 |
призрак 3261 / 889 / 119 Регистрация: 11.05.2012 Сообщений: 1,702 Записей в блоге: 2 |
|
22.09.2014, 02:29 |
11 |
а это?
в файле Excel бывают не только рабочие листы
0 |
Заблокирован |
|
22.09.2014, 02:35 |
12 |
Будем надеятся, ТС нас рассудет, будут ли у его книги и рабочие и нерабочие листы Добавлено через 1 минуту
0 |
призрак 3261 / 889 / 119 Регистрация: 11.05.2012 Сообщений: 1,702 Записей в блоге: 2 |
|
22.09.2014, 02:51 |
13 |
мог бы.
Maiki, у Вас какая версия Excel? ответа пока нет.
0 |
Заблокирован |
|
22.09.2014, 02:58 |
14 |
Да уж… жаль, и прослетить за ним трудно, у него всего один вопрос был на форуме
0 |
призрак 3261 / 889 / 119 Регистрация: 11.05.2012 Сообщений: 1,702 Записей в блоге: 2 |
|
22.09.2014, 03:09 |
15 |
пост #2 — тоже вполне себе ответ.
0 |
Заблокирован |
|
22.09.2014, 03:13 |
16 |
Кликните здесь для просмотра всего текста
поищите там в подменюшках… Ну да, лучший ответ, поучитесь как надо отвечать ))
0 |
призрак 3261 / 889 / 119 Регистрация: 11.05.2012 Сообщений: 1,702 Записей в блоге: 2 |
|
22.09.2014, 03:30 |
17 |
умение искать ответы самостоятельно — самое главное. Добавлено через 1 минуту
0 |
Заблокирован |
|
22.09.2014, 03:34 |
18 |
Ну вот давайте, расскажите об несовместимостях версий,
0 |
призрак 3261 / 889 / 119 Регистрация: 11.05.2012 Сообщений: 1,702 Записей в блоге: 2 |
|
22.09.2014, 03:38 |
19 |
неее, не надо меня «подначивать». зачем писать ненужное?
0 |
0 / 0 / 0 Регистрация: 20.09.2014 Сообщений: 7 |
|
22.09.2014, 13:08 [ТС] |
20 |
Отличный код, спасибо антихакер, на 2010 работает замечательно, а как его поправить, чтобы окошка не выскакивало? Мне необходимо, чтобы по нажатию на кнопку автоматически менялся определенный символ на другой.
0 |
Содержание
- Excel макрос замена символа
- Excel функция REPLACE (VBA)
- Описание
- Синтаксис
- Аргументы или параметры
- Возвращаемое значение
- Применение
- Тип функции
- Пример (как функция VBA)
- Функция Replace
- Синтаксис
- Параметры
- Возвращаемые значения
- Замечания
- См. также
- Поддержка и обратная связь
- Excel макрос замена символа
- VBA Replace Function to Replace Characters in a String
- The VBA Tutorials Blog
- Introduction — VBA Replace
- Example — VBA Replace
- Tutorial — VBA Replace
- Replace first 2 instances in a string
- Replace last occurrence of substring in a string
- Replace starting at the 10th character
- Replace starting at the 10th character and keep whole string
- Application Ideas — VBA Replace
Excel макрос замена символа
Добрый день всем присутствующим!
Столкнулся со следующей проблемой.
Не могу поменять через макрос начало формулы «уЕСЛИ. » на «=ЕСЛИ. «, чтобы формула заработала. Посредством Ctrl+H всё прекрасно работает, но, даже записав через рекодер, с помощью макроса замена не происходит.
Должно быть, какая-то хитрость в настройках, не позволяющая производить замены в сложных формулах.
У меня просто большущий объём таких формул по разным книгам — уже невозможно что-то назад откатить. Да и, честно сказать, любопытство появилось вокруг этого секрета.
Позвольте спросить, есть ли возможность что-то добавить в макросе, дабы обойти этот «запрет» замены, или остаётся только вручную через Ctrl+H?
Добрый день всем присутствующим!
Столкнулся со следующей проблемой.
Не могу поменять через макрос начало формулы «уЕСЛИ. » на «=ЕСЛИ. «, чтобы формула заработала. Посредством Ctrl+H всё прекрасно работает, но, даже записав через рекодер, с помощью макроса замена не происходит.
Должно быть, какая-то хитрость в настройках, не позволяющая производить замены в сложных формулах.
У меня просто большущий объём таких формул по разным книгам — уже невозможно что-то назад откатить. Да и, честно сказать, любопытство появилось вокруг этого секрета.
Позвольте спросить, есть ли возможность что-то добавить в макросе, дабы обойти этот «запрет» замены, или остаётся только вручную через Ctrl+H?
Сообщение Добрый день всем присутствующим!
Столкнулся со следующей проблемой.
Не могу поменять через макрос начало формулы «уЕСЛИ. » на «=ЕСЛИ. «, чтобы формула заработала. Посредством Ctrl+H всё прекрасно работает, но, даже записав через рекодер, с помощью макроса замена не происходит.
Должно быть, какая-то хитрость в настройках, не позволяющая производить замены в сложных формулах.
У меня просто большущий объём таких формул по разным книгам — уже невозможно что-то назад откатить. Да и, честно сказать, любопытство появилось вокруг этого секрета.
Позвольте спросить, есть ли возможность что-то добавить в макросе, дабы обойти этот «запрет» замены, или остаётся только вручную через Ctrl+H?
Спасибо. Автор — mick-77
Дата добавления — 12.05.2016 в 12:14
Источник
Excel функция REPLACE (VBA)
В этом учебном материале вы узнаете, как использовать Excel функцию REPLACE (в VBA) с синтаксисом и примерами.
Описание
Microsoft Excel функция REPLACE заменяет последовательность символов в строке другим набором символов.
Функция REPLACE — это встроенная в Excel функция, которая относится к категории строковых / текстовых функций. Её можно использовать как функцию VBA в Excel.
В качестве функции VBA вы можете использовать эту функцию в коде макроса, который вводится через редактор Microsoft Visual Basic Editor. Если вы ищете версию функции ЗАМЕНИТЬ для рабочего листа, прочтите страницу функции ЗАМЕНИТЬ (WS), поскольку она имеет другой синтаксис.
Синтаксис
Синтаксис функции REPLACE в Microsoft Excel:
Аргументы или параметры
Значение параметра | Описание |
---|---|
vbBinaryCompare | Двоичное сравнение |
vbTextCompare | Текстовое сравнение |
Возвращаемое значение
Функция REPLACE возвращает строковое значение.
Применение
- Excel для Office 365, Excel 2019, Excel 2016, Excel 2013, Excel 2011 для Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP, Excel 2000
Тип функции
Пример (как функция VBA)
Функцию REPLACE можно использовать в коде VBA в Microsoft Excel.
Давайте взглянем на некоторые примеры функции REPLACE чтобы понять, как использовать Excel функцию REPLACE в коде Excel VBA:
Источник
Функция Replace
Возвращает строку, которая является подстрокой строкового выражения, начинающегося с начальной позиции (по умолчанию — 1), в которой указанная подстрока была заменена другой подстрокой указанное количество раз.
Синтаксис
Replace(expression, find, replace, [ start, [ count, [ compare ]]])
Синтаксис функции Replace содержит следующие именованные аргументы:
Part | Описание |
---|---|
выражение | Обязательно. Строковое выражение, содержащее заменяемую подстроку. |
Найти | Обязательно. Искомая подстрока. |
Заменить | Обязательно. Подстрока замены. |
start | Необязательно. Начальная позиция для поиска и возврата подстроки выражения . Если элемент опущен, предполагается, что он равен 1. |
count | Необязательный параметр. Число выполняемых замен подстроки. Если этот параметр опущен, значение по умолчанию — -1, то есть выполните все возможные подстановки. |
compare | Необязательно. Числовое значение, указывающее тип сравнения, который будет использоваться при оценке подстрок. Значения см. в разделе «Параметры». |
Параметры
Аргумент compare может принимать следующие значения:
Константа | Значение | Описание |
---|---|---|
vbUseCompareOption | –1 | Выполняет сравнение, используя параметр оператора Option Compare. |
vbBinaryCompare | 0 | Выполняется двоичное сравнение. |
vbTextCompare | 1 | Выполняется текстовое сравнение. |
vbDatabaseCompare | 2 | Только Microsoft Access. Выполняется сравнение на основе сведений из базы данных. |
Возвращаемые значения
Функция Replace возвращает следующие значения:
Если | Функция «Replace» возвращает |
---|---|
Элемент expression имеет нулевую длину | Пустая строка («») |
Элемент expression равен Null | Ошибка. |
Элемент find имеет нулевую длину | Копия expression. |
Элемент replace имеет нулевую длину | Копия выражения с удаленными вхождениями поиска . |
Начать>Len(выражение) | Строка нулевой длины. Замена строк начинается с позиции, указанной в начале. |
Элемент count равен 0 | Копия expression. |
Замечания
Возвращаемое значение функции Replace — это строка с подстановками, которая начинается с позиции, указанной start , и завершается в конце строки выражения . Это не копия исходной строки от начала до конца.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Excel макрос замена символа
Replace( Expression,Find,Replace,[Start],[Count],[Compare] )
В результате действия функции Replace возвращается исходная строка с замененным строковым фрагментом
Expression | Обязательный аргумент — строка, в которой требуется замена |
Find | Обязательный аргумент — подстрока, которую нужно заменить |
Replace | Обязательный аргумент — подстрока замены |
Start | Необязательный аргумент — указывает позицию, с которой начинается поиск |
Count | Необязательный аргумент — указывает число замен |
Compare | Необязательный аргумент — вид сравнения |
Исходный текст: Результат замены:
—>Счетчики : 73439 | —>Добавил : Serge_007 | —>Теги : Replace, функция, Excel, vba, заменить, ВБА, function
—>Всего комментариев : 8 | ||||||||||||||||||
Replace («1011112», «1», «2», 5, 1) выдаёт 212, а надо 1011212 Это что — глюк или фича? И как в таких случаях быть? На сайте Микрософт к функции Replace висит заметка Значение, возвращаемое функцией Replace является строкой, которая начинается с позиции, указанной параметром Start, и завершается в конце строки Expression, с заменой подстрок Find значениями Replace. Т.е. Если хочешь получить нормальную замену, надо к результату добавить начало исходной строки до позиции Start. Добрый день! Интересует такой вопрос, возможно ли с помощью скрипта (с использованием функции replace) выполнить замену текста (соответствующего определенному шаблону) на этот же текст, но измененный? Т.е. мне неизвестна заранее строка для замены, эту строку я получаю чтением входной строки, и, например, добавлением к ней определенного символа. Т.е. логика такая — у меня есть несколько шаблонов строк. Я беру входную строку, с помощью RegExp определяю, к какому шаблону относится данная строка, и далее меняю ее в зависимости опять же от шаблона. Т.е. в каком то случае это будет добавление к строке «.», в каком то случае пробела и тд. Пример функции в экселе: ЕСЛИМН(RegExp1(A1;C1;D1) != 0; RegExp(A1;C1;D1); RegExp1(A1;C2;D2) != 0; RegExp1(A1;C2;D2); . ), где С* — это столбец с паттернами (вида (d<1>)(d<1>)(..*!) ), а D* — столбец с заменяемыми значениями вида $1.$2 $3. Т.е. идея такая, что делим исходную строку на группы, и далее в зависимости от вида шаблона добавляем между группами в нужные места символы (точки и тд). В таком случае вопрос, как показать в функции RegExp, что после чтения строки-паттерна в объект (regex.Pattern = Pattern), надо связать переданную в функцию строку-шаблон ( $1.$2 $3) с входным текстом? Потому что есть подозрение, что входную строку-шаблон он воспримет просто как строку, и выполнит замену 1 в 1 ( $1.$2 $3), а надо чтобы он понял, что вот эти знаки $ относятся именно к входной строке. Для примера код функции с основными частями: Public Function RegExpExtract_myversion(Text As String, Pattern As String, myRep As String) As String Заранее извиняюсь за такой развернутый вопрос, если можно хотелось бы получить хотя бы направление, куда двигаться, потому что везде идет замена строки на готовую заранее строку, а вот чтобы брать входную, менять, и заменять на нее, такого увы не встречал. Спасибо! Источник VBA Replace Function to Replace Characters in a StringThe VBA Tutorials BlogIntroduction — VBA ReplaceUse the VBA Replace function to replace a substring of characters in a string with a new string. VBA Replace is similar to the Excel SUBSTITUTE function; both can be used to replace a portion of a string with another. Example — VBA ReplaceMake powerful macros with our free VBA Developer Kit This is actually pretty neat. If you have trouble understanding or remembering it, our free VBA Developer Kit can help. It’s loaded with VBA shortcuts to help you make your own macros like this one — we’ll send a copy, along with our Big Book of Excel VBA Macros, to your email address below. Tutorial — VBA ReplaceThis is a very basic macro. I defined my string, then instantly changed it. You likely won’t be using your Replace function in this manner. In practice, you’ll probably be passing a cell, like Range(«a1») . Yep, you can pass cells to the Replace function, too! Anyway, when the macro finishes, the string str1 will be changed from: All instances of fish were replaced with the string cat . This is the same way the Excel SUBSTITUTE() function replaces portions of a string. You can see how a macro like this could be useful for replacing a “.csv” with a “.xlsx” extension in a list of file names, for example. Okay, time to talk more about the VBA Replace function. The VBA Replace function requires 3 arguments, but it can accept as many as 6 arguments. I’ll give you a nice description of each of these arguments, then I’ll show you a few examples:
We know how to do a basic find and replace in a string using the Replace VBA function. Let’s look at a few examples of how the optional Replace arguments can change your results. Replace first 2 instances in a stringResult: One cat, two cat, red fish, blue fish Replace last occurrence of substring in a stringResult: One fish, two fish, red fish, blue cat Replace starting at the 10th characterResult: two cat, red cat, blue cat Replace starting at the 10th character and keep whole stringResult: One fish, two cat, red cat, blue cat Reader’s Note: I’ve created a really awesome user-defined function to help you replace the Nth occurrence of a substring in a string if that’s what you’re searching for! Application Ideas — VBA ReplaceThe Replace function of VBA is great for manipulating strings. One great use is to replace date/time stamps, file extensions or personalized greetings for the person logged into a computer. I’m sure you have other great uses for it and I’d love to hear about them! For more VBA tips, techniques, and tactics, join our VBA Insiders email series using the form below. After you do that, share this article on Twitter and Facebook. Ready to do more with VBA? Before we go, I want to let you know we designed a suite of VBA Cheat Sheets to make it easier for you to write better macros. We included over 200 tips and 140 macro examples so they have everything you need to know to become a better VBA programmer. Источник Читайте также: Как настроить post запросы Adblock |
Подстановка знаков и замена символов |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
While working with MS Excel , sometimes you may need to delete values in strings or change them. You can automate that by using the powerful Replace() which is available in Excel VBA (Visual Basic for Applications). Today, we walk you through the series of steps to understand and master the Replace() function. The prerequisites for this intermediate course are the basic knowledge of Excel (here’s a course that can give you an introduction to Excel 2o13), strings and preliminary understanding of Excel VBA. If not, we recommend that you go through this beginner’s course on Excel VBA and macros. For a quick refresher, you can do a quick read through of our VBA tutorial.
Excel VBA Replace() is a simple yet very useful string function. As the name suggests, Replace() is used to replace a set of characters in a string with a new set of characters. The basic syntax of a VBA Replace function looks like this:
Replace(Source_string, Old_string, Replacement_string, [start, [count, [compare]]] )
Let’s go through each parameter to understand them better.
- Source_string: This is the complete source string, of which you want some characters to be replaced.
- Old_string: It’s the string which is to be replaced, ie the subset of source_string that you want to replace
- Replacement_string: Is the string or a set of characters with which you want “Old_string” is to be replaced.
- Start: Stands for the numerical position in the “Source_string” from which the search should start. This is an optional parameter. If this parameter is omitted, then by default the search begins at position 1.
- Count: This parameter stands for the frequency of occurrences of Old_string to be replaced. Like “start”, it’s an optional parameter. If this argument is omitted, then each occurrence of “Old_string” in the “Source_string” will be replaced.
- Compare: This is also an optional parameter. It represents the type of comparison algorithm to be used while the Replace Function searches for the occurrences of “Old_string” in the “Source_string.” Here are your options:
- vbBinaryCompare is the parameter value for binary comparison.
- vbTextCompare is the argument for textual comparison.
- Finally, the parameter value vbDatabaseCompare does a comparison based on information in your database.
Now that we’re familiar with the syntax of Replace function, lets move on to a few simple practical examples.
Examples
Replace (“Thank You", "You", "Everybody")
This example will return, “Thank Everybody”.
Replace ("Software Program", "Unique","code")
Guess what this will return? The code will return “Software Program.” The reason is we have asked the Replace function to replace “Unique.” However, you can see that “Unique” text string is not present inside the source string. So, Replace will leave the source string unchanged.
Replace ("Animal", "a", "f",2)
This code will return, “Animfl.” The reason is in the Replace function code, the search for character “a” starts from the second position. Wherever, “a” is found, it is replaced with “f”.
Replace ("Animal", "a", "f",1,1)
Here the Replace() will return “fnimal”. The reason being we have instructed the VBA Replace statement to replace only one occurrence of “a” with “f”.
We suggest you work out these examples and learn a bit more about VBA macros (you can use this VBA course) before moving on to more complex programs using Replace function. Here on, we will use the Visual Basic Editor to write the code. We assume that you know how to save, compile and run programs on this editor. You can always look up our course on Excel VBA and Macros here.
How to Remove Space from a String
Sub removeSpace() Dim stringSpace As String stringSpace = " this string contains spaces " stringSpace = Replace(stringSpace, " ", "") End Sub
Here we have declared stringSpace to be a variable of type string. It is initialized to a string which contains spaces. Replace() has the ‘stringSpace’ to the be source string. Every occurrence of space in the source string is removed using VBA Replace statement. Finally, stringSpace contains “thisstringcontainsspaces” which is the end result.
How to Replace a String within Inverted Comma
Sub replaceQuotedString() Dim y, longString, resultString1 As String y = Chr(34) & "abc" & Chr(34) longString = "Let's replace this string: " &y resultString1 = Replace(longString, y, "abc") End Sub
Here we declare y, longString, resultString1 as variables of data type string. Chr() converts the numerical values to string data type. In other words, it introduces the quotation marks to the numerical values. And(&) operator concatenates strings. Value of “y” is “34abc34.” The “longString” value is “Let’s replace this string: 34abc34″. In the Replace() value of source string is the “longString.” That is “34abc34” is replaced by “abc”. The resultstring1 now stores the value “Let’s replace this string: abc”
How to Remove Square Brackets from a String using Excel VBA
Sub removeSquareBrackets1() Dim trialStr As String trialStr = "[brackets have to be removed]" trialStr = Replace(trialStr, "[", "") trialStr = Replace(trialStr, "]", "") MsgBox (trialStr) End Sub
In this program, we’ve declared trialStr as a variable of type string. It’s assigned the value”[brackets have to be removed].” The first occurrence of the replace function removes the left square bracket from trialStr. The variable now contains “brackets have to be removed].” In the second occurrence of the Replace function, the right square bracket is removed. Finally the value of trialStr is “brackets have to be removed.” Note that there are no square brackets in trialStr now. And the MsgBox() displays the result.
How to Edit a Url Using Replace()
Enter this formula into any cell in your current Excel sheet.
=HYPERLINK("http://www.microsoft.com", "Microsoft Headquarters")
This creates a hyperlinked URL in the active cell of your worksheet. In the VBA editor, write the following code
Sub editURL1() Dim URL1, NewURL URL1 = ActiveCell.Formula NewURL = Replace(URL1, "Microsoft Headquarters", "World Office") ActiveCell.Formula = NewURL End Sub
In this program, we’ve declared URL1 and NewURL as variables. URL1 is initialized to the value in the selected cell. Replace () searches for occurrence of “Microsoft Headquarters” in the URL and replaces it with “World Office.” The selected cell is assigned the value of NewURL.
Programming using Excel VBA is interesting and gives you exposure to powerful functionality and features. Mastering it is important to efficiently and effectively use Excel. Once you’ve tried these examples for yourself, do share your learning and experience with us. Once you’re ready to take the next step, hop over to this Ultimate VBA course, to check out some advanced VBA concepts.
Просмотров: 226
Ставим задачу.
При получении данных из таблиц с помощью ВПР или ИНДЕКС важное значение имеет тип данных и языковая раскладка, с помощью которой набрано название. И если для смены типа можно использовать встроенные функции Excel, то с шрифтом все не так просто. По крайней мере, если решать задачу в лоб, то формула получится достаточно громоздкой.Давайте рассмотрим, как выполняется замена символов в VBA.
Давайте решим эту проблему, используя возможности VBA, или – проще – возможности макросов.
Написание основного кода.
Вначале попробуем определить, какие именно знаки латинского алфавита похожи на русский и запишем их в виде строки
Получаем такой код
Dim LatStr As String: LatStr = “EeOoPpAaXxCcMTHKB”
Как видим, таких знаков не так уж и много
Добавим соответствующие им символы кириллицы
Dim RusStr As String: RusStr = “ЕеОоРрАаХхСсМТНКВ”
Напоминаю, в первой строке все буквы латинские (английские, если вам так проще), а во второй – кириллица, то есть русские. Названия произвольны. Обратите внимание, что знаки, похожие по написанию, находятся на одинаковых местах. Логика тут следующая. Если один из знаков проверяемого текста совпадает с знаком из строки LatStr, то надо взять аналогичный знак из RusStr
Для этого назначим для проверяемой строки переменную TestString. К примеру, возьмем его из текущей ячейки
Dim TestString as string: TestString=ActiveCell.Value
После этого начнем по очереди сравнивать каждый символ полученной строки с латиницей из LatStr.
Запускаем цикл для получения очередного знака из TestString.
Вначале объявим переменные хранения счетчиков циклов, а также очередных знаков из TestString и LatStr. Так же зададим переменную типа строка для результата обработки NewString
Dim b as integer, J as integer, sValue as string, s1 as string, NewString as string
Запустим сам цикл
For j=1 to Len(TestString)
sValue=Mid(TestString,j,1)
Теперь начнем так же в цикле сравнивать его со знаками из LatStr. Если такой знак отыщется, то меняем найденный символ на соответствующий знак из RusStr.
For b=1 to Len(LatStr)
S1=mid(LatStr,b,1)
If s1=SValue then SValue=Mid(RusStr,b,1)
Закрываем цикл сравнения и вернемся к проверке очередного знака.
Next b
В итоге, если буква была латинской, она заменится на соответствующую по написанию русскую, если нет – знак остается прежним. Добавим полученный результат к некоей строке NewString. Изначально наша переменная, как и любая другая, будет пустой, но после каждого прохождения цикла тестирования к ней будет добавляться очередной символ
NewString=NewString & sValue
И закрываем цикл извлечения
Next j
Собираем код вместе.
В результате получили такой итоговый код
Dim TestString as string: TestString=ActiveCell.Value
Dim LatStr As String: LatStr = “EeOoPpAaXxCcMTHKB”
Dim RusStr As String: RusStr = “ЕеОоРрАаХхСсМТНКВ”
Dim b as integer, J as integer, sValue as string, s1 as string
For j=1 to Len(TestString)
sValue=Mid(TestString,j,1)
For b=1 to len(LatStr)
S1=mid(LatStr,b,1)
If s1=sValue then sValue=Mid(RusStr,b,1)
Next b
NewString=NewString & sValue
Next j
Отступы могут быть произвольными, можно вообще обойтись без них, но так проще отследить, что же происходит на участках кода
Где же применить полученный код? Лично я вижу два варианта.
Создаем пользовательскую функцию – UDF.
Первый – обернуть строки кода в виде функции. Например, создать пустой файл Excel, открыть в нем редактор VBA, используя нажатие сочетания “Alt F11” и дать команду
«Insert» → «module!»
В открывшемся окне вставляем следующую строку
Public Function LatinToRus (TestString as Variant) as string
Редактор автоматически создаст основу или – как принято это называть – каркас для функции, добавив строку End Function. После этого добавим полученный нами выше код перед строкой End Function. Первую строку кода пропускаем – мы задаем TestString как параметр – исходные данные – для нашей функции. Завершим все добавлением строки
LatinToRus=NewString
Результат получится таким
Public Function LatinToRus (TestString as Variant) as string
Dim LatStr As String: LatStr = “EeOoPpAaXxCcMTHKB”
Dim RusStr As String: RusStr = “ЕеОоРрАаХхСсМТНКВ”
Dim b as integer, J as integer, sValue as string, s1 as string
For j=1 to Len(TestString)
sValue=Mid(TestString,j,1)
For b=1 to len(LatStr)
S1=mid(LatStr,b,1)
If s1=Svalue then Svalue=Mid(RusStr,b,1)
Next b
NewString=NewString & sValue
Next j
LatinToRus=NewString
End Function
Название функции естественно может быть произвольным.
Сохраним файл с функцией как надстройку Excel.
Теперь сохраним наш файл как надстройку Excel в формате Xlam. Excel сам автоматически выберет место для хранения надстройки. Если же вы хотите сохранить ее резервную копию, дайте команду «Сохранить как» ещё раз . После этого сделайте копию, к примеру, на рабочем столе
Теперь перейдем по пути
Файл → параметры → Надстройки → надстройки Excel → перейти
И отмечаем нашу надстройку флажком
После этого функция станет доступной во всех файлах Excel для текущего пользователя в категории «Определенные пользователем»
А вот и пример использования.
Обратите внимание на формулы. Очевидно, что после применения функции LatinToRus были найдены все слова по образцам.
Используем создание процедуры.
Второй способ применения – использование созданного кода в виде процедуры, например, для ячеек выделения. Такую процедуру удобнее добавить в личную книгу макросов. Изначально доступ к ней запрещен, поэтому пойдем на хитрость. Запустим запись макроса с вкладки «Вид»
Укажем хранение макроса в личной книге, после чего сразу остановим запись
Снова запускаем редактор VBA и открываем текст модуля из личной книги.
Удаляем строки Sub Макрос1 () и End Sub а так же все что Excel добавил между ними и вставляем следующий код
Sub Change_Latin_To_Rus()
Dim LatStr As String: LatStr = “EeOoPpAaXxCcMTHKB”
Dim RusStr As String: RusStr = “ÅåÎîÐðÀàÕõÑñÌÒÍÊ”
Dim b As Integer, J As Integer, sValue As String, s1 As String
Dim TestString As String
For Each MyCells In Selection
NewString = “”
TestString = MyCells.Value
For J = 1 To Len(TestString)
sValue = Mid(TestString, J, 1)
For b = 1 To Len(LatStr)
s1 = Mid(LatStr, b, 1)
If s1 = sValue Then sValue = Mid(RusStr, b, 1)
Next b
NewString = NewString & sValue
Next J
MyCells.Value = NewString
Next MyCells
End Sub
Теперь достаточно выделить нужный диапазон, нажать сочетание Alt F8 и выбрать нашу процедуру.
Замена символов в VBA произойдет автоматически во всех выделенный ячейках. И наконец ,если вам надо наоборот поменять русские буквы в латинице, то просто поменяйте местами в циклах LatStr и RusStr то есть сделайте так
For b=1 to len(RusStr)
S1=mid(RusStr,b,1)
If s1=Svalue then Svalue=Mid(LatStr,b,1)
Next b
Подведем итоги.
Никто не мешает добавить символы, к примеру, заменить знак нуля на заглавную букву «О». то есть дальнейшее уже зависит от вашей фантазии. Как видите, замена символов в VBA не такое уж сложное дело. Нужно только желание. Пробуйте, экспериментируйте. На этом все, встретимся на занятиях. Всем внимательности и упорства, а результат не заставит себя ждать.
Если постоянно приходится выполнять одно и то же действие или появляется потребность автоматизировать некоторые движения, то в Excel есть специальная функция – макросы. Это маленькие (или не очень) скрипты, позволяющие выполнять ряд действий за пользователя. Если правильно использовать макросы, то можно выполнять почти любое действие, даже то, которое не предусмотрено стандартным функционалом.
Самые простые макросы могут быть записаны с помощью специальной кнопки. Достаточно ее нажать и выполнить определенные действия. Но для более продвинутого уровня все же придется изучать язык программирования. Но на самом деле, это не так сложно. Главное – иметь в голове хорошую идею, как можно макрос применить.
Программирование макросов осуществляется с помощью языка VBA. И в нем есть одна из часто используемых функций – Replace.
Содержание
- Определение функции Replace, описание
- Синтаксис функции Replace и параметры
- Параметр compare
- Возвращаемое значение
- Пример №1
- Пример №2
- Пример №3
- Выводы
Определение функции Replace, описание
С помощью функции Replace можно заменить всю строку или отдельную подстроку, используя в качестве ориентира определенный шаблон. Как результат, эта функция возвращает получившуюся строку. Причем замена может осуществляться определенное количество раз, и функция автоматически вносит необходимые коррективы.
С помощью этой функции можно осуществить автоматически сразу несколько действий:
- Найти определенную строку и подстроку, замена которой требуется.
- Заменить текст на тот, который был указан пользователем или был возвращен формулой.
- Найти следующий аналогичный фрагмент. И снова его заменить. И так такое количество раз, сколько нужно. Если конкретно, это количество записывается в параметре Count, который записывается далее.
Если необходимо осуществить замену внутри определенного диапазона, то нужно использовать функцию Replace применительно к каждой ячейке. Но если использовать объект Range, то можно значительно упростить процесс.
Если выражаться более просто, эта функция является заменой окна «Найти и заменить». Она позволяет автоматизировать этот процесс, например, основываясь на результатах вычислений или действиях, совершенных ранее. Например, можно запрограммировать макрос на то, чтобы он автоматически подгружал оценки учеников, и если новая оценка выше предыдущей, то вместо текста «учится плохо» писать строку «учится лучше». Таким образом, можно значительно превысить те возможности. которые используются в стандартной функции «Условное форматирование», поскольку такое сравнение реализовать стандартными средствами Эксель не так удобно, как макросами (хотя если заморочиться, то можно). Но есть и более сложные задачи, реализовать которые можно исключительно с помощью макросов.
Функцию «Найти и заменить» знают почти все пользователи Эксель. Она позволяет осуществить замену искомой строки один и более раз. Перед тем, как мы начнем рассматривать, как автоматизировать процесс, необходимо сперва разобраться в стандартном алгоритме действий пользователя, если он хочет заменить один текст на другой. Все потому, что нельзя рассматривать более продвинутые инструменты, не разобравшись толком в простых.
Итак, чтобы заменить определенный текст на какую-то строку без макроса, необходимо на вкладке «Главная» найти пункт «Редактирование». Там в группе «Редактирование» нужно найти такую кнопку. После этого откроется небольшое меню, в котором нужно будет выбрать пункт «Заменить».
Можно же значительно упростить себе жизнь, один раз запомнив комбинацию клавиш Ctrl + H.
После этого появится такое окно.
В нем мы видим две строки. В первой нужно указывать ту строку, которую программа должна найти. Во второй записывается тот текст, на который должна описанная выше строка замениться первая строка. Окно предусматривает также возможность настроить формат, если нажать на кнопку «Параметры».
Если необходимо осуществить замену во всех аналогичных местах, то это можно сделать с помощью кнопки «Заменить все». Если же нажимать просто кнопку «Заменить», то можно выбирать, какой фрагмент заменять, а какой – нет. Чтобы пропустить какое-то вхождение, нужно нажать кнопку «Найти далее», и делать это до тех пор, пока не будет найден тот вариант, который требует замены. После этого пользователь нажимает кнопку «Заменить».
Приятный бонус: с помощью комбинации клавиш Ctrl + Enter можно сделать искусственный разрыв строк, чтобы написать несколько строк в рамках одной ячейки.
При чем это к нашей теме? А отношение самое прямое. Как правило, чтобы удалить эти разрывы, пользователь вручную убирает соответствующие непечатаемые символы. Но это можно сделать проще, с помощью окна «Найти/Заменить». После этого в поле «Найти» указывается символ разрыва строки. Его можно ввести нажатием комбинации клавиши Ctrl + J. В соответствующем месте появится точка, которая обозначает этот непечатный символ.
После этого нам остается ввести символ, на который будет осуществляться замена. Поскольку перед нами стоит цель убрать все переносы строк, то логично их заменить на пробелы. Если этого не сделать, то символы могут просто слиться в одно большое слово, что нам не надо.
Видим, что после того, как мы нажали «ОК», три строки были слиты в одну, и при этом после каждого слова стоит пробел.
Если посмотреть на окно поиска и замены еще раз, то будет видно. что после нажатия на кнопку «Параметры» появляется еще некоторое количество параметров, дающих возможность выбрать область поиска, особенности просмотра и где осуществлять поиск нужных значений.
Также можно настроить отображение значений с учетом регистра (то есть, больших и маленьких букв), а также поставить флажок возле пункта «Ячейка целиком». Что касается формата, то он будет отображаться в специальном поле возле кнопки настройки.
Синтаксис функции Replace и параметры
В целом, синтаксис этой функции выглядит следующим образом.
Replace(expression, find, replace, [start], [count], [compare])
Давайте разберем аргументы этой функции более детально:
- Expression. Это изначальная строка, замена которой требуется.
- Find – это подстрока, входящая в состав строки верхнего уровня, в которой нужно осуществлять замену значения.
- Replace – это подстрока, которая заменяет ту подстроку, которая описана в предыдущем аргументе. Проще говоря, тот текст, на который требуется заменить.
- Start. Этот параметр необязательный. Характеризует порядковый номер символа строки, с которого макрос будет осуществлять поиск. Та часть строки, которая располагается до этого номера, просто не учитывается при замене.
- Count. Это количество итераций, в ходе которых будет осуществляться замена. Этот параметр также является необязательным.
- Compare. Это значение в числовом формате, которое используется для указания вида сравнения. Данный параметр также указывать необязательно.
Если опустить все необязательные аргументы, то синтаксис функции Replace будет выглядеть менее устрашающе.
Replace(expression, find, replace)
У многих людей возникает вопрос: чем отличается параметр от аргумента. Несмотря на то, что эти термины часто используют в качестве синонимов, это не совсем правильно. Аргумент функции – это фактически переменная, которая используется при вычислении. Параметр же – это значение, которое находится в переменной.
Параметр compare
Использование параметра compare имеет свои особенности. Нужно указывать не текстовое значение, а числовое, которое служит константой, обозначающей тип сравнения. Давайте рассмотрим их более подробно.
- -1. В этом случае в качестве аргумента используется то значение, которое определяется оператором Option Compare.
- 0. Это двоичное сравнение.
- 1 – текстовое сравнение.
Отличие между текстовым и двоичным сравнением заключается в том, что отличаются буквенные регистры. В первом случае они не учитываются, а во втором большие и маленькие буквы берутся в учет при поиске строк и их замене.
Бинарное сравнение используется по умолчанию. Следовательно, если не указывать этого аргумента в функции, то регистры будут учитываться. Если же нужно сделать так, чтобы программа их в учет не брала, то обязательно в качестве последнего параметра нужно указать единицу.
Возвращаемое значение
В программировании есть такое понятие, как тип данных. Поскольку таблицы Excel тоже являются программируемыми, то даже незнакомый с макросами человек понимает, что это такое. В языке VBA существует несколько основных типов данных. В нашем случае возвращается тип String.
Если значение аргумента Expression нулевое, то и строка вернется нулевая. Если же было в качестве значения Expression значение Null, то формула выдаст ошибку. Нужно учитывать еще некоторые моменты при использовании этой функции:
- Если в качестве аргумента Find вводится строка, длина которой нулевая, то функция вернет то же значение, которое введено в качестве параметра Expression. Технически это означает, что нет особой подстроки, которую нужно искать в рамках строки, которая передается аргументу Expression.
- Если длина параметра Replace нулевая, то тогда возвращается строка, соответствующая первому параметру с удаленной частью второго параметра. Технически это означает, что строка текста была заменена на пустое значение.
- Если в качестве параметра Start было передано число, превышающее длину искомой строки, то вернется пустая строка. Если же этому аргументу передать число 0, то поиск будет осуществляться после нулевого символа, то есть сразу. Поэтому возвращаться будет то значение, которое указано в качестве параметра Expression.
На эти моменты нужно обратить особое внимание и запомнить их перед тем, как использовать функцию Replace. Это здорово поможет в отладке написанных макросов, если знать эти особенности.
Пример №1
В этом примере имеется единственное вхождение искомой подстроки. И его нужно заменить.
Sub Primer1()
Dim a
a = «Сливочное масло»
a = Replace(a, «Сливочное», «Рыжиковое»)
MsgBox a
‘Результат: «Рыжиковое масло»
End Sub
Пример №2
Данный пример осуществляет замену нескольких вхождений подстроки.
Sub Primer2()
Dim a
a = «Идёт медведь, идёт лиса, идёт грач»
‘с параметром compare по умолчанию
a = Replace(a, «идёт», «бежит»)
MsgBox a
‘Результат:
‘Идёт медведь, бежит лиса, бежит грач
a = «Идёт медведь, идёт лиса, идёт грач»
‘с параметром compare=1(vbTextCompare)
a = Replace(a, «идёт», «бежит», , , 1)
MsgBox a
‘Результат:
‘бежит медведь, бежит лиса, бежит грач
End Sub
Пример №3
В этом случае осуществляется замена одной подстроки, на поиск начинается только с пятнадцатого символа.
Sub Primer3()
Dim a
a = «Идёт медведь, идёт лиса, идёт грач»
a = Replace(a, «идёт», «бежит», 15, 1)
MsgBox a
‘Результат:
‘бежит лиса, идёт грач
End Sub
Выводы
Видим, что функция Replace достаточно удобна в использовании. С ее помощью можно добиться максимальной гибкости, которая безусловно важна в работе с электронными таблицами. Она является тем кирпичиком, который превращает Excel из программы для составления больших баз данных в полноценный инструмент, который может все.
Функция «Найти и заменить» активно используется и дает возможность при правильном применении сэкономить огромное количество времени. И это если она используется сама по себе. Если же написать скрипт, то нужно один раз вложить время, чтобы потом его экономить.
Существует еще огромное количество функций, которые позволяют автоматизировать работу с текстом в Excel. Причем есть такие причудливые, например, как функция Space(), которая дает возможность получить строку, основываясь на количестве пробелов. Каждая функция может сочетаться с другими, что дает почти неограниченный простор возможностей.
При этом мы видим, что эта функция VBA не заменяет полностью всех возможностей Excel по замене строк. Так, не поддерживается настройка формата и ряд других возможностей. Тем не менее, это можно сделать с помощью других функций, поэтому нет необходимости такое большое количество аргументов использовать в рамках одной простой процедуры.
Оцените качество статьи. Нам важно ваше мнение: