Respostas:
Você pode usar a sort()
função para isso, mas é necessário ter seus dados em um local e uma cópia ordenada automaticamente desses dados em outro local.
Por exemplo, digamos que eu tenha a Plan1 com meus dados:
| A | B | C
=====================
1 | This | this | 2
2 | Is | is | 1
3 | Test | test | 3
Então, na Sheet2, célula A1, eu colocaria esta função:
= classificar (Folha1! A: C, 3, VERDADEIRO)
Isso mostraria meus dados, mas classificados pela coluna C (a terceira coluna), crescente.
| A | B | C
=====================
1 | Is | is | 1
2 | This | this | 2
3 | Test | test | 3
Também é possível usar os scripts do Google Apps para obter a classificação automática no local dos dados.
Isso pode ser mais difícil de alcançar e mais suscetível a erros (eu continuaria com a solução de William Jackson, +1 BTW), mas achei interessante o suficiente para mostrar.
Eu tenho uma planilha que se parece com isso:
Eu adicionei um novo script, usando estas etapas:
na janela de código vazia exibida, cole o código a seguir, que será executado automaticamente sempre que uma célula for 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 tabela ser classificada automaticamente cada vez
Nota:
No script acima,
4
representa o índice da coluna D (a Value
coluna - a que será classificada)"B3:E9"
representa o intervalo da tabela (excluindo a linha do cabeçalho)Sua tabela provavelmente será diferente da minha, portanto, esses valores devem ser ajustados de acordo.
null
o event
parâmetro, que de outra forma é preenchido corretamente pela infraestrutura da Planilha do Google quando um evento real é acionado.
range.sort
linha 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
Aqui está um script genérico que se classifica automaticamente com base na 1ª coluna e assume uma linha de cabeçalho.
Para criar um 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 } );
}
}
var sheet = SpreadsheetApp.getActiveSpreadsheet();
vez do que está aqui.
Outra opção sem um script é:
=QUERY(A1:C3,"SELECT * ORDER BY C")
O intervalo é restrito (A1: C3) porque, onde a ordem está subindo, as entradas em branco aparecerão primeiro.
SELECT * WHERE C <> '' ORDER BY C
para ignorar entradas em branco e, em seguida, usar um intervalo grande o suficiente para incluir todas as linhas atuais e futuras.
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 da seguinte maneira:
// 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 colchetes ao redor de toda a instrução (matriz) e separar as classificações por vírgulas.
A modificação do código de classificação obtida da resposta do Stack Overflow de Serge aqui : Classificação automática em folhas
O Planilhas Google possui filtros por esse motivo e não exige que você faça uma nova planilha no seu documento.
Documentação: https://support.google.com/docs/answer/3540681
;
exemplo= sort(Sheet1!A:C; 3; TRUE)