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?

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


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

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.