Страницы: 1
RSS
Массовая замена нескольких слов во всей книге
 
День добрый!

Как заменить несколько слов на соответствующие им, совершив одновременную массовую замену по всей книге без предварительного выделения заменяемых фрагментов?
На листе 1 во вложенном файле 2 колонки - что менять - на что менять. На других двух листах имеются Фамилии, которые подлежат изменению.
Предполагаю, что такую задачу возможно решить только макросом. Не силен в этом.
 
Тут либо через типовой функционал Найти и Заменить (но каждую замену отдельно делать, если их с десяток всего - может и проще даже) либо макрос писать если там сотни пар
 
В том то и дело, что там сотни пар! Поэтому буду признателен, если кто-то решил эту задачу макросом.
Изменено: OlegKor - 25.03.2025 20:02:35
 
Массовая замена слов
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
К сожалению, на этом сайте (я его читал) есть условие: "Замены производятся исключительно в выделенных на листе ячейках", и в данном случае это никак не устроит, так как лист не один, а много, и невозможно на многих листах перед запуском макроса отметить все требуемые ячейки.... Да и сам макрос рассчитан на поиск на одном листе, а не во всей книге.
Изменено: OlegKor - 25.03.2025 20:56:39
 
Здравствуйте.
Записал макрорекордером и чуток подпилил.
Скрытый текст
Изменено: gling - 25.03.2025 22:06:52
 
Порыскал и...Эврика! Кому интересно, свою задачу решу методом предварительного редактирования загружаемой информации как то рассказано Николаем Павловым в  "Массовая замена текста в Power Query функцией List.Accumulate". Как часто бывает, Планета excel всё решает!)
 
OlegKor, приветствую.
Можете попробовать также мой вариант, во вложении. Вдруг подойдет. )
Изменено: asesja - 25.03.2025 22:13:52
 
gling, вечер добрый, Спасибо, что откликнулись! Почему-то у меня кнопка не жмётся..?
 
asesja, Большое спасибо, всё работает! Взял на вооружение, благодарю! :)  
 
Цитата
написал:
Почему-то у меня кнопка не жмётся
Потому что я накосячил. Попробуйте еще вариант.
Изменено: gling - 25.03.2025 23:37:31
 
Цитата
написал:
Замены производятся исключительно в выделенных на листе ячейках
что мешает Selection заменить на что угодно другое? :)
На всех листах - цикл никто не отменял, примеров на форуме куча.
Вместо этого блока:
Код
'заменяем
    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
нужно записать так:
Код
'заменяем
    Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
        If ws.Name <> "Соответствия" Then
            For lr = 1 To UBound(avArr, 1)
                s = avArr(lr, lToFindCol)
                If Len(s) Then 'если значение для замены не пустое
                    ws.Cells.Replace s, avArr(lr, lToReplaceCol), lLookAt
                End If
            Next lr
        End If
    Next
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
gling, Спасибо! Этот макрос даже короче. Всё работает!
Страницы: 1
Читают тему
Наверх