Usando o Google Spreadsheets, você pode escrever consultas . No entanto, se você tiver letras de coluna entre aspas, elas não serão atualizadas conforme a ordem das colunas é alterada.
Existe uma maneira de escrever essas consultas para que elas não precisem ser atualizadas sempre que uma coluna for adicionada ou removida?
É possível usar intervalos nomeados em consultas para resolver esse problema?
Aqui está um exemplo: Se você adicionar uma coluna após 'F', a coluna 'G' será empurrada para 'H' e o significado da fórmula será alterado.
= Consulta (B: J, "selecione o grupo médio (J) por G")
Perguntas relacionadas
Esta questão não é a mesma que Usar consulta com cabeçalhos de coluna, em vez de letras de coluna, porque esta se concentra no uso de intervalos nomeados.
Sim, você pode usar intervalos nomeados em vez de cabeçalhos de coluna internos, mas a idéia básica é a mesma que outras respostas a isso e outras perguntas semelhantes neste site sugeridas: a planilha deve ser configurada para criar uma string SQL dinâmica .
Digamos que
J
eG
corresponde aos intervalos nomeadosGrades
eClass
respectivamente.A abordagem a seguir funciona apenas quando as colunas estão entre as colunas A e Z
CELL("address",Grades)
retornará"$J:$J"
. Para obter a referência da coluna, useMID(CELL("address",Grades),2,1)
get"J"
. A fórmula final éA abordagem a seguir funciona para todos os casos
COLUMN(Grades)
retornará um número inteiro (um número do formulário 1,2,3 etc.) Para simplificar a fórmula para criar o argumento da instrução SQL, sugiro forçar o SQL a usar referências de coluna do formulário COL1, COL2 etc. usando a matriz notação ({B:J}
). A fórmula final éPlanilha de demonstração
Referências
Usando matrizes no Planilhas Google - Ajuda do Editores do Google Docs
fonte
A resposta de Ruben não resolve o problema em todos os casos, porque
MID(CELL("address",Grades),2,1)
falha se oGrades
intervalo for movido para uma coluna de duas letras como$AA:$AA
.Nesse caso, a fórmula
MID(CELL("address",Grades),2,2)
é necessária. Para intervalos nomeados que abrangem ou se limitam ao$Z:$AA
intervalo, essa fórmula se torna problemática.A fórmula
REGEXEXTRACT( CELL("address", Grades), "\$([a-zA-Z]+)\$")
resolve o problema no caso geral, mas questiono fortemente sua eficiência de CPU quando usada em uma planilha grande.fonte
Me deparei com esta página em infoinspired.com que explica uma maneira de fazê-lo. Eu testei exatamente como no exemplo que ele deu e funcionou. A configuração:
Sua explicação sobre F1: a fórmula ADDRESS que inclui as funções ROW e COLUMN retorna o endereço da célula B1. A função ESQUERDA extrai a primeira letra que é o cabeçalho da coluna.
--- Clique na célula F1 e vá para o menu Dados> Intervalos nomeados e nomeie o intervalo "Idade" (sem as aspas)
Agora você pode formular sua consulta como:
=QUERY(A:B,"Select "&Age)
Ele tem exemplos mais complicados em sua página que estou prestes a testar agora, mas estou encorajado que o primeiro exemplo tenha funcionado!
Editar - desculpe se é exatamente isso que os outros têm proposto com suas respostas. Acabei de encontrar este exemplo claro e consegui descobrir isso. Achei que poderia ajudar outras pessoas com a mesma pergunta.
fonte