У меня есть рабочие листы Wk1, Wk2 Wk3 и т. Д. В моей книге.Нужно изменить имена скопированных формул Excel с помощью VBA
Все формулы в листе WK1 имеют префикс WK1 например = Wk1MonWeight
После копирования формулы из листа WK1 к любому из других листов, которые я использую код, приведенный ниже, чтобы изменить префикс WK1 с именем лист они были скопированы, например, после копирования = Wk1MonWeight на лист Wk2 формула становится = Wk2MonWeight. Этот код работает.
Sub Step2ChangeWkNamesInFormulasOnNewWksheet()
Dim ws As Worksheet
Dim r As Range
For Each ws In Worksheets
If InStr(1, ws.Name, "Wk", 1) > 0 Then
For Each r In ws.Range("C116:I119")
r.Formula = Replace(r.Formula, "Wk1", r.Parent.Name)
Next r
For Each r In ws.Range("C184:J188")
r.Formula = Replace(r.Formula, "Wk1", r.Parent.Name)
Next r
For Each r In ws.Range("E341:AY341")
r.Formula = Replace(r.Formula, "Wk1", r.Parent.Name)
Next r
End If
Next ws
MsgBox "Done"
End Sub
Я хочу изменить кусок кода ниже, чтобы изменения префикса от WK1 на имя листа, который непосредственно перед листом копируются + Avg. например, когда формула = Wk1MonWeight копируется из листа WK1 к WK4 листа становится = Wk3AvgWeight
For Each r In ws.Range("E341:AY341")
r.Formula = Replace(r.Formula, "Wk1", r.Parent.Name)
Next r
Может кто-нибудь помочь с этим.
Спасибо
Просьба уточнить: начальная формула всегда содержит '' Mon' после Wk1' и вы хотите заменить Wk1 на имя предыдущего листа и 'Mon' на' Avg'. Это точно? –
Да Исходная формула всегда содержит Mon. Да, я хочу заменить Wk1 на предыдущее имя. Mon должен быть сброшен и заменен на Avg, так что новая формула будет считана как = Wk3AvgWeight – frustrationmultiplied