Поиск и замена данных | Работа в МойОфис Текст Настольная версия
Ввод текстаБуфер обменаПроверка правописанияСноскиГиперссылкиПерекрестные ссылкиЗакладкиВставить текущую дату или времяПоиск и замена данных
- Ввод текста
- Буфер обмена
- Проверка правописания
- Сноски
- Гиперссылки
- Перекрестные ссылки
- Закладки
- Вставить текущую дату или время
- Поиск и замена данных
Продукт: МойОфис Профессиональный, МойОфис Стандартный, МойОфис Образование, МойОфис Текст
youtube.com/embed/xZvWGOnKeWo» frameborder=»0″ allow=»accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture» allowfullscreen=»»/>Поиск по документу
Чтобы найти данные в текущем документе, выполните следующие действия: 1.Откройте панель поиска одним из следующих способов: •Выберите пункт командного меню Правка > Поиск. •На боковой панели нажмите кнопку . •Нажмите сочетание клавиш Ctrl+F. 2.При необходимости укажите параметры поиска: •Весь документ/Без учета колонтитулов – выполнить поиск во всем документе, включая колонтитулы, или выполнить поиск во всем документе, за исключением колонтитулов. •С учетом регистра – выполнить поиск с учетом заглавных и строчных букв в искомом тексте. •Только слова целиком – найти только целые слова, а не текст, который является частью другого слова. 3.В поле Найти введите данные для поиска. Результаты поиска подсветятся в документе. Используйте кнопки под строками поиска и замены, чтобы перемещаться по найденным фрагментам. |
Замена по документу
Чтобы найти и заменить данные в текущем документе, выполните следующие действия: 1.Откройте панель поиска одним из следующих способов: •Выберите пункт командного меню Правка > Поиск. •На боковой панели нажмите кнопку . •Нажмите сочетание клавиш Ctrl+F. 2.При необходимости укажите параметры поиска: •Весь документ/Без учета колонтитулов – выполнить поиск во всем документе, включая колонтитулы, или выполнить поиск во всем документе, за исключением колонтитулов. •С учетом регистра – выполнить поиск с учетом заглавных и строчных букв в искомом тексте. •Только слова целиком – найти только целые слова, а не текст, который является частью другого слова. 3. В поле Найти введите данные для поиска. 4.В строку Заменить на введите данные для замены или оставьте поле пустым, если требуется удалить найденный фрагмент. 5.Если замену требуется выполнять с учетом заглавных и строчных букв в найденном тексте, поставьте флажок Заменять с учетом регистра. Регистр учитывается только для первого символа в найденном слове. Пример: в тексте документа необходимо заменить слово договор на слово контракт. При этом слово договор может быть написано как со строчной, так и с заглавной буквы (например, в начале предложения). Поставьте флажок Заменять с учетом регистра, чтобы слово договор со строчной буквы заменилось на слово контракт со строчной буквы, а слово Договор с заглавной буквы заменилось на слово Контракт с заглавной буквы. 6.Замените данные одним из следующих способов: •Нажмите кнопку Заменить, чтобы заменить данные в текущем выделенном фрагменте. •Нажмите кнопку Заменить все, чтобы одновременно заменить данные во всех найденных фрагментах. |
Поделиться:
Был ли материал полезным?
Пользователи, считающие этот материал полезным: 1 из 1
Предыдущее
Массовая замена текста формулами
21967 11.08.2020 Скачать пример
Предположим, что у вас имеется список, в котором с разной степенью «пряморукости» записаны исходные данные — например, адреса или названия компаний:
Хорошо видно, что один и тот же город или компания тут присутствуют в разношёрстных вариантах, что, очевидно, будет создавать массу проблем при работе с этими таблицами в будущем. И если чуть подумать, то можно найти массу примеров похожих задач из других областей.
А теперь представьте, что к вам такие кривые данные попадают регулярно, т.е. это не единичная история из серии «исправил вручную, забыл», а проблема на регулярной основе и в большом количестве ячеек.
Что же делать? Не заменять же вручную 100500 раз кривой текст на правильный через окошко «Найти и заменить» или нажимая Ctrl+H?
Первое, что приходит в голову в подобной ситуации — произвести массовую замену по составленному заранее справочнику соответствия неправильных и правильных вариантов — вроде такого:
К сожалению, при очевидной распространенности подобной задачи, в Microsoft Excel не существует простых встроенных способов для её решения. Для начала, давайте разберёмся, как это делать формулами, без привлечения «тяжелой артиллерии» в виде макросов на VBA или Power Query.
Случай 1. Массовая полная замена
Начнём с относительно простого случая — ситуации, когда нужно заменить старый кривой текст на новый полностью.
Предположим, что у нас есть две таблицы:
В первой — исходные разномастные названия компаний. Во второй — справочник соответствия. Если находим в названии компании в первой таблице любое слово из столбца Найти, то нужно полностью заменить это кривое название на правильное — из столбца Заменить
Для удобства:
- Обе таблицы преобразованы в динамические («умные») с помощью сочетания клавиш Ctrl+T или командой Вставка — Таблица (Insert — Table).
- На появившейся вкладке Конструктор (Design) первой таблице присвоено имя Данные, а второй таблице-справочнику — Замены.
Чтобы объяснить логику формулы зайдём чуть издалека.
Взяв в качестве примера первую компанию из ячейки A2 и забыв временно про остальные компании, попробуем определить какой именно вариант из столбца Найти там встречается.
Эта функция определяет входит ли заданная подстрока (первый аргумент — все значения из столбца Найти) в исходный текст (первая компания из таблицы данных) и должна вывести на выходе либо порядковый номер символа, начиная с которого текст был найден, либо ошибку если подстрока не обнаружена.
Хитрость тут в том, что поскольку первым аргументом мы указали не одно, а несколько значений — эта функция будет возвращать в качестве результата тоже не одно значение, а массив из 3 элементов. Если у вас не последняя версия Office 365 с поддержкой динамических массивов, то после ввода этой формулы и нажатия на Enter вы этот массив увидите прямо на листе:
Если же у вас предыдущие версии Excel, то после нажатия на Enter мы увидим только первое значение из массива результатов, т.е. ошибку #ЗНАЧ! (#VALUE!).
Пугаться не стоит 🙂 На самом деле наша формула работает и увидеть весь массив результатов всё равно можно, если выделить введённую функцию в строке формул и нажать клавишу F9(только не забудьте потом нажать Esc, чтобы вернуться обратно к формуле):
Полученный массив результатов означает, что в исходном кривом названии компании (ГК Морозко ОАО) из всех значений в столбце Найти нашлось только второе (Морозко), причём начиная с 4-го по счёту символа.
Теперь добавим к нашей формуле функцию ПРОСМОТР (LOOKUP):
У этой функции три аргумента:
- Искомое значение — можно использовать любое достаточно большое число (главное, чтобы оно превышало длину любого текста в исходных данных)
- Просматриваемый_вектор — тот диапазон или массив, где мы ищем искомое значение. Здесь это введённая ранее функция НАЙТИ, возвращающая массив {#ЗНАЧ!:4:#ЗНАЧ!}
- Вектор_результатов — диапазон, откуда мы хотим вернуть значение, если искомое значение найдено в соответствующей ячейке. Здесь это правильные названия из столбца Заменить нашей таблицы-справочника.
Главная и неочевидная фишка тут в том, что функция ПРОСМОТР при отсутствии точного совпадения всегда ищет ближайшее наименьшее (предыдущее) значение. Поэтому, указав в качестве искомого значения любое здоровенное число (например 9999), мы заставим ПРОСМОТР находить ячейку с ближайшим наименьшим числом (4) в массиве {#ЗНАЧ!:4:#ЗНАЧ!} и выдавать соответствующее ей значение из вектора результатов, т.е. правильное название компании из столбца Заменить.
Второй нюанс заключается в том, что, технически, наша формула является формулой массива, т.к. функция НАЙТИ возвращает в качестве результатов не одно, а массив из трёх значений. Но поскольку функция ПРОСМОТР поддерживает массивы «из коробки», то нам не придётся вводить эту формулу как классическую формулу массива — с помощью сочетания клавиш Ctrl+Shift+Enter. Достаточно будет простого Enter.
Вот и всё. Надеюсь вы ухватили логику.
Осталось перенести готовую формулу первую ячейку B2 столбца Исправлено — и наша задача решена!
Само-собой, с обычными (не умными) таблицами эта формула тоже замечательно работает (только не забудьте про клавишу F4 и закрепление соответствующих ссылок):
Случай 2. Массовая частичная замена
Этот случай чуть похитрее. Снова имеем две «умных» таблицы:
Первая таблица с криво записанными адресами, которые нужно исправить (я назвал её Данные2). Вторая таблица — справочник, по которому нужно произвести частичную замену подстроки внутри адреса (я назвал эту таблицу Замены2).
Принципиальное отличие тут в том, что нужно заменять только фрагмент исходных данных — например, в первом адресе неправильный «С-Петербург» на правильный «Санкт-Петербург», оставив остальную часть адреса (индекс, улицу, дом) в исходном виде.
Готовая формула будет выглядеть так (для удобства восприятия я разделил её на насколько строк с помощью Alt+Enter):
Основную работу здесь выполняет стандартная Excel’евская текстовая функция ПОДСТАВИТЬ (SUBSTITUTE), у которой 3 аргумента:
- Исходный текст — первый кривой адрес из столбца Адрес
- Что ищем — тут мы используем трюк с функцией ПРОСМОТР (LOOKUP) из предыдущего способа, чтобы вытащить значение из столбца Найти, которое входит как фрагмент в кривой адрес.
- На что заменить — аналогичным образом находим соответствующее ему правильное значение из столбца Заменить.
Вводить эту формулу с Ctrl+Shift+Enter здесь тоже не нужно, хотя она и является, по-сути, формулой массива.
И хорошо видно (см. ошибки #Н/Д на предыдущей картинке), что такая формула, при всей её элегантности, обладает и парой недостатков:
- Функция ПОДСТАВИТЬ является регистрочувствительной, поэтому «Спб» в предпоследней строке так и не нашлось в таблице замен. Для решения этой проблемы можно либо использовать функцию ЗАМЕНИТЬ (REPLACE), либо предварительно привести обе таблицы к одному регистру.
- Если текст изначально правильный или в нём нет ни одного фрагмента на замену (последняя строка), то наша формула выдает ошибку. Этот момент можно нейтрализовать перехватом и заменой ошибок с помощью функции ЕСЛИОШИБКА (IFERROR):
- Если в исходном тексте встречается сразу несколько фрагментов из справочника, то наша формула заменяет только последний (в 8-й строке Лиговский «проспект» заменился на «пр-т», а вот «С-Пб» на «Санкт-Петербург» уже нет, т.к. «С-Пб» стоит выше в справочнике). Эту проблему можно решить повторным прогоном нашей же формулой, но уже по столбцу Исправлено:
Не идеально и, местами, громоздко, но гораздо лучше, чем однообразная замена вручную, правда? 🙂
P.S.
В следующей статье разберёмся, как реализовать подобную массовую подстановку с помощью макросов и Power Query.
Ссылки по теме
- Как работает функция ПОДСТАВИТЬ (SUBSTITUTE) для замены текста
- Поиск точного совпадения текста с помощью функции СОВПАД (EXACT)
- Поиск и подстановка с учётом регистра (регистрочувствительный ВПР)
Как найти все экземпляры определенного слова и заменить его гиперссылкой?
Задавать вопрос
спросил
Изменено 7 лет, 9 месяцев назад
Просмотрено 11 тысяч раз
Мне нужен макрос или метод для поиска и замены экземпляра слова в большом текстовом документе гиперссылкой, отображаемый текст которой совпадает с исходным словом.
Пример: Я бы искал «проект» и заменял все экземпляры гиперссылкой www. example.com с отображаемым текстом, остающимся «проектом».
Я нашел много макросов, которые очень похожи, но не совсем то, что мне нужно. Например макрос с этого сайта
Как программно отредактировать все гиперссылки в документе Word?
..изменит все адреса гиперссылок в документе и их отображаемый текст. Я думал, что могу изменить все экземпляры «проекта» на гиперссылку, используя встроенный поиск и замену, а затем использовать этот макрос для изменения отображаемого текста. Однако встроенная функция поиска и замены не создает гиперссылки, вам нужно навести курсор на несвязанный текст и нажать пробел/ввод, чтобы активировать ее. Это нецелесообразно в большом документе.
Чтобы быть действительно привередливым, было бы удивительно, если бы он изменил только обычный основной текст, а не весь текст, поэтому я мог бы оставить заголовки и заголовки без изменений. Я предполагаю, что это возможно, используя встроенный поиск и замену для замены только обычного текста, а затем, возможно, макрос для добавления гиперссылок. 9в.
5.Нажмите Заменить все.
не макрос но работает. Вы можете записать это как макрос, тогда у вас будет макрос, который вам нужен.
Использование опции форматирования для выбора только стиля форматирования, который вы хотите заменить.
1
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
VBA найти слово и заменить его гиперссылкой в Word 2010
Задавать вопрос
спросил
Изменено 7 лет, 8 месяцев назад
Просмотрено 9к раз
У меня есть текстовый документ с текстом. В некоторых абзацах у меня есть слова, на которые я хочу добавить гиперссылку. Вот пример:
Книга «Когда восходит солнце», ABC-1212321-DEF, вышла сегодня…….
Необходимо найти «ABC-1212321-DEF» и применить гиперссылку следующим образом: http ://google.com/ABC-sometext-1212321-anothertext-DEF
Все строки в документе начинаются с «ABC-» и заканчиваются на «-DEF».
Заранее спасибо.
РЕДАКТИРОВАТЬ:
Вот что у меня получилось:
Sub InsertLinks() Dim r As Диапазон Dim SearchString как строка Установите r = ActiveDocument.Range Строка поиска = "ABC-" С r.Find .MatchWildcards = Истина Делать, пока .Execute(findText:=SearchString, Forward:=True) = True ActiveDocument.Hyperlinks.Add Anchor:=r, _ Адрес:=Заменить(r.Текст, " ", ""), _ SubAddress:="", ScreenTip:="", TextToDisplay:=r.Text С р .Конец = r.Гиперссылки(1).Диапазон.Конец .Свернуть 0 Конец с Петля Конец с Конец сабвуфера
Теперь обнаруживает ABC- и добавляет случайную ссылку. Но нужно получить число между ABC- и -DEF. Длина не та.
- vba
- гиперссылка
- ms-word
- word-2010
3
РЕШЕНИЕ
Это код, который решил мою проблему:
Sub InsertLinksTB() Dim Rng As Range Dim SearchString как строка Dim EndString как строка Dim Id как строка Dim Link As String Установите Rng = ActiveDocument.Range Строка поиска = "ABC-" КонечнаяСтрока = "-DEF" С Rng.Find .MatchWildcards = Истина Делать, пока .Execute(findText:=SearchString, Forward:=False) = True Rng.MoveStartUntil ("ABC-") Rng.MoveEndUntil ("") 'MsgBox (Rng.Text) Id = Split(Split(Rng.Text, "ABC-")(1), "-DEF")(0) 'MsgBox (идентификатор) Ссылка = "http://google.com/" и идентификатор ActiveDocument.Hyperlinks.Add Anchor:=Rng, _ Адрес:=Ссылка, _ SubAddress:="", ScreenTip:="", TextToDisplay:=Rng.