Estou tentando mover (deslocamento) apenas partes do local da coluna de fórmula para um local de coluna diferente por uma quantidade especificada de colunas. As células da fórmula mudam de folha para folha. Eu tenho milhares de fórmulas que todos têm diferentes localizações de células. Então eu prefiro algum tipo de solução de macro vba. Esta é a fórmula original:
=IF(AND($A$9=1,GH10=GT12),0,IF(AND($A$9=2,GI10=GS13),0,IF(AND($A$9=3,GJ10=GR14),0,1)))
e quer que seja alterado para isto:
=IF(AND($A$9=1,GI10=GT12),0,IF(AND($A$9=2,GJ10=GS13),0,IF(AND($A$9=3,GK10=GR14),0,1)))
isto é apenas uma coluna, mas apenas o numerador (GH10 - > GI10 e GI10 - > GJ10, etc). E tem o mesmo número de linha constante.
Eu encontrei este código (abaixo), Ele permite-me escolher em uma caixa suspensa quantas colunas para mover (não é necessário, desde que eu possa inseri-lo no código manualmente), mas isso também muda o denominador da Fórmula. (OBSERVAÇÃO: NÃO POSSO adicionar $ às partes da fórmula que não quero alterar. A fórmula precisa permanecer dinâmica).
Sub Macro1()
Dim nbr As Long, cel As Range, cels As Range, sh As Worksheet
Set cels = Selection
nbr = CLng(InputBox("Enter offset:"))
Set sh = Worksheets.Add
For Each cel In cels
If cel.HasFormula Then
sh.Cells(cel.Row, cel.Column + nbr).FormulaR1C1 = cel.FormulaR1C1
cel.Formula = sh.Cells(cel.Row, cel.Column + nbr).Formula
End If
Next
Application.DisplayAlerts = False
sh.Delete
Application.DisplayAlerts = True
End Sub
Isso é para uma célula por vez. Se houver código VBA em funcionamento, ele pode acomodar um Range selecionado como oposto a uma célula por vez?