Excel: como posso usar um valor de célula como parte de um intervalo?

2

Estou trabalhando com um arquivo grande do Excel mensalmente. Neste arquivo eu tenho que encontrar algo parecido com um sum como em

=sum(S2:AC2)

O problema é que a coluna da última célula no intervalo é alterada. Eu gostaria de poder fazer algo assim:

Em uma célula, digamos, S1 , insiro um valor AC e, mais tarde, posso escrever

=sum(S2:value(S1)2)

e isso tem o mesmo efeito que eu escrevi

=sum(S2:AC2)

Eu sei que isso pode ser feito. Eu vi isso há muito tempo atrás. Seria uma grande economia de tempo. Eu tenho centenas de linhas do para =sum(S2:AC2) . Mas no próximo mês, todos poderão ter que mudar para =sum(S2:BF2) . Ter um lugar para mudar o final do intervalo seria bom.

Por acaso, o número da linha também muda, mas de uma maneira totalmente previsível.

Idealmente, gostaria de poder concatenar o nome como:

=sum(S2: & S1 & row() )

onde estou usando row() para obter o número da linha atual

    
por A.Ellett 22.02.2013 / 19:22

3 respostas

5

Isso pode ser alcançado com uma fórmula muito elegante:

=SUM($S$2:INDIRECT($S$1&ROW()))
    
por 22.02.2013 / 21:43
2

Uma maneira é usar INDIRETO assim

=SUM(INDIRECT("S2:"&S1&"2"))

.... mas isso significa "codificar" o número da linha ....

Se você não tiver intervalos nos dados, talvez seja melhor definir um "intervalo nomeado dinâmico" com base no número de valores na linha, por exemplo, definir um intervalo de nome com base nesta fórmula

=OFFSET($S$2,0,0,1,COUNTA($S$2:$IV$2))

então você pode usar apenas

=SUM(Range)

    
por 22.02.2013 / 19:50
1

Eu consegui um pouco de trabalho. Mas eu não estou feliz com isso.

Digamos que nas células:

 cell(AB1) = "AD"
 cell(AC1) = "AG"

depois, na linha x , tenho o seguinte

 cell(ABx)=AB$1 & row()
 cell(ACx)=AC$1 & row()

e depois posso definir

 cell(AAx)=sum(indirect(ABx &":"& ACx))

Enquanto isso funciona, isso significa que eu tenho que criar manualmente duas colunas com o código desejado.

Seria bom poder fazer algo como

 cell(AAx)=sum(indirect(AB$1 & row() &":"& AC$1 & row()))

Ah, e funciona !!!

    
por 22.02.2013 / 20:33