Страницы: 1
RSS
Массовый поиск и замена текста во всей книге, поиск и замена определенного диапазона значений в одной колонке значениями другой колонки
 
Добрый день.
Есть данные в книге разбиты по листам. Необходимо заменить данные на другие.
Вопрос следующий: возможно ли составить макрос и вывести его на кнопку "Замена"?
При условиях, что авто замена будет происходить по всей книге. На отдельном листе ("Замена") есть колонка с необходимым диапазоном значений, рядом находятся значения на которые будут заменяться.
Изменено: foma067 - 20.04.2017 18:17:04
 
Попробуйте так
В стандартный модуль
Код
Sub Zamena()
Dim Sht As Worksheet
Dim i As Long
Dim iLastRow As Long
Application.ScreenUpdating = False
    iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
  For i = 2 To iLastRow
    For Each Sht In Worksheets
      If Sht.Name <> "Замена" Then        ' кроме листа "Замена"
        With Sht
          .Columns("A:F").Replace Cells(i, "A"), Cells(i, "B")
        End With
      End If
    Next
  Next
Application.ScreenUpdating = True
End Sub
 
Kuzmich, тут частичная замена...
Код
Sub ReplacePart()
Dim a, shReplace As Worksheet, sh, i As Long, j As Long, r As Long, oldPart, newPart
Set shReplace = Sheets("Замена")
r = 2
Do
  oldPart = shReplace.Cells(r, 1)
  newPart = shReplace.Cells(r, 2)
  For Each sh In Worksheets
    If sh.Name <> shReplace.Name Then
      With sh
        a = .UsedRange.Value
        For i = 1 To UBound(a)
          For j = 1 To UBound(a, 2)
            a(i, j) = Replace(a(i, j), oldPart, newPart)
          Next
        Next
        .UsedRange = a
      End With
    End If
  Next
  r = r + 1
Loop Until shReplace.Cells(r, 1) = ""
End Sub
 
То же самое, но в виде надстройки для Excel
http://excelvba.ru/programmes/Replacements
 
Игорь, AAF, Kuzmich, Спасибо большое! Вы мне очень помогли! Все способы хороши, единственное что, во втором способе время затраченное макросом на замену больше чем в других. А в последней ссылке файл почему-то не открывается.
 
Вот побыстрей... То же, что и у Кузьмича, только добавлено LookAt:=xlPart
Код
Sub ReplacePart()
Dim a, shReplace As Worksheet, sh, i As Long, j As Long, r As Long, oldPart, newPart
Set shReplace = Sheets("Замена")
r = 2
Do
  oldPart = shReplace.Cells(r, 1)
  newPart = shReplace.Cells(r, 2)
  For Each sh In Worksheets
    If sh.Name <> shReplace.Name Then
      With sh
        .Cells.Replace What:=oldPart, Replacement:=newPart, _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
        SearchFormat:=False, ReplaceFormat:=False
      End With
    End If
  Next
  r = r + 1
Loop Until shReplace.Cells(r, 1) = ""
End Sub
 
Цитата
AAF написал:
Вот побыстрей
шикарный код. спасибо
 
Код
Sub ReplacePart()
Dim a, shReplace As Worksheet, sh, i As Long, j As Long, r As Long, oldPart, newPart
Set shReplace = Sheets("Замена")
r = 2
Do
  oldPart = shReplace.Cells(r, 1)
  newPart = shReplace.Cells(r, 2)
  For Each sh In Worksheets
    If sh.Name <> shReplace.Name Then
      With sh
        .Cells.Replace What:=oldPart, Replacement:=newPart, _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
        SearchFormat:=False, ReplaceFormat:=False
      End With
    End If
  Next
  r = r + 1
Loop Until shReplace.Cells(r, 1) = ""
End Sub


А можете немного переделать этот макрос для переименования листов в книге ?
 
Ваш вопрос не связан с темой
 
без макросов и всей непонятной Вам лабуды жмете
Ctrl+H
пишете что заменитиь на что, выбираете на листе/в книге жмеье заменить все
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
без макросов и всей непонятной Вам лабуды жметеCtrl+Hпишете что заменитиь на что, выбираете на листе/в книге жмеье заменить все

У вас видимо 2020 excel раз через Ctrl+H листы переименовать можно.
 
у меня Excel 2035 и его достаточно для всего. что мне нужно.
откройте глаза и Параметры в выше описанном окне
в поле искать вместо "на листе" (по умолчанию) выберите "в книге"
диапазоны значений заменяйте последовательно, значение за значением
удачи!
Изменено: Ігор Гончаренко - 01.09.2019 01:29:47
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
у меня Excel 2035 и его достаточно для всего. что мне нужно.

Да я понял, когда будет и у меня 2035 Excel, тогда тоже смогу переименовывать листы через Ctrl+H.

А вообще извиняюсь что поднял из архива эту тему, не все люди последние комментарии читают, нужно новую было создать.
 
ff48,
извините, я читаю заголовок темы:
Цитата
Массовый поиск и замена текста во всей книге, поиск и замена определенного диапазона значений в одной колонке значениями другой колонки
где, тут о переименовании листов?????
Вам необходимо заменить названия листов? - создайте тему, сформулируйте вопрос, возможно, Вам ответят. (не заваливайте хламом чужие темы)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
не заваливайте хламом чужие темы

Вот в каждом сообщении нужно насрать немного: лабуды, глаза, хлам. Будьте добрее.
 
я пытаюсь, но индикатор доброты уперся в ограничетель
извините, еще раз
создайте тему, сможете сформулировать вопрос - возможно получите ответ
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
ff48, обратите внимание на #9 и прекратите препираться: Ваш вопрос не имеет никакого отношения к заявленной теме.
Страницы: 1
Читают тему
Наверх