Добрый день. Есть данные в книге разбиты по листам. Необходимо заменить данные на другие. Вопрос следующий: возможно ли составить макрос и вывести его на кнопку "Замена"? При условиях, что авто замена будет происходить по всей книге. На отдельном листе ("Замена") есть колонка с необходимым диапазоном значений, рядом находятся значения на которые будут заменяться.
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
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
Игорь, 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
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пишете что заменитиь на что, выбираете на листе/в книге жмеье заменить все
У вас видимо 2020 excel раз через Ctrl+H листы переименовать можно.
у меня Excel 2035 и его достаточно для всего. что мне нужно. откройте глаза и Параметры в выше описанном окне в поле искать вместо "на листе" (по умолчанию) выберите "в книге" диапазоны значений заменяйте последовательно, значение за значением удачи!
Массовый поиск и замена текста во всей книге, поиск и замена определенного диапазона значений в одной колонке значениями другой колонки
где, тут о переименовании листов????? Вам необходимо заменить названия листов? - создайте тему, сформулируйте вопрос, возможно, Вам ответят. (не заваливайте хламом чужие темы)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!