É inegável o quanto planilhas resolvem nossas vidas, podem ser elas google spreadsheet ou excel. Basicamente você pode substituir facilmente qualquer sistema por uma planilha. 😛 Brincadeira.
Há poucos dias, eis o problema que tínhamos que resolver: Tínhamos 9 forms conectados à uma planilha. Cada form tinha sua própria aba na planilha. Porém, precisávamos agrupar os dados destas abas numa única aba.
Parecia simples. Supondo que o nome da aba que eu queria copiar os dados era Teste, era só usar o igual =Teste!B12 copiando a célula desejada da aba Teste.

Mas isso não funciona. Cada vez que você insere uma nova entrada através do forms, a planilha automaticamente soma 1 à sua fórmula: =Teste!B13. Você nunca consegue pegar a entrada adicionada pelo forms.

Por que isso acontece?
Isso acontece porque a cada entrada do forms, uma nova linha é inserida após a última linha com conteúdo da planilha. Logo, ao inserir uma nova entrada no forms e a próxima linha vazia era a 12, insere-se uma nova linha e a linha existente na planilha passa a ser a 13 pois uma nova linha foi inserida acima dela. E daí, a fórmula que você adicionou para copiar o conteúdo guarda a referência para esta linha. E agora ela deixou de ser 12 para ser 13.
Como resolver?
Usar alguma fórmula para fazer referência à posição 12 e não à linha 12. Desta forma, quando uma nova linha for inserida, esta passa a ser a linha na posição 12. Eu usei =INDIRECT("'Teste'!B"&ROW(B12))

ROW retorna o número da célula referenciada. Logo, a linha 12 passou a ser a nova entrada inserida pelo forms. Link para a documentação da função.
INDIRECT retorna o conteúdo da célula definida pela string da fórmula. Logo, retorna o conteúdo da linha Link para a documentação da função.
Agora parece tão simples. Mas quebramos um pouquinho a cabeça para entender que o forms não escreve na próxima linha disponível da planilha. Ele insere uma nova linha imediatamente após a última linha com conteúdo da planilha.
Deixe um comentário