Sub RemplaceRdifParDecaler()
Dim Rg As Range, ZSv As String, Z As String, dL As Long, P As Long, ZC As String, R As Long, Q As Long
For Each Rg In Selection
ZSv = Rg.FormulaR1C1: Z = ZSv
Do: P = InStr(Z, "R[")
If P = 0 Then Exit Do
Q = InStr(P + 2, Z, "]"): dL = Mid$(Z, P + 2, Q - P - 2)
Q = Q + 1
If Mid$(Z, Q, 1) = "C" Then
ZC = Mid$(Z, Q)
If Mid$(ZC, 2, 1) = "[" Then
ZC = Left$(ZC, InStr(3, ZC, "]"))
Else
R = 1
Do
Q = R + 1
If Q > Len(ZC) Then Exit Do
If InStr("0123456789", Mid$(ZC, Q, 1)) = 0 Then Exit Do
R = Q: Loop
ZC = Left$(ZC, R)
End If
Else
ZC = ""
End If
Z = Replace(Z, "R[" & dL & "]" & ZC, "OFFSET(R" & ZC & "," & dL & ",0)", , 1)
Loop
If ZSv <> Z Then If Rg.HasArray Then Rg.CurrentArray.FormulaArray = Z Else Rg.FormulaR1C1 = Z
Next Rg
End Sub