Você mencionou "outra fórmula", por isso estou supondo que deseja fazer isso em uma fórmula de planilha (em vez de em uma função ou sub-rotina do VBA). Vamos começar pequeno. O Excel suporta referências de estilo A1 ( An ) e referências de estilo R1C1 (R n C n ). Todos os exemplos que você usou ( D3
, D15
, E3
, J7
, etc.) são referências no estilo A1 - uma coluna letra (ou possivelmente uma sequência de letras colunas X
, Y
e Z
são seguidas por AA
, AB
, AC
, etc.) seguidas por um número de linha.
Referências no estilo R1C1 são quase auto-explicativas - elas são construídas com um número de linha e uma coluna número , separadas pelas letras R
e C
.
Portanto, E3
é equivalente a R3C5
(linha 3, coluna 5) e J7
é equivalente a R7C10
.
Eu gostaria que você tivesse dito um pouco mais sobre o que você já estava fazendo, então eu sei o que eu não tenho que explicar para você. Espero que você saiba que, em uma fórmula, INDIRECT("E3")
é mais ou menos equivalente a E3
, exceto que quando você chama INDIRECT
, o parâmetro de string pode ser calculado. Talvez você não saiba que
INDIRECT("R3C5", FALSE)
é similarmente equivalente a E3
.
INDIRECT
fornece apenas uma referência a uma única célula.
Para ir desse para um intervalo, usamos a função OFFSET
. Seu formato geral é
OFFSET(
base_cell_reference,
row_offset,
column_offset,
height (rows),
width (columns))
Então, para obter E3:J7
, fazemos
OFFSET(INDIRECT("R" & 3 & "C" & 5, FALSE), 0, 0, 7-3+1, 10-5+1)
onde todos os números podem ser fórmulas (por exemplo, referências a outras células).
(Nota: os +1
são para o “problema de vedação” padrão - o intervalo começando na linha 3 e incluindo a linha 7 tem 5 linhas de altura, não 4.) A expressão acima pode ser usada em qualquer lugar um intervalo simples pode ser usado; por exemplo, como um parâmetro para SUM
.
Ainda outra abordagem para resolver seu problema pode estar usando células nomeadas. Se você der à célula E3
o nome Fred
e der à célula J7
o nome Barney
, então você pode dizer SUM(Fred:Barney)
.