Svinkovod.ru

Бытовая техника
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как в Excel массово найти и заменить несколько значений на другие

Как в Excel массово найти и заменить несколько значений на другие

Процедура поиска и замены данных — одна из самых востребованных в Excel. Базовая процедура позволяет заменить за один заход только одно значение, но зато множеством способов. Рассмотрим, как эффективно работать с ней.

Горячие клавиши

Сочетания клавиш ниже заметно ускорят работу с инструментом:

  • Для запуска диалогового окна поиска — Ctrl + F
  • Для запуска окна поиска и замены — Ctrl + H
  • Для выделения всех найденных ячеек (после нажатия кнопки «найти все» — Ctrl + A
  • Для очистки всех найденных ячеек — Ctrl + Delete
  • Для ввода одних и тех же данных во все найденные ячейки — Ввод текста, Ctrl + Enter

Смотрите gif-примеры: здесь мы производим поиск ячеек с дальнейшим их редактированием. В отличие от замены, редактирование найденных ячеек позволяет быстро менять их содержимое целиком.

Процедура «Найти и заменить» не работает

Я сам когда-то неоднократно впадал в ступор в подобных ситуациях. Уверен и видишь своими глазами, что искомый паттерн в данных есть, но Excel при выполнении процедуры поиска сообщает:

не удалось ничего найти по вашему запросу в Excel

Не удалось ничего найти по вашему запросу

Мы не нашли ничего, что нужно заменить - Excel

Мы не нашли ничего, что нужно было заменить

Так вот, совет нажать кнопку «Параметры» в обоих этих сообщениях действительно полезен. Там наверняка активен чекбокс «Учитывать регистр» или «Ячейка целиком», которые мешают Excel найти искомое. Excel сохраняет конфигурацию последнего поиска.

Статус опций «Учитывать регистр» и «Ячейка целиком» виден после нажатия кнопки «Параметры».

Подстановочные знаки, или как найти «звездочку»

Сухая официальная справка по Excel сообщает, что можно использовать подстановочные символы «*» и «?». Что они означают несколько символов, включая их отсутствие, и один любой символ. И что их можно использовать для соответствующих процедур поиска.

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

  • Находить ячейки, заканчивающиеся на определенный символ, слово или текст
  • Аналогично, находить ячейки, начинающиеся с определенного символа, слова или текста
  • Находить непустые ячейки

На примере ниже мы находим все двузначные числа, затем числа, заканчивающиеся и начинающиеся на 7, и, наконец, все непустые ячейки. Напомню, выделить все результаты поиска помогает горячее сочетание клавиш Ctrl + A

Так а как найти звездочку?

Действительно, забыл. Чтобы найти «звездочку», нужно в окошке поиска ставить перед ней знак

(тильда), находится обычно под клавишей Esc . Это позволяет экранировать «звездочку», как и вопросительный знак, и не воспринимать их как служебные символы.

Замена нескольких значений на несколько

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

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

Эта задача более сложная, чем замена на одно значение. Как ни странно, функция «ЗАМЕНИТЬ» здесь не подходит — она требует явного указания позиции заменяемого текста. Зато может помочь функция «ПОДСТАВИТЬ«.

Массовая замена с помощью функции «ПОДСТАВИТЬ»

Используя несколько условий в сложной формуле, можно производить одновременную замену нескольких значений. Excel позволяет использовать до 64 уровней вложенности — свобода действий высока. Например, вот так можно перевести кириллицу в латиницу:

Читайте так же:
Знак евро в excel

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

Но у решения есть и свои недостатки:

  • Функция ПОДСТАВИТЬ регистрозависимая, что заставляет при замене одного символа использовать два его варианта — в верхнем и нижнем регистрах. Хотя, в некоторых случаях, как пример на картинке выше, это и преимущество.
  • максимум 64 замены — хоть и много, но все же ограничение.
  • формально процедура замены таким способом будет происходить массово и моментально, однако, длительность написания таких формул сводит на нет это преимущество. За исключением случаев, когда они будут использоваться многократно.

Файл-шаблон с формулой множественной замены

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

Файл доступен по ссылке, но можно и не скачивать его, а просто скопировать текст формулы ниже и вставить ее в любую ячейку, кроме диапазона A1:B64. Формула заменяет в ячейке C1 значения в столбце A стоящими напротив в столбце B.

функция для замены нескольких букв

Формула в файле-шаблоне для множественной замены на примере транслитерации

А вот и она сама (тройной клик по любой части текста = выделить всю формулу). Обращается к ячейке D1, делая 64 замены по правилам, указанным в ячейках A1-B64. При этом в столбцах можно удалять значения — это не нарушит ее работу.

Заменить несколько значений на одно

С помощью функции «ПОДСТАВИТЬ«

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

С помощью регулярных выражений

Важно: регулярные выражения не поставляются в Excel «из коробки», но формулы ниже доступны бесплатно, если установить надстройку !SEMTools

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

Первая заменяет на символ «#» все цифры, вторая — все английские буквы, а третья — все кириллические символы в верхнем и нижнем регистре. Четвертая заменяет любые пробелы, в т.ч. табуляцию и переносы строк, на нижнее подчеркивание.

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

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

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

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

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

Меню инструментов массовой замены в !SEMTools

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

Читайте так же:
Можно ли заразиться вич через бритвенный станок

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

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

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

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

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

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

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

Примеры функции ПОДСТАВИТЬ для замены текста в ячейке Excel

Функция ПОДСТАВИТЬ в Excel выполняет динамическую замену определенной части строки на указанное новое значение и возвращает новую строку, содержащую замененную часть текста. Благодаря этой функции можно подставлять значения из другой ячейки. Рассмотрим возможности функции на конкретных примерах в Excel.

Функция ПОДСТАВИТЬ при условии подставляет значение

Пример 1. В результате расчетов, произведенных в некотором приложении, были получены некоторые значения, записанные в таблицу Excel. Некоторые величины рассчитать не удалось, и вместо числового представления была сгенерирована ошибка “NaN”. Необходимо заменить все значения “NaN” на число 0 в соответствующих строках.

Таблица данных.

Для замены и подстановки используем рассматриваемую формулу в качестве массива. Вначале выделим диапазон ячеек C2:C9, затем введем формулу через комбинацию Ctrl+Shift+Enter:

Для замены и подстановки.

Функция ЧЗНАЧ выполняет преобразование полученных текстовых строк к числовым значениям. Описание аргументов функции ПОДСТАВИТЬ:

  • B2:B9 – диапазон ячеек, в которых требуется выполнить замену части строки;
  • “NaN” – фрагмент текста, который будет заменен;
  • 0 – фрагмент, который будет вставлен на место заменяемого фрагмента.

Для подстановки значений во всех ячейках необходимо нажать Ctrl+Shift+Enter, чтобы функция была выполнена в массиве. Результат вычислений:

подстановка значений во всех ячейках.

Таким же образом функция подставляет значения и другой таблицы при определенном условии.

Автозамена значения в текстовых ячейках с помощью функции ПОДСТАВИТЬ

Пример 2. Провайдер домашнего интернета хранит данные о своих абонентах в таблице Excel. Предположим, улица Садовая была переименована в Никольскую. Необходимо быстро произвести замену названия улицы в строке данных об адресе проживания каждого клиента.

Таблица.

Для выполнения заданного условия используем формулу:

Примечание: в данном примере ПОДСТАВИТЬ также используется в массиве Ctrl+Shift+Enter.

В результате получим:

В результате.

Формула с макросом регулярного выражения и функция ПОДСТАВИТЬ

Пример 3. При составлении таблицы из предыдущего примера была допущена ошибка: все номера домов на улице Никольская должны быть записаны как «№№-Н», где №№ — номер дома. Как быстро исправить ошибку?

Пример 3.

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

  1. Открыть редактор макросов (Ctrl+F11).
  2. Вставить исходный код функции (приведен ниже).
  3. Выполнить данный макрос и закрыть редактор кода.
Читайте так же:
Как включить геолокацию в гугл хром

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

Регулярные выражения могут быть различными. Например, для выделения любого символа из текстовой строки в качестве второго аргумента необходимо передать значение «w», а цифры – «d».

Для решения задачи данного Примера 3 используем следующую запись:

  1. Функция ЕСЛИОШИБКА используется для возврата исходной строки текста (B2), поскольку результатом выполнения функции RegExpExtract(B2;»Никольская») будет код ошибки #ЗНАЧ!, если ей не удалось найти хотя бы одно вхождение подстроки «Никольская» в строке B2.
  2. Если результат выполнения сравнения значений RegExpExtract(B2;»Никольская»)=»Никольская» является ИСТИНА, будет выполнена функция ПОДСТАВИТЬ(B2;RegExpExtract(B2;»d+»);RegExpExtract(B2;»d+»)&»-Н»), где:
  • a. B2 – исходный текст, содержащий полный адрес;
  • b. RegExpExtract(B2;»d+») – формула, выделяющая номер дома из строки с полным адресом;
  • c. RegExpExtract(B2;»d+»)&»-Н» – новый номер, содержащий исходное значение и символы «-Н».

Результат подстановки.

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

Excel works!

menu

Мы уже разбирали как быстро найти и заменить данные в Excel по группе ячеек — в столбце или массиве данных. Но как это сделать в одной ячейке и желательно формулой? К примеру? у вас есть список машин, и каждый день вам присылают файл с новым списком машин. Нужно проверить есть ли такие номера в вашем основном списке. Но как обычно в номера машин добавляют пробелы или слеши, а самый худший вариант букву О вместо нуля Если вы регулярно выполняете одну и ту же операцию, то вручную нажимать Ctrl + H каждый раз неудобно, плюс придется запоминать, какие именно символы нужно заменять. Функции ПОДСТАВИТЬ и ЗАМЕНИТЬ в Excel — это отличный выход из ситуации.

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

Есть номер А 777 АА 01 из него надо формулой сделать А777АА01 формулой.

Функция ПОДСТАВИТЬ в Excel

Как работает формула показано на первой картинке. Состав разберем ниже:

  • Текст — адрес ячейки или сам текст, в котором надо сделать замену символов, в примере А 777 АА 01
  • Стар_текст — что нам нужно заменить? Пробел.
  • Нов_текст — на что нужно заменить? Меняем на ничего, т.е. на пусто в формуле, это будет «»
  • Номер_вхождения — заполнять необязательно, но при этом реквизит очень полезный, в официальной справке говорится о «вхождении символа», но объясню простым языком. Здесь вы можете указать номер символа в строке (пробела в нашем случае). Т.е. если нужно заменить только пробел между 777 и АА (это второй по счету пробел в номере), формула будет выглядеть как

И в итоге вы получите А 777АА 01

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

В данном случае мы убираем пробел, точку и слэш в номере «А 777 АА/01.»

ПОДСТАВИТЬ и ЗАМЕНИТЬ в Excel

Функция ЗАМЕНИТЬ и ЗАМЕНИТЬБ в Excel

Функция ЗАМЕНИТЬ делает почти все тоже самое, что и подставить, но делает это с определенного символа. Аргументы такие:

Читайте так же:
Где в word номера страниц

Пример. Необходимо первую букву номера машины заменить на другую. Из А777АА01 сделать Б777АА01

Сначала описание аргументов:

  • Стар_текст — как и в ПОДСТАВИТЬ, текст, в котором нужно заменить т.е. А777АА01
  • Начальная_позиция — с какого символа производить замену, с первого.
  • Число_знаков сколько знаков меняем — один
  • Нов_текст — и на что меняем? На букву Б

Подставить3

Очень похоже на ПСТР , честно говоря 🙂

ЗАМЕНИТЬБ — это маленькая загадка Excel, даже в иностранных интернетах мало информации о ней. Если вкратце, то просто ЗАМЕНИТЬ меняет любой символ (даже если он размером 2 байта), ЗАМЕНИТЬБ меняет только однобайтные символы (аргумент число_знаков меняется на). Практического применения я для себя не нашел 🙂 Если кто-нибудь подскажет, буду благодарен!

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

ПОДСТАВИТЬ и ЗАМЕНИТЬ в Excel. Что еще?

Обе функции учитывают регистр! Т.е. если вы указали большую букву А, маленькая буква заменяться не будет!

Функция ПОДСТАВИТЬ доступна только в версиях 2007 и выше, будьте аккуратны, если конечный пользователь будет использовать более ранние версии!

Замена по списку

Команда поможет справиться с задачей по массовой замене слов. Предположим у нас имеется список остатков товара на складах, который обновляется и выгружается в Excel ежедневно:
Исходная таблица
Список может быть на несколько тысяч строк, естественно. Однако в этом списке вместо наименования товара записан его артикул. Однако для дальнейшей работы с остатками необходим не артикул, а то наименование, которое имеется в остальных документах и в базе товара, т.к. этот список в последствии должен выгружаться на сайт для актуализации остатков товара в интернет-магазине, которое будет отражено клиентам. Чтобы получился список следующего вида:
Результат замены
Для этого выгружается отдельный список соответствия товара артикулу:
Список соответствия
В данном случае стандартная замена данных(Ctrl+H) больше похожа на испытание. Это сколько раз надо сделать замену, чтобы заменить каждый артикул? Наименований товаров могут быть сотни, а то и тысячи. Можно также прибегнуть к различным хитростям вроде вытягивания последнего слова(чтобы получить артикул), но ведь может быть и так, что артикул расположен где-то внутри ячейки, а не последним словом(например, » Аккумулятор для ноутбуков 25011445, БУ » или еще хуже — несколько разных артикулов в одной ячейке: » Аккумулятор для ноутбуков 25011445, 25011446, 25011447, 25011448 «).
Вот здесь в самый раз пригодится команда Замена по списку. Она на основании списка соответствия может заменить все найденные значения артикулов на наименования за пару минут и без особых усилий. При этом замену можно сделать не только в отдельных ячейках, но и на всем листе, во всей книге или во всех открытых книгах.
Форма замены

Список соответствий находится в ячейках( [Замена.xls]Соответствия!A2:B8 )- диапазон из двух столбцов, содержащий значения для поиска и замены. Не должен содержать заголовков, иначе текст заголовков будет воспринят как значения для поиска и замены.

    Искомые значения в столбце: указывается номер столбца в списке соответствий, в котором расположены значения для замены. На примере артикулов и наименований: нам необходимо заменить артикул на наименование. Следовательно в поле необходимо указать число 1, т.к. именно в первом столбце перечень артикулов для замены на наименования товара. А значения для замены будут взяты из второго столбца. Если же необходимо произвести обратную процедуру — заменить наименования на артикулы — то в поле необходимо указать число 2 и в этом случае наименования будут заменены артикулами.
Читайте так же:
Как в ворде выровнять строки в таблице

Произвести замену:
в этом блоке можно выбрать где конкретно производить замену

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

Производить замену по части ячейки — если установлено, то каждое из искомых значений списка будет просматриваться по части ячейки. Например, если в ячейке текст » Аккумулятор для ноутбуков 25011445 «, то в данном случае артикул является частью другого текста ячейки. И если галочку не установить — то значение артикула » 25011445 » не будет заменено, т.к. к сравнению будет принят весь текст ячейки — » Аккумулятор для ноутбуков 25011445 «.
Для чего это нужно: логично, что в большинстве случаев замену необходимо производить именно по части текста ячейки, но бывают случаи, когда необходимо заменять именно весь текст. Например, если в ячейке содержится только наименование товара(» Аккумулятор для ноутбуков Samsung R590-JS03 «) и его надо заменить на конкретный артикул. Если сделать по части ячейки, то в этом случае может получиться так, что отдельно будет заменена только часть текста » Аккумулятор для ноутбуков «, а остальное уже не попадет под замену. Такая замена будет некорректна с точки зрения требуемого результата.

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

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

Примечание: Замена производится только в не защищенных ячейках. Если какие-либо листы защищены и произвести замену в них невозможно, то программа пропустит такие листы, но после работы будет показано сообщение с перечислением имен листов, в которых замену произвести не удалось. Если листов более 15-ти, то имена будут выведены только для первых 15-ти листов.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector