Excel vba, Alterando referências de célula na fórmula para apontar para um local de célula diferente

0

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?

    
por dendy792 16.08.2018 / 22:47

0 respostas