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) .