Массовая замена в файлах excel

Массовый поиск и замена в документах MS Office (Word и Excel)

Имеется большое количество документов Word или Excel и в каждом документе нужно
изменить несколько фраз. В каждом документе через замену (Найти и заменить ) это слишком долго.

Решение:

  1. Вариант с использованием макроса
  2. a) для Microsoft Excel:
    Скопировать макрос в папку с файлами, запустить макрос, задать условия замены, заключая их в кавычки.
    выбрать любой файл из папки.

    Программа пройдётся по всем листам всех книг (*.xls;*.xlsx) в этой папке,
    и поменяет текст в заданной графе. Недостатком способа очевиден –
    замена производится только в указанной графе.
    Скачать макрос можно по ссылке

    б) для Microsoft Word:
    Создать новый документ Word, открыть редактор Microsoft VBA, добавить
    новый модуль, скопировать текст процедуры ниже. О том как создать макрос более подробно написано
    здесь.
    При выполнении макроса нужно выбрать файлы, данные в которых подлежат замене:

    Что изменить и на что изменить прописывается в теле макроса:
    что_заменить = «123»
    чем_заменить = «1234»

    Сам макрос:

  3. В виде приложения

Для документов Word подойдет @Text Replacer — бecплaтнaя пpoгpaммa для быcтpoгo пoиcкa и зaмeны
тeкcтa в фaйлax из выбpaннoй пaпки и влoжeнныx пoдпaпoк.
Работает с дoкумeнтaми тeкcтoвoгo peдaктopa Word: *.doc, *.docx, *.rtf, фaйлaми тeкcтoвoгo фopмaтa:
*.txt, *.ini, *.html, *.php и дp., paбoтa c кoтopыми вoзмoжнa чepeз cтaндapтный Блoкнoт Windows.
Вce фaйлы дpугиx типoв oбpaбaтывaютcя пpoгpaммoй кaк тeкcтoвыe.

Пpoгpaммoй пoддepживaeтcя пoиcк и зaмeнa мнoгocтpoчныx фpaгмeнтoв тeкcтa c учeтoм peгиcтpa и
игнopиpуeмыx cимвoлoв — тaкиx кaк пpoбeлы и пepeвoды cтpoки (windows / *nix).
Программа бесплатная, скачать можно по
ссылке
с официального сайта программы

Не пробуйте @Text Replacer для документов Excel – программа их портит!

Для документов Excel попробуйте FireBall.exe – небольшую программу, не требующую установки.
Файлы Excel необходимо скопировать в папку с FireBall.exe.

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

Яндекс.Метрика

Возможно, вас интересует: функция ЗАМЕНИТЬ в 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

Если же нужно заменять не символы, а несколько значений, состоящих в свою очередь из нескольких букв, цифр или знаков, синтаксис предполагает уже использование круглых скобок и вертикальной черты “|” в качестве разделителя.

Массовая замена в !SEMTools

Надстройка для Excel !SEMTools позволяет в пару кликов производить замены на всех уровнях:

  • символов и их сочетаний,
  • паттернов регулярных выражений,
  • слов,
  • целых ячеек (в некоторой степени аналог ВПР).
Массовая замена в Excel с !SEMTools
Меню инструментов массовой замены в !SEMTools

При этом процедуры изменяют исходный диапазон, что экономит время. Все что нужно —предварительно выделить его, определиться с задачей, вызвать нужную процедуру и выделить два столбца сопоставления заменяемых и замещающих значений (предполагается, что если вы знаете, что на что менять, то и такие списки есть).

Пример: замена символов по вхождению

Аналог обычной процедуры замены без учета регистра заменяемых символов, по вхождению. С одним отличием: здесь замена массовая и можно выбрать сколько угодно строк с парами «заменяемое-заменяющее» значение.

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

Массовая замена символов по вхождению на примере Leet Language (некоторые английские буквы заменяются на похожие цифры)

Пример: замена списка слов на другой список слов

На этом примере — замена списка слов на другой список, в данном случае на одно и то же слово. Здесь решается задача типизации разнородных фраз путем замены слов, содержащих латиницу и цифры, на одно слово. Далее после этой операции можно будет посчитать уникальные значения в столбце, чтобы выявить наиболее популярные сочетания.

замена списка слов на одно и то же слово
Замена списка слов на другой список в !SEMTools

С версии !SEMTools 9.18.18 появилась опция: при замене списка слов не учитывать пунктуацию в исходных предложениях, а регистр слов теперь сохраняется.

замена списка слов на другой список в Excel

Инструменты находятся в группе макросов «ИЗМЕНИТЬ» в отдельном меню и для удобства продублированы в меню «Изменить символы», «Изменить слова» и «Изменить ячейки».

Скачивайте надстройку !SEMTools и делайте массовую замену символов, слов или целых списков в Excel!


Смотрите также по теме поиска и замены данных в Excel:

  • Найти заглавные/строчные буквы в ячейке;
  • Найти латиницу или кириллицу в тексте;
  • Найти числа в текстовых ячейках;
  • Обнаружить текстовые символы;
  • Функция НАЙТИ в Excel;
  • Функция ПОИСК в Excel;
  • Функция ЗАМЕНИТЬ в Excel;
  • Найти определенные символы в ячейках Excel.

Массовая замена текста во всех файлах в папке и подпапке

Anis625

Дата: Воскресенье, 07.03.2021, 14:36 |
Сообщение № 1

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

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

Сообщений: 670


Репутация:

31

±

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


Excel 2013

Добрый день, всем участникам форума!

Снова с просьбой направить или послать (шучу) на путь истинный в познаниях VBA.
Общий сетевой диск переезжает на новый сервер. А в некоторых файлах есть линки между собой соответственно они будут на старый сетевой диск. Вот и решили сделать массовую замену пути изменив его начальную часть.
Вопрос не новый поэтому поискал в просторах интернета. Нашел на дружественных (надеюсь) сайтах (ссылки добавил в начало кода) почти подходящее решение (один код перебирает папки и подпапки, а другой — находит и заменяет текст по всей открытой книге). И их нужно было поженить между собой. В этом и затык. По отдельности работают, а как думал правильно соединил не работают, но и ошибку не выдает.
Также прикрутил код отключения обновления связей — тоже не срабатывает — выводит сообщение об обновлении.
Файлы: VBA_change (с кодами) и Test1 — условный файл который поместил в условную папку

Буду признателен за совет и сдействие

 

Ответить

Anis625

Дата: Воскресенье, 07.03.2021, 14:46 |
Сообщение № 2

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

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

Сообщений: 670


Репутация:

31

±

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


Excel 2013

С изменением текста разобрался: вшил код замены текста в основной код и добавил ссылку на открытую книгу wb.
Но сообщения о необходимости обновить связи выходят. Если получится допилить может кому пригодиться готовый код

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

9454535.xlsm
(16.9 Kb)

Сообщение отредактировал Anis625Воскресенье, 07.03.2021, 14:56

 

Ответить

doober

Дата: Воскресенье, 07.03.2021, 15:03 |
Сообщение № 3

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

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

Сообщений: 913


Репутация:

317

±

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


Excel 2010

Желаете?
Запросто. Если так файл открыть :D [vba]

Код

  Set wb = Application.Workbooks.Open(sFolder & sFiles, UpdateLinks = xlUpdateLinksAlways)

[/vba]


 

Ответить

Anis625

Дата: Воскресенье, 07.03.2021, 15:14 |
Сообщение № 4

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

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

Сообщений: 670


Репутация:

31

±

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


Excel 2013

doober,

Нет уж :D , если бы совсем без какого-нибудь решения пришел с вопросом думаю можно было бы =)

То что нужно получилось. Учить и учить мне VBA, как вы как то правильно сказали на практике.
Спасибо Вам огромное

 

Ответить

Anis625

Дата: Воскресенье, 07.03.2021, 15:25 |
Сообщение № 5

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

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

Сообщений: 670


Репутация:

31

±

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


Excel 2013

doober,
Попробовал сделать тоже самое с кодом при переборе не только папки, но и подпапок (в модуле код) ругается на эту строку:
[vba]

Код

Set wb = Application.Workbooks.Open(sPath & objFile.Name, UpdateLinks = xlUpdateLinksAlways)

[/vba]

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

6057601.xlsm
(17.0 Kb)

Сообщение отредактировал Anis625Воскресенье, 07.03.2021, 15:25

 

Ответить

Anis625

Дата: Воскресенье, 07.03.2021, 15:40 |
Сообщение № 6

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

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

Сообщений: 670


Репутация:

31

±

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


Excel 2013

Получилось решить задачку так:
[vba]

Код

Set wb = Application.Workbooks.Open(sPath & objFile.Name, UpdateLinks:=0)

[/vba]

Сообщение отредактировал Anis625Воскресенье, 07.03.2021, 15:41

 

Ответить

Anis625

Дата: Воскресенье, 07.03.2021, 15:43 |
Сообщение № 7

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

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

Сообщений: 670


Репутация:

31

±

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


Excel 2013

doober,
Но сообщения «Будьте внимательный! В фале могут быть персональные данные …» остались.
Пытался вылечить так:
[vba]

Код

Application.DisplayAlerts = False
Application.EnableEvents = False

[/vba]
Не помогает

 

Ответить

Anis625

Дата: Воскресенье, 07.03.2021, 15:45 |
Сообщение № 8

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

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

Сообщений: 670


Репутация:

31

±

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


Excel 2013

Не там ставил. Все получилось сделать.
Сейчас причешу и выложу финальный файл. Может кому пригодится

 

Ответить

Anis625

Дата: Воскресенье, 07.03.2021, 15:56 |
Сообщение № 9

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

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

Сообщений: 670


Репутация:

31

±

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


Excel 2013

Финальный файл (добавил отключение/включение автоматического режима пересчета формул в начале и конце, чтобы быстрее отрабатывал код на больших размерах файлах). Спасибо большое doober,

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

6767917.xlsm
(20.6 Kb)

Сообщение отредактировал Anis625Воскресенье, 07.03.2021, 15:57

 

Ответить

doober

Дата: Воскресенье, 07.03.2021, 16:36 |
Сообщение № 10

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

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

Сообщений: 913


Репутация:

317

±

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


Excel 2010

Не за что.
Я бы 0 не догадался поставить.


 

Ответить

Anis625

Дата: Воскресенье, 07.03.2021, 17:37 |
Сообщение № 11

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

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

Сообщений: 670


Репутация:

31

±

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


Excel 2013

doober,
В мануале посмотрел. Вот и Вас научил чему то новому :D

 

Ответить

Anis625

Дата: Вторник, 09.03.2021, 11:08 |
Сообщение № 12

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

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

Сообщений: 670


Репутация:

31

±

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


Excel 2013

Еще раз добрый день, всем участникам форума!
Код работает отлично, только как же без НО при тестировании на продуктиве =)
Столкнулся с такой ситуацией, что при замене пути к папке Excel автоматически пытается обновить связь и выдает #ССЫЛКА если не находит путь.
Автоматический пересчет формул пробовал отключить — не помогает.
Можно ли как то сделать чтобы замена была без обновления связи после замены?

Сообщение отредактировал Anis625Вторник, 09.03.2021, 11:15

 

Ответить

Anis625

Дата: Вторник, 09.03.2021, 11:20 |
Сообщение № 13

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

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

Сообщений: 670


Репутация:

31

±

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


Excel 2013

Так тоже пробовал[vba]

Код

sh.Cells.Replace «C:UsersUserDownloadsНовая папка», «C:UsersUserDownloadsНовая папка2»
            Application.AskToUpdateLinks = False

[/vba] не помогает

 

Ответить

Anis625

Дата: Вторник, 09.03.2021, 14:07 |
Сообщение № 14

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

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

Сообщений: 670


Репутация:

31

±

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


Excel 2013

Как вариант если это кодом можно прописать при выводе такого окна — не заменять на новое значение. Но это не знаю как сделать =(

 

Ответить

Anis625

Дата: Среда, 10.03.2021, 06:28 |
Сообщение № 15

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

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

Сообщений: 670


Репутация:

31

±

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


Excel 2013

Все в интернете перерыл, чтобы хоть за что то зацепиться. В 2015 году на этом форуме тоже поднимали этот вопрос- без решения он остался. Неужели не решаемая задачка.

 

Ответить

Pelena

Дата: Среда, 10.03.2021, 09:40 |
Сообщение № 16

Группа: Админы

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

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

что имеется в виду: нет такой папки или нет в ней такого файла?
Если нет папки, то её просто можно создать до цикла по листам.
[vba]

Код

             On Error Resume Next
            MkDir «C:UsersUserDownloadsНовая папка2»

[/vba]
Если нет файла, то ошибка #ССЫЛКА! исчезнет, как только Вы положите в эту папку нужный файл.


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Anis625

Дата: Среда, 10.03.2021, 10:39 |
Сообщение № 17

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

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

Сообщений: 670


Репутация:

31

±

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


Excel 2013

Pelena,
Файлы могут содержать ссылку на файл который был перемещен (это исключение, но такие увы есть). При замене у них ссылки выходит #ССЫЛКА. По ним не нужно менять ссылку. В идеале было бы если макрос просто меняет путь в формуле без обновления. Я думал это так работает. А оказывается он сразу пытается обновить связь.
Возвращать на место файл тоже вряд ли кто будет. Их сотни (среди тысяч)

Сообщение отредактировал Anis625Среда, 10.03.2021, 10:40

 

Ответить

Pelena

Дата: Среда, 10.03.2021, 10:52 |
Сообщение № 18

Группа: Админы

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

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

могут содержать ссылку на файл который был перемещен

но тогда ведь искомый фрагмент (что меняем) будет уже другим и не попадёт под замену. Или я что-то не так понимаю.
Я к тому, что ошибка #ССЫЛКА! может уже была до выполнения макроса


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Anis625

Дата: Среда, 10.03.2021, 14:28 |
Сообщение № 19

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

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

Сообщений: 670


Репутация:

31

±

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


Excel 2013

Я к тому, что ошибка #ССЫЛКА! может уже была до выполнения макроса

Она может появиться если обновить связи. Но на входе обновление связей отключено и обновляются в ручную. Если бы связей было бы 100 можно и в ручную, а их несколько тысяч. И после замены пути в файлах хотелось чтобы ссылки по прежнему не обновлялись, а только в ручном режиме пользователем. Но до этого массово меняем по всем файлам Excel связи на новый сетевой диск.

 

Ответить

Хитрости »

12 Август 2015              83705 просмотров


Массовая замена слов

Предположим, что нам необходимо заменить все «ул.» на листе на «улица «. Или русское слово «дом» на английское «house». Или еще интереснее: все английские буквы на русские. Например, английская «а» должна быть заменена на русскую «a», английская «c» на русскую «с», английская «H» на русскую «Н» и т.д. А такое тоже нередко бывает и доставляет проблемы. Ведь если в одной таблице будут русские буквы, а в другой английские — то применение большинства встроенных функций поиска(та же ВПР) просто не найдут соответствия.
Если подобную замену надо сделать для одного сочетания, то все просто: жмем Ctrl+H и указываем что заменить и на что. Но если таких замен надо сделать 20? Или 120? Это надо будет 120 раз нажать и ввести что заменять и на что. А если это надо сделать еще и не в одном документе — то…Думаю сами справитесь с умножением количества замен на количество файлов, в которых это надо сделать. И вроде бы простая операция превращается в ваш личный ад на работе.
Недавно на форуме участнику потребовалось автоматизировать именно такую штуку. Т.к. код несложный — решил написать и чуть дополнив выложить для всех кому код может потребоваться:

Option Explicit
Sub Replace_Mass()
    Dim s As String
    Dim lCol As Long
    Dim avArr, lr As Long
    Dim lLastR As Long
    Dim lToFindCol As Long, lToReplaceCol As Long, lLookAt As Long
 
    'запрашиваем направление перевода - с русского на англ. или наоборот
    lCol = Val(InputBox("Укажите направление перевода:" & vbNewLine & _
                    "   1 - ru-en" & vbNewLine & _
                    "   2 - en-ru", "Запрос", 1))
    If lCol = 0 Then Exit Sub
    'запрашиваем по части ячейки искать или по всему тексту
    'по умолчанию - по части
    lLookAt = Val(InputBox("Искать соответствие по части ячейки или по всему тексту:" & vbNewLine & _
                    "   1 - по всему тексту" & vbNewLine & _
                    "   2 - по части ячейки", "Запрос", 2))
    If lLookAt = 0 Then Exit Sub
 
    Select Case lCol
    Case 1
        lToFindCol = 1
        lToReplaceCol = 2
    Case 2
        lToFindCol = 2
        lToReplaceCol = 1
    End Select
 
    Application.ScreenUpdating = 0
    'Получаем с листа Соответствия значения, которые надо заменить в выделенном диапазоне
    With ThisWorkbook.Sheets("Соответствия")
        lLastR = .Cells(.Rows.Count, 1).End(xlUp).Row
        avArr = .Cells(1, 1).Resize(lLastR, 2)
    End With
    'заменяем
    For lr = 1 To UBound(avArr, 1)
        s = avArr(lr, lToFindCol)
        If Len(s) Then 'если значение для замены не пустое
            Selection.Replace s, avArr(lr, lToReplaceCol), lLookAt
        End If
    Next lr
    Application.ScreenUpdating = 1
End Sub

Как это работает. В книге есть специальный лист с именем «Соответствия». На нем в столбце А записаны слова, которые необходимо заменить, а в столбце В — на что эти слова заменить. Если в столбце А пусто — то замена не будет произведена. Если в столбце В пусто — то значение из столбца А будет просто удалено.
Замены производятся исключительно в выделенных на листе ячейках. Ячейки могут быть несмежными.

Итак, необходимо сделать много замен. Скачиваете файл:

  Массовая замена слов (54,5 KiB, 9 783 скачиваний)

Примечание: Я сделал файл как переводчик. Т.е. в первом столбце русские слова, во втором английские. Но в столбцах может быть что угодно — хоть слова, хоть символы, хоть числа.

На лист «Соответствия» записываете в столбец А — что заменять, в столбец В — на что заменять. Переходите на лист книги, в котором необходимо произвести замену. Выделяете ячейки, значения в которых надо найти и заменить. После чего жмете Alt+F8 и выбираете макрос «Tips_Macro_ReplaceMASS.xls!Replace_Mass»(или просто «Replace_Mass», если код в той же книге, что и ячейки для поиска и замены).

Первым появится

окно с запросом направления перевода. По умолчанию 1(ru-en). Т.е. будет браться слово из столбца А и заменяться словом из столбца В. Но если указать 2 — то будет браться слово из столбца В и заменяться словом из столбца А. Т.е. аналог переводчика — с рус. на англ. и наоборот. Либо из А в В, либо из В в А.

Вторым появится

запрос на метод просмотра данных:

  • если указать «1 — по всему тексту» — данные из столбца А будут заменять только в том случае, если ячейка в выделенном для замены диапазоне полностью совпадает со значением из столбца А листа «Соответствия». Например, в любой из выделенных ячеек записано «На столе книга», а на листе «Соответствия» в столбце А есть только слово «книга». Замена не будет произведена, т.к. необходимо, чтобы в столбце А было так же «На столе книга».
  • если указать «2 — по части ячейки» — данные из столбца А будут заменять в случае, если ячейка в выделенном для замены диапазоне содержит любое слово из столбца А листа «Соответствия». На том же примере — «На столе книга». Если выбрать 2, то в тексте «На столе книга» слово книга будет заменено на слово из столбца В — «book».

И еще один практический пример чуть модифицированного кода. Предположим, имеется таблица выручки по реализации продукции:
Таблица выручки
Как видно, здесь присутствую только номера статей, но нет их расшифровки. Зато расшифровка есть в отдельном листе «Справочник»:
Справочник
Как видно, в справочнике присутствуют нужные номера статей и можно было бы применить ту же ВПР(VLOOKUP) для замен. Если бы не одно но: в таблице по реализации помимо номеров статьей есть еще лишний текст «Статья затрат:». Конечно, можно сначала заменить этот текст, потом в отдельном столбце применить ВПР, заменить формулу значениями и вернуть в исходный столбец. Если при этом надо еще оставить текст «Статья затрат:», то надо будет сделать еще доп.манипуляции либо при составлении формулы, либо после. В любом случае — слишком много лишних телодвижений. А значит бОльшие времязатраты.
Приложенный ниже файл поможет сделать это в разы быстрее:

Скачать файл с примером и кодом:

  Массовая замена слов — статьи.xls (91,5 KiB, 2 648 скачиваний)

и в итоге за пару секунд получим следующий результат:
Результат замены
Достаточно выделить столбец со статьями на листе с реализацией и запустить код(либо нажатием кнопки заменить значения, либо нажав Alt+F8 и выбрав из списка макросов макрос

Replace_Mass

).
После нажатия на кнопку будут запрошены следующие параметры:

  1. указать номер столбца значений в листе «Справочник», в котором искать соответствия номерам статей(в нашем случае это столбец 1(А))
  2. указать номер столбца, значениями которого заменять найденные в таблице реализации значения(это может быть один из трех столбцов справочника: Группа затрат, Статья затрат, Подстатьи затрат). Логичнее всего указать столбец 4, т.к. он наиболее детализирован и конкретнее указывает расшифровку статьи
  3. далее будет предложено указать точность поиска:
    • если указать «1 — по всему тексту» — данные будут заменены только в том случае, если значение ячейки в выделенном для замены диапазоне полностью совпадает со значением из столбца А листа «Справочник». Т.е. если бы у нас в таблице реализации был бы записан только номер статьи(1.01), тогда можно было бы указать именно 1
    • если указать «2 — по части ячейки» — данные будут заменены только в том случае, если значение ячейки в выделенном для замены диапазоне содержит любое значение из столбца А листа «Справочник». Это больше подходит к описанному случаю, т.к. нам необходимо заменить исключительно номер статьей на их расшифровку, оставив при этом текст «Статья затрат: «

Если все указано корректно, то на листе будут произведены все необходимые замены.
Возможные ошибки, которые предусмотрены кодом и о которых будет сообщено соответствующим сообщением(код прервется, замены не будут произведены):

  • на листе Справочник нет значений
  • в качестве столбца для поиска значений и для замены значений на листе Справочник указано одно и то же число
  • в качестве столбца значений для замены указано число, превышающее общее количество столбцов на листе Справочник

Особое внимание хочу уделить случаю, когда выбирается замена по части ячейки. В этом случае лучше список на листе Справочник отсортировать по длине текста по тому столбцу, в котором будут значения для поиска. Зачем это надо: т.к. значение по части ячейки будет заменять не полное соответствие, то есть вероятность неверных замен. Например, есть текст «Статья затрат: 1.011». В то же время на листе Справочник есть статьи «1.01» и «1.011». Т.к. «1.01» идет раньше в большинстве случаев, то текст будет заменен некорректно: «Статья затрат: ТВ1«.
Чтобы получить длину строки текста можно использовать функцию ДЛСТР(LEN):
=ДЛСТР(A2)
=LEN(A2)

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

Так же см.:
Замена значений по списку в PowerQuery
Найти в ячейке любое слово из списка
Замена ссылок в формулах на их значения
Как удалить строки по условию?


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Skip to content

Расширенный поиск и замена в Excel

Поиск и замена во всех или в выбранных книгах и таблицах

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

  • 60-дневная безусловная гарантия возврата денег

  • Бесплатные обновления на 2 года
  • Бесплатная и бессрочная техническая поддержка

С помощью расширенного поиска и замены в Excel вы сможете:

Производить одновременный поиск в нескольких книгах

Найдите и замените во всех открытых файлах или только в выбранных книгах и листах.

Искать по всем или только по определенным типам данных

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

Найти точные совпадения

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

Выполнять поиск с учетом регистра

Если символы в нижнем и верхнем регистре имеют значение, установите флажок Учитывать регистр.

Заменить все или только выбранные результаты поиска

Можно заменить прямо в результатах поиска. Выберите все или некоторые из найденных элементов и нажмите «Заменить все».

Искать на активном листе или в выбранных ячейках

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

Экспортировать найденные элементы в новую книгу

Выберите один из пяти вариантов экспорта: все найденные записи, строки или столбцы с найденными значениями и многое другое.

Найти и исправить опечатки

Оптимизируйте качество содержимого Excel, исключив все эти неприятные нечеткие совпадения и опечатки.

Приложение Ultimate Suite уже используют
companies logo

Что такое расширенный поиск и замена в Excel?

Этот инструмент расширяет возможности стандартной функции «Найти и заменить» в Excel несколькими полезными особенностями:

  • Найти и заменить во всех открытых книгах или только на выбранных листах из разных книг.
  • Одновременный поиск значений, формул, гиперссылок и комментариев.
  • Экспорт найденных записей в новую книгу одним щелчком мыши.
  • И это еще не всё…

Могу ли я искать нужный мне текст в комментариях?

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

Мне нужно найти и заменить определенное значение в нескольких книгах, возможно ли это?

Конечно! Самый простой способ — открыть все книги для поиска, а затем запустить расширенный поиск и замену. По умолчанию будут выбраны все листы во всех открытых книгах.

Может ли инструмент выполнять поиск только на определенных листах из разных книг?

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

Если один и тот же текст написан как в верхнем, так и в нижнем регистре, могу ли я найти только прописные буквы?

Да. Чтобы выполнить поиск с учетом регистра, просто установите флажок « Учитывать регистр» .

Могу ли я заменить только часть найденных значений, а не все?

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

Мне нужно найти исключительно совпадения всего содержимого ячеек, возможно ли это?

Да. Чтобы найти только точные совпадения, выберите опцию Вся ячейка.

Как я могу экспортировать найденные данные?

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

  • Экспортировать строки или столбцы с найденными значениями.
  • Экспортировать только выделенные записи, то есть элементы, которые вы сами выбрали в результатах поиска.
  • Экспортировать строки или столбцы, содержащие выделенные записи.

Могу ли я заменить все найденные записи в один клик?

Да, просто нажмите кнопку « Заменить все».

Могу ли я найти частичные совпадения в моем листе?

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

Могу ли я выбирать просто выбрать найденные значения, не заменяя их?

Конечно. Кнопка Выбрать ячейки предлагает пять вариантов выбора:

  • строки со всеми найденными значениями.
  • столбцы со всеми найденными значениями.
  • выделенные записи целиком.
  • строки с выделенными записями.
  • столбцы с выделенными записями.

Скачать  Ultimate Suite

Посмотреть все комментарии

Like this post? Please share to your friends:
  • Массовая вставка гиперссылок в excel
  • Массивы формул в расчетах excel
  • Массивы с текстом в excel
  • Массивы по макросам в excel
  • Массивы записей в vba excel