Digamos que eu queira que o Planilhas Google classifique alguns dados automaticamente, por exemplo coluna C
.
Como faço isso?
Sei que posso classificar os dados manualmente clicando com o botão direito e selecionando Classificar dados , mas não é isso que estou procurando.
Resposta
Você pode usar o sort()
função para isso, mas você deve ter seus dados em um lugar e uma cópia classificada automaticamente desses dados em outro lugar.
Por exemplo, diga Tenho a Planilha1 com meus dados:
| A | B | C ===================== 1 | This | this | 2 2 | Is | is | 1 3 | Test | test | 3
Então, na Planilha2, célula A1, colocaria esta função:
= sort (Folha1! A: C, 3, TRUE)
Isso mostraria meus dados, mas classificado por coluna C (a terceira coluna), crescente.
| A | B | C ===================== 1 | Is | is | 1 2 | This | this | 2 3 | Test | test | 3
Comentários
Resposta
Também é possível usar Google Apps Scripts para obter a classificação automática local dos dados.
Isso pode ser mais difícil de alcançar e mais sujeito a erros (eu ainda escolheria a solução de William Jackson, +1 BTW), mas achei que era interessante o suficiente para mostrar.
Eu tenho uma planilha parecida com esta:
Eu adicionei um novo script, usando estas etapas:
- no menu, vá para Ferramentas -> Editor de scripts …
- selecione Criar um novo projeto
-
na janela de código vazia que aparece, cole o seguinte código, que será executado automaticamente sempre que um a célula é editada:
function onEdit(event){ var sheet = event.source.getActiveSheet(); var editedCell = sheet.getActiveCell(); var columnToSortBy = 4; var tableRange = "B3:E9"; if(editedCell.getColumn() == columnToSortBy){ var range = sheet.getRange(tableRange); range.sort( { column : columnToSortBy } ); } }
-
volte para a planilha e comece a brincar com os valores para ver a classificação da tabela automaticamente a cada vez
Nota:
No script acima,
- o valor
4
representa o índice da coluna D (a colunaValue
– o nesse “será classificado) - o valor
"B3:E9"
representa o intervalo da tabela (excluindo a linha de cabeçalho)
Sua tabela provavelmente será diferente da minha, então esses valores devem ser ajustados de acordo.
Comentários
- Tentei a sua função [editada] onEdit ( evento) {var sheet = event.source.getActiveSheet (); var editedCell = sheet.getActiveCell (); var columnToSortBy = 4; var tableRange = ” A2: F99 “; if (editedCell.getColumn () == columnToSortBy) {var range = sheet.getRange (tableRange); range.sort ({coluna: columnToSortBy}); }} mas continuo recebendo um erro: TypeError: Não é possível ler a propriedade ” source ” de indefinido. (linha 2) que é o seguinte código: var sheet = event.source.getActiveSheet (); alguma ideia? NM, só obtém o erro ao executar a partir da página do script, mas funciona corretamente na planilha real
- , mas continua recebendo um erro: TypeError: Cannot read property ” fonte ” de indefinido. (linha 2) que é o seguinte código: var sheet = event.source.getActiveSheet (); alguma ideia? NM, só obtém o erro ao executar a partir da página do script, mas funciona corretamente na planilha real. Agora a pergunta … é classificação A-Z, como faço para alterá-lo para classificação automática Z-A? obrigado
- @ drizzt09 Ao chamar o método, você provavelmente especifica
null
para o parâmetroevent
, que de outra forma é adequado preenchido pela infraestrutura de planilhas do Google quando um evento real é acionado. - @ drizzt09 para alterar a ordem de classificação, altere a linha
range.sort
como esta:range.sort( { column : columnToSortBy, ascending: false } );
. Para obter mais opções de classificação, consulte developers.google.com/apps-script/class_range#sort - @ w0lf Obrigado, funcionou perfeitamente. agora eu gostaria de adicionar a ele ou ter uma função separada que executa exatamente a mesma função, mas ao abrir ou atualizar. Portanto, quando eu abro / atualizo a planilha do Excel, ela classifica automaticamente a 4ª coluna em ordem decrescente, da mesma forma que quando edito o código na coluna 4 com seu código atual. Obrigado
Resposta
Outra opção sem um script é:
=QUERY(A1:C3,"SELECT * ORDER BY C")
O intervalo é restrito (A1: C3) porque onde a ordem é crescente, as entradas em branco aparecerão primeiro.
Comentários
- Você poderia me dizer onde devo colocar isso?
- Você pode usar
SELECT * WHERE C <> '' ORDER BY C
para ignorar entradas em branco, então você pode usar um intervalo grande o suficiente para incluir todas as linhas atuais e futuras.
Resposta
Aqui “um script genérico que será classificado automaticamente com base na primeira coluna e assume uma linha de cabeçalho.
Para criar um script:
- No menu, vá para Ferramentas -> Editor de Script …
Na janela de código vazia, cole o seguinte código, que será executado automaticamente sempre que uma célula for editada:
// LinkBack to this script: // http://webapps.stackexchange.com/questions/7211/how-can-i-make-some-data-on-a-google-spreadsheet-auto-sorting/43036#43036 /** * Automatically sorts the 1st column (not the header row) Ascending. */ function onEdit(event){ var sheet = event.source.getActiveSheet(); var editedCell = sheet.getActiveCell(); var columnToSortBy = 1; var tableRange = "A2:T99"; // What to sort. if(editedCell.getColumn() == columnToSortBy){ var range = sheet.getRange(tableRange); range.sort( { column : columnToSortBy, ascending: true } ); } }
Comentários
- Descobri que precisava
var sheet = SpreadsheetApp.getActiveSpreadsheet();
em vez do que ‘ está aqui. - Isso funciona muito bem, mas como posso editar isso para que classifique apenas em uma única planilha no documento?
- não ‘ não parece funcionar
Resposta
Usi a solução do script, mas classifique em mais de uma coluna
Eu queria classificar por uma coluna do menu suspenso e depois por data.
Para fazer isso, modifique a linha “range.sort” dos trechos de código de Cristian ou geekspotz “como:
// Sorts descending by edited column, then ascending by column 1 // Note the use of an array
range.sort([{column: columnToSortBy, ascending: false}, {column: 1, ascending: true}]);
A diferença é adicionar os colchetes ao redor de toda a instrução (matriz) e separar as classificações por vírgulas.
Modificação do código de classificação extraída da resposta Stack Overflow de Serge aqui : Classificação automática em planilhas
Resposta
Aqui eu criei um script e planilha de classificação automática (requer um pouco de trabalho na planilha, uma cópia, colar do código e definir seus intervalos. É baseado em várias respostas de troca de pilha
https://docs.google.com/spreadsheets/d/1LDohwCuy8HZg4YCQEOuWmgpY_WG2BVh_aH-i4JGM5BE/edit#gid=0
Seu registro e obtém o valor do intervalo em que você se concentra na última edição, compare-o com o valor agora após a edição real e se diferente, classifica a tabela.
Resposta
O Planilhas Google tem Filtros por este motivo e faz não é necessário que você crie uma nova planilha em seu documento.
Documentação: https://support.google.com/docs/answer/3540681
Resposta
Isso pode ser feito usando o Google App Script. O script será classificado automaticamente sempre que houver uma alteração nos dados da planilha.
Em sua planilha do Google:
Escolha Ferramentas -> Editor de scripts, cole o script abaixo e salve.
Substitua as variáveis SHEET_NAME, SORT_DATA_RANGE e SORT_ORDER pelos valores correspondentes.
SHEET_NAME = "Sheet1"; SORT_DATA_RANGE = "A1:C999"; SORT_ORDER = [ {column: 3, ascending: false}, // 3 = column number, sorting by descending order {column: 1, ascending: true}, // 1 = column number, sort by ascending order {column: 2, ascending: true} ]; function onEdit(e){ multiSortColumns(); } function multiSortColumns(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName(SHEET_NAME); var range = sheet.getRange(SORT_DATA_RANGE); range.sort(SORT_ORDER); ss.toast("Sort complete."); }
Fonte: https://www.idiotinside.com/2018/06/08/sort-multiple-columns-google-sheets-apps-script/
por exemplo
= sort(Sheet1!A:C; 3; TRUE)