Como construir uma referência de célula de dois números sem o texto () + indireto ()?

4

As referências de célula podem ser construídas programaticamente usando uma combinação das funções concatenate (), text () e indireta () com alguma fórmula numérica. Isso funciona bem, mas pode fazer com que a fórmula da chamada pareça cheia e desajeitada. Também impede que o endereço da célula referido seja atualizado automaticamente quando a célula de destino for movida (arrastada) na planilha.

Por exemplo, faça uma célula igual a B2:

=INDIRECT(CONCATENATE("B", TEXT(3-1,"0")))

3-1 é para fins ilustrativos - a fórmula real é mais complicada

Existe uma maneira de criar a referência mais diretamente, ou seja, sem ir para o domínio de manipulação TEXT, algo como:

=("B"):(3-1)

E por isso também preserva a referência automática de uma célula movida B1?

ysap
fonte

Respostas:

3

Não tenho certeza se isso ajuda, mas também posso sugerir o uso da função OFFSET.

OFFSET(cell reference, rows, cols [, height [, width]])

por exemplo, você pode usar =OFFSET(B3,-1,0)e a referência da célula será atualizada conforme seus dados forem movidos

Voando alto
fonte
Obrigado, parece fazer o truque. Substitua rowse colspor fórmulas equivalentes que avaliam 0para o local original e o destino ref agora é móvel.
ysap
7

Seu exemplo é diretamente equivalente a

=INDIRECT("B"&(3-1))
Chris Neilsen
fonte
Embora melhore a legibilidade, isso apenas substitui as chamadas de função pelos operadores. Portanto, ele responde a metade do problema, b / c, se eu mover a célula B2 para C2, então tenho que alterar explicitamente a parte "B" da fórmula para "C". +1.
ysap
Na verdade, eu não sabia que o Excel faz conversão implícita de tipo. Obrigado por isso.
ysap
1

Você pode usar o INDEX, que será atualizado se você o arrastar, por exemplo

=INDEX(B:B,3-1)

arraste isso e ele mudará para C: C, D: D etc.

barry houdini
fonte
Refere-se à célula necessária, mas, infelizmente, no EXCEL 2010, ela não segue uma célula movida.
ysap
Não sei ao certo o que você quer dizer com "ela não segue uma célula movida" - B:Bnessa fórmula se comporta como qualquer outra referência de célula em qualquer outra fórmula. Se você arraste-o ou copye cole o de referência vai mudar, dependendo do local onde você copiar / arrastá-lo - se você cut-lo e colar, em seguida, isso não muda
Barry houdini
Peguei a linha do seu post como está e copiei para a célula P3. Na célula B2, tenho o número 16. Em seguida, P3 mostra 16, conforme o esperado. Em seguida, arrastei e soltei a célula B2 para C2. Agora B2 está vazio e C2 tem 16. Em P3 ainda tenho a fórmula original, apontando para B2 e agora mostrando um valor vazio, assim como em B2. Se P3 contiver "= B2", quando arrastada, a fórmula muda automaticamente para "= B3". Eu queria que sua fórmula mudasse para = INDEX (C: C, 3-1). Espero que isso limpe minha intenção.
usar o seguinte comando