Содержание
- VBA Excel. Метод Find объекта Range
- Предназначение и синтаксис метода Range.Find
- Синтаксис метода Range.Find
- Параметры метода Range.Find
- Знаки подстановки для поисковой фразы
- Простые примеры
- Быстрая замена значений по условию в Excel
- Быстрая замена значений по условию в Excel
- Excel макрос поиск замена если нет поиск
- Excel макрос поиск замена если нет поиск
- Как создать код макроса для поиска и замены текста в Excel?
VBA Excel. Метод Find объекта Range
Метод Find объекта Range для поиска ячейки по ее данным в VBA Excel. Синтаксис и компоненты. Знаки подстановки для поисковой фразы. Простые примеры.
Предназначение и синтаксис метода Range.Find
Метод Find объекта Range предназначен для поиска ячейки и сведений о ней в заданном диапазоне по ее значению, формуле и примечанию. Чаще всего этот метод используется для поиска в таблице ячейки по слову, части слова или фразе, входящей в ее значение.
Синтаксис метода Range.Find
Expression – это переменная или выражение, возвращающее объект Range, в котором будет осуществляться поиск.
В скобках перечислены параметры метода, среди них только What является обязательным.
Метод Range.Find возвращает объект Range, представляющий из себя первую ячейку, в которой найдена поисковая фраза (параметр What). Если совпадение не найдено, возвращается значение Nothing.
Если необходимо найти следующие ячейки, содержащие поисковую фразу, используется метод Range.FindNext.
Параметры метода Range.Find
Наименование | Описание |
---|---|
Обязательный параметр | |
What | Данные для поиска, которые могут быть представлены строкой или другим типом данных Excel. Тип данных параметра — Variant. |
Необязательные параметры | |
After | Ячейка, после которой следует начать поиск. |
LookIn | Уточняет область поиска. Список констант xlFindLookIn:
|
LookAt | Поиск частичного или полного совпадения. Список констант xlLookAt:
|
SearchOrder | Определяет способ поиска. Список констант xlSearchOrder:
|
SearchDirection | Определяет направление поиска. Список констант xlSearchDirection:
|
MatchCase | Определяет учет регистра:
|
MatchByte | Условия поиска при использовании двухбайтовых кодировок:
|
SearchFormat | Формат поиска – используется вместе со свойством Application.FindFormat. |
* Примечания имеют две константы с одним значением. Проверяется очень просто: MsgBox xlComments и MsgBox xlNotes .
В справке Microsoft тип данных всех параметров, кроме SearchDirection, указан как Variant.
Знаки подстановки для поисковой фразы
Условные знаки в шаблоне поисковой фразы:
- ? – знак вопроса обозначает любой отдельный символ;
- * – звездочка обозначает любое количество любых символов, в том числе ноль символов;
Простые примеры
При использовании метода Range.Find в VBA Excel необходимо учитывать следующие нюансы:
- Так как этот метод возвращает объект Range (в виде одной ячейки), присвоить его можно только объектной переменной, объявленной как Variant, Object или Range, при помощи оператора Set.
- Если поисковая фраза в заданном диапазоне найдена не будет, метод Range.Find возвратит значение Nothing. Обращение к свойствам несуществующей ячейки будет генерировать ошибки. Поэтому, перед использованием результатов поиска, необходимо проверить объектную переменную на содержание в ней значения Nothing.
В примерах используются переменные:
- myPhrase – переменная для записи поисковой фразы;
- myCell – переменная, которой присваивается первая найденная ячейка, содержащая поисковую фразу, или значение Nothing, если поисковая фраза не найдена.
Источник
Быстрая замена значений по условию в Excel
Быстрая замена значений по условию в Excel
Добрый день, уважаемые читатели блога! Сегодня поговорим о быстрой замене значений в таблице Excel. Зачем нам это нужно, когда есть формулы ЕСЛИ и условное форматирование? Ответ прост — для экономии времени. Но ведь можно ещё быстрее. Ниже будет пример с небольшой таблицей, где хочется сразу выделить или поместить нужное значение.
Есть две таблицы, одна оригинал, вторая для изменений. Все ученики кто получил 4 и выше имеют результат «Прошёл», у кого 3 и ниже — «Не прошёл».
Если будем использовать условное форматирование, придётся писать формулу каждый раз и если таблица очень большая и сразу хочется увидеть результат — лучше воспользоваться макросом.
Сразу оговорюсь в макросе будет прописан диапазон для замены, так что если таблица будет больше, нужно просто изменить диапазон.
- вкладка «Разработчик», блок кнопок «Код»;
- жмём «Visual Basic»;
- добавляем новый модуль Insert -> Module.
Вставляем следующий код.
Sub Result()
Dim cell As Range
‘ Проверка каждой ячейки диапазона на прохождение
For Each cell In Range(«I2:L10»).Cells
If cell.Value
cell.Value = «Не прошёл»
ElseIf cell.Value >= 4 Then
cell.Value = «Прошёл»
End If
Next
End Sub
В этом случае используется связка из команд IF и ElseIf, что позволяет нам несколько расширить понимание формулы ЕСЛИ. Напомню, что макрос будет применён только к ячейкам из диапазона I2:L10!
Запускаем выбор макросов с помощью сочетания клавиш Alt+F8 и нажимаем кнопку «Выполнить».
Получаем результат. Во второй таблице я сразу вижу кто из учеников прошёл дальше, а кто нет. Ну и кому что необходимо подтянуть:)
Таким образом решается некая ограниченность формулы ЕСЛИ, ведь условия в макросе можно продолжить и подобрать свои, всего лишь изменив значения.
Источник
Excel макрос поиск замена если нет поиск
Искал похожие темы, но не нашел подходящее решение под свой вопрос.
Если такая тема была — прошу извинить заранее)
Помогите, пожалуйста, в таком вопросе.
Есть исходная книга Эксель, в которой расположено 500 значений в ячейках A1:A500. В той же папке, что и исходная книга, есть множество других книг, в которых есть значения в столбцах от «A» до «D».
Необходимо произвести поиск каждого значения из исходной книги в других книгах, расположеных в папке с исходным файлом и в соседнюю ячейку от исходного значения, добавить имя книги, в которой найдено значение.
Сам в макросах не очень силен, но по по-немногу учусь и кое-что уже понимаю)
Буду очень благодарен за любую помощь в данном вопросе.
Спасибо!
Искал похожие темы, но не нашел подходящее решение под свой вопрос.
Если такая тема была — прошу извинить заранее)
Помогите, пожалуйста, в таком вопросе.
Есть исходная книга Эксель, в которой расположено 500 значений в ячейках A1:A500. В той же папке, что и исходная книга, есть множество других книг, в которых есть значения в столбцах от «A» до «D».
Необходимо произвести поиск каждого значения из исходной книги в других книгах, расположеных в папке с исходным файлом и в соседнюю ячейку от исходного значения, добавить имя книги, в которой найдено значение.
Сам в макросах не очень силен, но по по-немногу учусь и кое-что уже понимаю)
Буду очень благодарен за любую помощь в данном вопросе.
Спасибо! footballplayer
Сообщение Доброго дня!
Искал похожие темы, но не нашел подходящее решение под свой вопрос.
Если такая тема была — прошу извинить заранее)
Помогите, пожалуйста, в таком вопросе.
Есть исходная книга Эксель, в которой расположено 500 значений в ячейках A1:A500. В той же папке, что и исходная книга, есть множество других книг, в которых есть значения в столбцах от «A» до «D».
Необходимо произвести поиск каждого значения из исходной книги в других книгах, расположеных в папке с исходным файлом и в соседнюю ячейку от исходного значения, добавить имя книги, в которой найдено значение.
Сам в макросах не очень силен, но по по-немногу учусь и кое-что уже понимаю)
Буду очень благодарен за любую помощь в данном вопросе.
Спасибо! Автор — footballplayer
Дата добавления — 24.01.2017 в 13:12
footballplayer | Дата: Вторник, 24.01.2017, 15:14 | Сообщение № 2 | ||||
|
argyman Пользователь Сообщений: 45 |
Добрый день! Прошу Вашей помощи! Нужен макрос, который бы находил и заменял текст в выделенном диапазоне ячеек согласно списку, объем достаточно большой от 2 500 до 10 000 ячеек. Буду очень благодарен за помощь! Спасибо! |
tolstak Пользователь Сообщений: 471 |
#2 24.08.2018 14:22:50 argyman, вот вариант:
Прикрепленные файлы
Изменено: tolstak — 24.08.2018 14:24:14 In GoTo we trust |
||
Nordheim Пользователь Сообщений: 3154 |
#3 24.08.2018 14:39:30 Еще вариант:
«Все гениальное просто, а все простое гениально!!!» |
||
argyman Пользователь Сообщений: 45 |
tolstak, огромное Вам спасибо! |
Nordheim Пользователь Сообщений: 3154 |
#5 24.08.2018 15:08:17 Пример с выбором диапазона:
«Все гениальное просто, а все простое гениально!!!» |
||
argyman Пользователь Сообщений: 45 |
Nordheim, круто! спасибо большое! |
AngSem Пользователь Сообщений: 1 |
А как можно дополнить данный код, чтобы рядом с таблицей значений на замену была таблица со значениями, при встрече которых строка бы удалялась полностью? |
tolstak Пользователь Сообщений: 471 |
#8 10.06.2019 14:08:05 AngSem, можно вот так:
Прикрепленные файлы
In GoTo we trust |
||
Andrey K Пользователь Сообщений: 2 |
Вопрос к tolstak, а как в первом варианте сделать так чтобы значения в ячейках которые проверяются были жестко зафиксированы. при нынешней обработке получается что aakrp и aakr45 преобразовываются в значение которое подставляется по синтаксису aakr с концом от значения в виде P и 45 Изменено: Andrey K — 12.06.2020 18:52:13 |
tolstak Пользователь Сообщений: 471 |
#10 12.06.2020 18:57:53 Andrey K, по идее, вот так:
Прикрепленные файлы
In GoTo we trust |
||
Andrey K Пользователь Сообщений: 2 |
tolstak,Спасибо большое всё помогло! =) дальше уже сам доделал обратное объединение в строку. |
ageres1982 Пользователь Сообщений: 30 |
Вопрос к tolstak, а как в первом варианте делать замену и по условию: т.е если значение ячейки не начинается на Liftinq или на Antistat то замену выполняем , в противном случае оставляем значение ячейки без изменений |
tolstak Пользователь Сообщений: 471 |
#13 22.07.2020 08:42:41 ageres1982, вот так:
Прикрепленные файлы
In GoTo we trust |
||
ageres1982 Пользователь Сообщений: 30 |
tolstak
Спасибо огромное. |
ageres1982 Пользователь Сообщений: 30 |
|
tolstak Пользователь Сообщений: 471 |
#16 22.07.2020 11:00:27 ageres1982, упс, кажется, малеленькая опечатка
вместо
Прикрепленные файлы
In GoTo we trust |
||||
ageres1982 Пользователь Сообщений: 30 |
Спасибо |
tolstak Пользователь Сообщений: 471 |
#18 22.07.2020 13:03:02 ageres1982, кажется, я совсем запутался в своем старом коде, прощу прощения…
Прикрепленные файлы
Изменено: tolstak — 22.07.2020 13:38:15 In GoTo we trust |
||
ageres1982 Пользователь Сообщений: 30 |
Не работает.. |
ageres1982 Пользователь Сообщений: 30 |
Спасибо огромное, теперь всё работает |
Михаил Лебедев Пользователь Сообщений: 2855 |
#21 23.07.2020 10:11:14
Красиво. Я бы только доделал, чтобы срабатывало и в том случае, если есть несколько слов на замену в одной ячейке. Хотя сейчас это ТС, похоже, не требуется Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
||
Марина Александрова Пользователь Сообщений: 2 |
#22 08.10.2021 10:35:23 Подскажите пожалуйста, почему может не работать макрос. Суть в следующем: ячейки с «нет данных» (#Н/Д) заменить на пробел.
|
||
tolstak Пользователь Сообщений: 471 |
#23 08.10.2021 10:56:43 Марина Александрова, возможно у Вас там формула выдает ошибку, а не значение #Н/Д.
Прикрепленные файлы
In GoTo we trust |
||
Михаил Накаряков Пользователь Сообщений: 4 |
#25 18.11.2021 09:15:10
Огромное спасибо, очень сильно помогли упростить рутину Изменено: Михаил Накаряков — 18.11.2021 15:20:29 |
||
Возможно, вас интересует: функция ЗАМЕНИТЬ в Excel.
- «Найти и заменить» в Excel
- Горячие клавиши
- Процедура «Найти и заменить» не работает
- Подстановочные знаки, или как найти “звёздочку”
- Замена нескольких значений на несколько
- Массовая замена с помощью функции “ПОДСТАВИТЬ”
- Файл-шаблон с формулой множественной замены
- Заменить несколько значений на одно
- С помощью функции «ПОДСТАВИТЬ»
- С помощью регулярных выражений
- Массовая замена в !SEMTools
- Пример: замена символов по вхождению
- Пример: замена списка слов на другой список слов
Процедура поиска и замены данных — одна из самых востребованных в Excel. Базовая процедура позволяет заменить за один заход только одно значение, но зато множеством способов. Рассмотрим, как эффективно работать с ней.
Горячие клавиши
Сочетания клавиш ниже заметно ускорят работу с инструментом:
- Для запуска диалогового окна поиска — Ctrl + F.
- Для запуска окна поиска и замены — Ctrl + H.
- Для выделения всех найденных ячеек (после нажатия кнопки «найти всё») — Ctrl + A.
- Для очистки всех найденных ячеек — Ctrl + Delete.
- Для ввода одних и тех же данных во все найденные ячейки — Ввод текста, Ctrl + Enter.
Смотрите gif-пример: здесь я произвожу поиск ячеек с дальнейшим их редактированием. В отличие от замены, редактирование найденных ячеек позволяет быстро менять их содержимое целиком.
Процедура «Найти и заменить» не работает
Я сам когда-то неоднократно впадал в ступор в этой ситуации. Уверен и видишь своими глазами, что искомый паттерн в данных есть, но Excel при выполнении процедуры поиска сообщает:
или при замене:
Так вот, совет нажать кнопку “Параметры” в обоих этих сообщениях действительно полезен — там наверняка активен чекбокс “Учитывать регистр” или “Ячейка целиком”, которые мешают Excel найти искомое. Excel, в свою очередь, сохраняет конфигурацию последнего поиска.
Подстановочные знаки, или как найти “звёздочку”
Сухая официальная справка по Excel сообщает:
— что можно использовать подстановочные символы “*” и “?”;
— что “*” и “?” означают несколько символов, включая их отсутствие, и один любой символ;
— что их можно использовать для соответствующих процедур поиска.
Чего не говорит справка, так это того, что в комбинации с опцией “ячейка целиком” эти символы позволяют, не прибегая к помощи расширенного фильтра и процедуры поиска группы ячеек:
- находить ячейки, заканчивающиеся на определенный символ, слово или текст,
- находить ячейки, начинающиеся с определенного символа, слова или текста,
- находить непустые ячейки.
Если хотите поподробнее познакомиться с этими и другими специальными символами, читайте соответствующую статью.
В примере ниже мы находим все двузначные числа, затем числа, заканчивающиеся и начинающиеся на 7, и, наконец, все непустые ячейки. Напомню, выделить все результаты поиска помогает горячее сочетание клавиш Ctrl + A.
Так а как найти звёздочку?
Действительно, забыл. Чтобы найти «звёздочку», нужно в окошке поиска ставить перед ней знак ~ (тильда), он находится обычно под клавишей Esc. Это позволяет экранировать “звездочку”, как и вопросительный знак, и не воспринимать их как служебные символы.
Замена нескольких значений на несколько
Массовая замена в Excel — довольно частая потребность. Очень часто нужно массово и при этом быстро заменить несколько символов, слов и т.д. на другие. При этом на текущий момент простого инструмента в стандартном функционале Excel нет.
Тем не менее, если очень нужно, любую задачу можно решить. В зависимости от того, на что вы хотите заменить, могут помочь комбинации функций, регулярные выражения, а в самых сложных случаях — надстройка !SEMTools.
Эта задача более сложная, чем замена на одно значение. Как ни странно, функция «ЗАМЕНИТЬ» здесь не подходит — она требует явного указания позиции заменяемого текста. Зато может помочь функция «ПОДСТАВИТЬ».
Массовая замена с помощью функции “ПОДСТАВИТЬ”
Используя несколько условий в сложной формуле, можно производить одновременную замену нескольких значений. Excel позволяет использовать до 64 уровней вложенности — свобода действий высока. Например, вот так можно перевести кириллицу в латиницу:
При этом, если использовать в качестве подставляемого фрагмента пустоту, можно использовать функцию для удаления нескольких символов, — смотрите, как удалить цифры из ячейки этим способом.
Но у решения есть и свои недостатки:
- Функция ПОДСТАВИТЬ регистрозависимая, что заставляет при замене одного символа использовать два его варианта — в верхнем и нижнем регистрах. Хотя в некоторых случаях, как, например, на картинке выше, это и преимущество.
- Максимум 64 замены — хоть и много, но все же ограничение.
- Формально процедура замены таким способом будет происходить массово и моментально, однако длительность написания таких формул сводит на нет это преимущество. За исключением случаев, когда они будут использоваться многократно.
Файл-шаблон с формулой множественной замены
Вместо явного прописывания заменяемых паттернов в формуле существует вариант использовать внутри нее ссылки на ячейки, значения в которых можно прописывать на свое усмотрение. Это сократит время, так как не требует редактирования сложной формулы.
Файл доступен по ссылке, но можно и не скачивать его, а просто скопировать текст формулы ниже и вставить ее в любую ячейку, кроме диапазона A1:B64. Формула заменяет в ячейке C1 значения в столбце A стоящими напротив в столбце B.
А вот и она сама (тройной клик по любой части текста = выделить всю формулу): обращается к ячейке D1, делая 64 замены по правилам, указанным в ячейках A1-B64. При этом в столбцах можно удалять значения — это не нарушит её работу.
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(D1;$A$1;$B$1);$A$2;$B$2);$A$3;$B$3);$A$4;$B$4);$A$5;$B$5);$A$6;$B$6);$A$7;$B$7);$A$8;$B$8);$A$9;$B$9);$A$10;$B$10);$A$11;$B$11);$A$12;$B$12);$A$13;$B$13);$A$14;$B$14);$A$15;$B$15);$A$16;$B$16);$A$17;$B$17);$A$18;$B$18);$A$19;$B$19);$A$20;$B$20);$A$21;$B$21);$A$22;$B$22);$A$23;$B$23);$A$24;$B$24);$A$25;$B$25);$A$26;$B$26);$A$27;$B$27);$A$28;$B$28);$A$29;$B$29);$A$30;$B$30);$A$31;$B$31);$A$32;$B$32);$A$33;$B$33);$A$34;$B$34);$A$35;$B$35);$A$36;$B$36);$A$37;$B$37);$A$38;$B$38);$A$39;$B$39);$A$40;$B$40);$A$41;$B$41);$A$42;$B$42);$A$43;$B$43);$A$44;$B$44);$A$45;$B$45);$A$46;$B$46);$A$47;$B$47);$A$48;$B$48);$A$49;$B$49);$A$50;$B$50);$A$51;$B$51);$A$52;$B$52);$A$53;$B$53);$A$54;$B$54);$A$55;$B$55);$A$56;$B$56);$A$57;$B$57);$A$58;$B$58);$A$59;$B$59);$A$60;$B$60);$A$61;$B$61);$A$62;$B$62);$A$63;$B$63);$A$64;$B$64)
Заменить несколько значений на одно
С помощью функции «ПОДСТАВИТЬ»
При замене нескольких значений на одно и то же механика работы формул на основе нескольких уровней вложенности не будет отличаться от замены нескольких на несколько. Просто третий аргумент (на что заменить) на всех уровнях вложенности будет один и тот же. Кстати, если оставить его пустым (кавычки без символов между ними), то это позволит удалить определенные символы. Пример: удалить цифры из ячейки путем замены на пустоту:
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"1";"");"2";"");"3";"");"4";"");"5";"");"6";"");"7";"");"8";"");"9";"");"0";"")
С помощью регулярных выражений
Важно: регулярные выражения не поставляются в Excel “из коробки”, но формулы ниже доступны бесплатно, если установить надстройку !SEMTools.
Регулярные выражения (RegEx, регулярки) — наиболее удобное решение, когда нужно заменить несколько символов на один. Все эти несколько символов обычным способом безо всяких разделителей нужно перечислить внутри квадратных скобок. Примеры формул:
=regexreplace(A1;"d";"#")
=regexreplace(A1;"w";"#")
=regexreplace(A1;"а-яА-Я";"#")
=regexreplace(A1;"s";"_")
Первая заменяет на символ “#” все цифры, вторая — все английские буквы, а третья — все кириллические символы в верхнем и нижнем регистре. Четвёртая заменяет любые пробелы, в том числе табуляцию и переносы строк, на нижнее подчеркивание.
Если же нужно заменять не символы, а несколько значений, состоящих в свою очередь из нескольких букв, цифр или знаков, синтаксис предполагает уже использование круглых скобок и вертикальной черты “|” в качестве разделителя.
Массовая замена в !SEMTools
Надстройка для Excel !SEMTools позволяет в пару кликов производить замены на всех уровнях:
- символов и их сочетаний,
- паттернов регулярных выражений,
- слов,
- целых ячеек (в некоторой степени аналог ВПР).
При этом процедуры изменяют исходный диапазон, что экономит время. Все что нужно —предварительно выделить его, определиться с задачей, вызвать нужную процедуру и выделить два столбца сопоставления заменяемых и замещающих значений (предполагается, что если вы знаете, что на что менять, то и такие списки есть).
Пример: замена символов по вхождению
Аналог обычной процедуры замены без учета регистра заменяемых символов, по вхождению. С одним отличием: здесь замена массовая и можно выбрать сколько угодно строк с парами «заменяемое-заменяющее» значение.
Ниже пример с единичными символами, но паттерны могут быть какими угодно в зависимости от вашей задачи.
Пример: замена списка слов на другой список слов
На этом примере — замена списка слов на другой список, в данном случае на одно и то же слово. Здесь решается задача типизации разнородных фраз путем замены слов, содержащих латиницу и цифры, на одно слово. Далее после этой операции можно будет посчитать уникальные значения в столбце, чтобы выявить наиболее популярные сочетания.
С версии !SEMTools 9.18.18 появилась опция: при замене списка слов не учитывать пунктуацию в исходных предложениях, а регистр слов теперь сохраняется.
Инструменты находятся в группе макросов «ИЗМЕНИТЬ» в отдельном меню и для удобства продублированы в меню «Изменить символы», «Изменить слова» и «Изменить ячейки».
Скачивайте надстройку !SEMTools и делайте массовую замену символов, слов или целых списков в Excel!
Смотрите также по теме поиска и замены данных в Excel:
- Найти заглавные/строчные буквы в ячейке;
- Найти латиницу или кириллицу в тексте;
- Найти числа в текстовых ячейках;
- Обнаружить текстовые символы;
- Функция НАЙТИ в Excel;
- Функция ПОИСК в Excel;
- Функция ЗАМЕНИТЬ в Excel;
- Найти определенные символы в ячейках Excel.
Замена подстроки, содержащейся в текстовых значениях ячеек указанного диапазона, другой подстрокой с помощью метода 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 – поиск полного вхождения искомого текста в содержимое ячейки.
Макрос на Поиск опред.текста и замену на опред.текст |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
В ст В так сказать основной признак для сортировки данных за месяц в других столбцах
Предполагается что он будет таким на протяжении всего месяца
Но вдруг какое-то событие — и на определенной неделе признак меняется и становится как в ст D
Прошел месяц
Начался новый
Старый файл сохраняется в архив как есть
На новым период копированием создается новый
И тут надо вернуть значения ст D в соответствие со ст В Т.е. снова предположить что признак от недели к неделе не будет меняться
Добавлено через 1 минуту
Столбцы сопоставлять по строкам
B1 — D1
Добавлено через 4 минуты
Причем предполагается что периодов в месяце 5
Основное значение задается перед первым периодом и в каждом периоде может меняться
Т е приводить в соответствие нужно 4 стобца
Добавлено через 8 минут
Т.е. хотелось бы выбирать столбцы в которых производить замену
Да еще и для каждого листа книги разные столбцы могут быть
(по высоте в том числе)
Добавлено через 12 минут
И еще!!! Изначально во всех «неглавных» столбцах первоначально стоит формула простой прямой ссылки на главный
И с идеале эту же формулу ссылки вернуть нужно после выполнения макроса
Функция найти и заменить, различные результаты с макросом.
Автор interseptor, 02.11.2013, 21:06
« назад — далее »
Пример прикреплен (с макросом))).
Весь лист имеет формат текст (т.к. надо копировать с инета, но не в этом суть)
Необходимо в столбце А заменить точку на запятую. Если это сделать вручную функцией «найти и заменить», то всё работает. А вот если макросом, то нет — нет ни точки, ни запятой.
Почему так? И как изменить макрос, чтобы такого не было???
Кстати, если после точки (котор. заменят на запятую) всего два знака, то макрос работает… ничё не понимаю… памагите
Однако так надо.
Sub Макрос1()
Columns("A:A").Select
Selection.Replace What:=".", Replacement:="."
End Sub
Это все VBA шалит.
Спасибо!!!
никогда бы не догадался, решение работает, хотя ХЗ почему… мож када прозрею
Эксель наука сложная, до конца не изученная
Для ускорения прозрения.
В VBA из файла попадает ТЕКСТ с точкой.
В VBA десятичный разделитель — точка.
Строка
Selection.Replace What:=".", Replacement:="."
превращает текст в число.
VBA передает это число в Excel, а уже Excel, в соответствии с региональными настройками, заменяет десятичный разделитель точку на запятую.
Как-то так.
Ясно, спасибо за разъяснения, учту.
- Профессиональные приемы работы в Microsoft Excel
-
►
Обмен опытом -
►
Microsoft Excel -
►
Функция найти и заменить, различные результаты с макросом.
- Excel VBA Найти и заменить
Excel VBA Найти и заменить
Вы когда-нибудь задумывались об автоматизации функции поиска и замены в Excel. В VBA мы можем создать макрос, который можно использовать для поиска и замены всего, что мы обычно делаем в Excel, путем нажатия сочетаний клавиш Ctrl + H. С помощью VBA Find and Replace мы можем автоматизировать поиск любого слова и заменить его другим замещением. Это помогает, когда нам нужно выполнить одно и то же действие несколько раз.
Как найти и заменить слова в Excel VBA?
Ниже приведены различные примеры, чтобы найти и заменить слова в Excel, используя код VBA.
Вы можете скачать этот шаблон VBA для поиска и замены Excel здесь — VBA для поиска и замены шаблона Excel
VBA Find and Replace — пример № 1
В очень простом примере у нас есть набор данных, который состоит из некоторого имени. И некоторые имена повторяются, как показано ниже.
Теперь мы создадим код, по которому мы найдем любое повторяющееся имя и заменим его чем-то другим. Для этого выполните следующие шаги.
Шаг 1: Перейдите в меню « Вставка» в VBA и выберите « Модуль», как показано ниже.
Шаг 2: Как только мы это сделаем, мы откроем новый модуль. В этом модуле напишите подкатегорию от имени VBA Find and Replace, или вы можете выбрать любое имя этой подкатегории.
Код:
Sub Find_Replace1 () End Sub
Шаг 3: Поскольку у нас есть данные в столбце B от ячейки B2 до B10, мы сначала выберем этот диапазон из B2: B10.
Код:
Sub Find_Replace1 () Range ("B2: B10"). Replace End Sub
Шаг 4: Теперь, чтобы заменить что-то, нам нужно искать это слово. Здесь также мы сначала выберем функцию Replace, чтобы посмотреть, что нам нужно заменить.
Код:
Sub Find_Replace1 () Range ("B2: B10"). Replace End Sub
Согласно синтаксису функции Replace, мы найдем то, что нам нужно заменить.
Шаг 5: Давайте выберем имя из списка « Бен » как то, что нам нужно заменить.
Код:
Sub Find_Replace1 () Range ("B2: B10"). Replace What: = "Ben" End Sub
Шаг 6: Теперь выберите слово для замены, которым мы должны заменить выбранное слово. Здесь мы решили заменить имя Бен на Сэма, который упоминается как Замена, как показано ниже.
Код:
Sub Find_Replace1 () Range ("B2: B10"). Replace What: = "Ben", Replacement: = "Sam" End Sub
Шаг 7: Теперь скомпилируйте код и запустите его, нажав на кнопку Play или нажав клавишу F5, как показано ниже.
Мы увидим, что все ячейки, содержащие имя Бена, теперь заменены именем Сэм . И это также выделено желтым цветом.
VBA Find and Replace — пример № 2
Мы все, возможно, столкнулись с ситуацией, когда мы пытались найти и заменить некоторые слова буквами с учетом регистра. Предположим, в списке, если мы хотим заменить только то слово, которое имеет несколько строчных или прописных букв. И если мы используем процесс, который мы видели в примере 1, то мы в конечном итоге заменим все подобные слова в этом списке вместе с требуемым. Этот процесс не может быть выполнен с помощью функции поиска и замены (Ctrl + H) в Excel. Для этого у нас есть положение в VBA.
Давайте рассмотрим ниже данные для этого. Как мы видим, мы специально добавили слово BEN в верхнем регистре в ячейку B2.
Выполните следующие шаги, чтобы найти и заменить слово BEN.
Шаг 1: Запустите подкатегорию VBA Find and Replace там, как показано ниже.
Код:
Sub Find_Replace2 () End Sub
Шаг 2: Выберите список как Диапазон от B2 до B10.
Код:
Sub Find_Replace2 () Range ("B2: B10") End Sub
Шаг 3: Теперь выберите точное слово, которое мы хотим заменить. Здесь мы выбрали BEN, который находится в ячейке B2.
Код:
Sub Find_Replace2 () Range ("B2: B10"). Replace What: = "BEN" End Sub
Шаг 4: Опять же, мы выбрали то же слово, которое мы видели в примере 1, в качестве замены BEN, чем Сэм .
Код:
Sub Find_Replace2 () Range ("B2: B10"). Replace What: = "BEN", Replacement: = "Sam" End Sub
Шаг 5: Теперь для замены точного слова BEN нам нужно использовать MatchCase, если оно становится TRUE, как показано ниже.
Код:
Sub Find_Replace2 () Range ("B2: B10"). Replace What: = "BEN", Replacement: = "Sam", MatchCase: = True End Sub
MatchCase поможет нам определить то слово, которое мы хотим заменить точным соответствием. Здесь слово, которое мы выбрали, это BEN в верхнем регистре, а в списке есть и другие подобные слова, но в правильном.
Шаг 6: Теперь запустите код, нажав на кнопку Play или нажав клавишу F5.
Мы увидим, что слово BEN, которое было в ячейке B2, теперь заменено словом « Sam », выделенным желтым цветом. И подобные слова Бен, которые расположены в ячейках B5 и B8 соответственно, все еще остаются неизменными.
Вот как работает точное совпадение.
Шаг 7: Теперь мы удалим добавленный MatchCase из приведенного выше кода и посмотрим, как это будет работать.
Код:
Sub Find_Replace2 () Range ("B2: B10"). Replace What: = "BEN", Replacement: = "Sam", MatchCase: = True End Sub
Шаг 8: Снова скомпилируйте и запустите код.
Мы увидим, что код заменил все ячейки, содержащие слово Ben, как показано выше. Это означает, что после удаления MatchCase код будет работать, как мы видели в примере 1.
Плюсы Excel VBA Найти и заменить
- Основное обучение заключается в том, что мы можем заменить регистрозависимые слова и содержимое ячеек с помощью VBA Find and Replace, как показано в примере-2.
- Если действие повторяется вручную и несколько раз, то автоматизация будет преимуществом в экономии времени и усилий.
- Даже если у нас есть огромный набор данных, в котором мы хотим заменить определенные слова, это можно сделать, не нарушая Excel в громоздких файлах.
То, что нужно запомнить
- Мы можем создать макрос функции Find and Replace с помощью опции Record Macro на вкладке Developer. Это самый простой способ создать макрос, если вы новичок в кодировании.
- Сохранение файла в формате Macro Enable Excel позволит в будущем использовать код.
- Мы можем заменить любой вид текста, слова, числа или символа VBA Find and Replace.
Рекомендуемые статьи
Это руководство по VBA Find and Replace. Здесь мы обсудим, как найти и заменить слова в Excel с помощью VBA, а также с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи —
- VBA Break для Loop
- ЗАМЕНА Формулы в Excel
- Полное руководство VBA Find
- НАЙТИ функцию в Excel