Células de soma referenciadas por números de linha e coluna obtidas de células diferentes, sem usar o VBA

2

Meu problema é bem simples, mas descrevê-lo é um pouco complicado.

Eu tenho quatro células contendo quatro inteiros, que significam números de linha e coluna de duas células. Por exemplo,

     A    B
1    54   23
2    154  123

Então, temos duas células:

  • Célula 1: linha 54, coluna 23 e
  • Célula 2, linha 154, coluna 123.

Eu quero somar o conteúdo de todas as células entre a Cell # 1 e a Cell # 2. Claro, eu quero referências às células A1, A2, B1, B2 contendo os valores relevantes, não os valores reais. Diga, quero colocar essa soma na célula C3.

No VBA, seria simples (embora demorado):

Range("C3").Cells = WorksheetFunction.Sum( _
    Range(Cells(Cells(1,1),Cells(1,2)), _
        Cells(Cells(2,1),Cells(2,2))))

Como fazer isso sem o VBA?

Eu tentei algo como =SUM(ADDRESS(A1,B1),ADDRESS(A2,B2)) . Meu problema é, usando ADDRESS () retorna o texto. Se eu colocar este texto em SUM (), ele retornará um erro.

    
por vpprof 11.05.2018 / 15:41

3 respostas

2

[Editado - originalmente eu interpretei mal a pergunta]

Uma maneira de fazer isso seria usar a função OFFSET para localizar o intervalo desejado.

=SUM(OFFSET(A1,A1-1,B1-1,A2-A1+1,B2-B1+1))

OFFSET(A1,A1-1,B1-1) representa um intervalo de uma célula cujos números de linha e coluna são os valores em A1 e A2. Os dois últimos parâmetros ( A2-A1+1 e B2-B1+1 ) são o número de linhas e colunas no novo intervalo.

    
por 11.05.2018 / 16:15
2

Indireto e Endereço são de uso volátil ÍNDICE:

=SUM(INDEX(A:AAA,A1,B1):INDEX(A:AAA,A2,B2))
    
por 11.05.2018 / 17:42
0

Não é bonito comprar parece funcionar.

=SUM(INDIRECT(ADDRESS(ROW(INDIRECT("R"&A1&"C"&B1,FALSE)),COLUMN(INDIRECT("R"&A1&"C"&B1,FALSE)))):INDIRECT(ADDRESS(ROW(INDIRECT("R"&A2&"C"&B2,FALSE)),COLUMN(INDIRECT("R"&A2&"C"&B2,FALSE)))))

Converte o conteúdo da célula em referências de estilo R1C1 (por exemplo, R54C23 ). De lá, ele converte em uma referência fixa (ou seja, $W$54 ). Em seguida, ele usa isso como indiretamente para conectar-se à função SUM() .

    
por 11.05.2018 / 16:25