Essa é pra aqueles que já tem certa familiaridade com macros, especialmente o gravador de macros do Excel, que é uma baita de uma mão na roda, uso direto.
Quand usamos o gravador de macros as fórmulas no código ficam no padrão FormulaR1C1 que difere do padrão que estamos mais acostumados a utilizar no Excel, que seria o A1.
Aqui você verá como ler o padrão R1C1 e como convertê-lo para o padrão A1.
Com preguiça de ler? Assista ao vídeo
Como ler o padrão FormulaR1C1?
O R de R1C1 significa linha (do inglês row), e o C significa coluna. O número a seguir se refere a posição, R1 seria o equivalente a Linha 1 ou primeira linha, e C1 seria primeira coluna.
Desta forma, quando vemos R1C1 a célula que está sendo referenciada é a A1 pois é a célula que está na primeira linha (R1) e na primeira coluna (C1)
Tipo de referência no padrão R1C1
Existem 2 tipos de referência no Excel, relativa e absoluta, você certamente já sabe disso, só coloquei em nomes bonitos aqui. A referência relativa é quando não congelamos as células na nossa fórmula utilizando o $, e a referência absoluta é justamente o contrário.
Assim como utilizamos $ no padrão de fórmula A1, também utilizamos um símbolo no padrão R1C1 para identificar quando a referência é relativa ou absoluta.
Referência relativa em R1C1
Ao utilizarmos o gravador de macros e escrevermos em A1, a função:
=SOMA(B1:B3)
O código de macro gerado será:
ActiveCell.FormulaR1C1 = “=SUM(RC[1]:R[2]C[1])”
Quando rodarmos esta macro o resultado irá mudar dependendo de qual for a célula ativa (ActiveCell), pois se trata de uma referência relativa.
RC[1] = Equivale a célula que estiver na mesma linha da célula ativa, porém a uma coluna a mais, ou para a direita, representado pelo [1]. Ao rodar esta macro tendo a célula A1 RC[1] será a célula B1, pois está na mesma linha de A1 porém a uma coluna a mais.
R[2]C[1] = Equivale a célula que estiver duas linhas abaixo [2] da célula ativa, e a uma coluna a mais [1]. Caso a macro seja rodada com a célula A1 selecionada, R[2]C[1] será a célula B3 pois está a duas linhas abaixo de A1 e a uma coluna a mais.
A mesma macro a ser rodada com a célula C5 selecionada trará como resultado =SOMA(D5:D7)
Referência absoluta em R1C1
Ao utilizarmos o gravador de macros e escrevermos em A1, a função:
=SOMA($B$1:$B$3)
O código de macro gerado será:
ActiveCell.FormulaR1C1 = “=SUM(R1C2:R3C2)”
Quando rodarmos esta macro o resultado sempre o mesmo, independente de qual for a célula ativa, pois congelamos os intervalos tanto das linhas quanto das colunas.
R1C2 = Equivale a célula que estiver na primeira linha (R1) e na segunda coluna (C2), logo a célula B1.
R3C2 = Equivale a célula que estiver na terceira linha (R3) e na segunda coluna (C2), sendo assim a célula B3.
Ao rodar esta macro, independente da célula ativa, o resultado será =SOMA($B$1:$B$3)
Convertendo R1C1 para A1
Embora não seja possível alterar a forma com que o gravador de macros funciona, você ainda pode escrever suas macros no padrão A1, ou converter seus códigos FormulaR1C1 para o padrão com o qual estamos mais familiarizados.
Para isso basta alterar a função que chamamos na hora de colocar a fórmula em nossa macro. Trocamos o:
ActiveCell.FormulaR1C1 = “=SUM(RC[1]:R[2]C[1])”
Para
ActiveCell.Formula = “=SUM(B1:B3)”