Макрос работает с выделенными ячейками.
Макрос
Sub Макрос1()
Dim rngUsedRange As Range, cel As Range
'1. Чтобы просматривать только те ячейки, где есть данные и форматирование.
Set rngUsedRange = Intersect(Selection, ActiveSheet.UsedRange)
If rngUsedRange Is Nothing Then
MsgBox "Готово.", vbInformation
Exit Sub
End If
'2. Отключения, чтобы ускорить работу макроса.
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'3. Изменение относительности строк в формулах.
For Each cel In rngUsedRange.Cells
' Если в ячейке обычная формула.
If cel.HasFormula = True Then
cel.Formula = Application.ConvertFormula(cel.Formula, xlA1, , xlAbsRowRelColumn, cel)
' Если в ячейке формула массива.
ElseIf cel.HasArray = True Then
cel.FormulaArray = Application.ConvertFormula(cel.Formula, xlA1, , xlAbsRowRelColumn, cel)
End If
Next cel
'4. Включаем то, что отключили.
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
'5. Сообщение.
MsgBox "Готово.", vbInformation
End Sub