回答:
そのためにsort()
関数を使用できますが、データをある場所に配置し、そのデータのコピーを別の場所に自動的にソートする必要があります。
たとえば、データを含むSheet1があるとします。
| A | B | C
=====================
1 | This | this | 2
2 | Is | is | 1
3 | Test | test | 3
次に、Sheet2、セルA1にこの関数を配置します。
= sort(Sheet1!A:C、3、TRUE)
これにより、データが表示されますが、列C(3番目の列)で昇順で並べ替えられます。
| A | B | C
=====================
1 | Is | is | 1
2 | This | this | 2
3 | Test | test | 3
Google Appsスクリプトを使用して、データの自動インプレースソートを実現することもできます。
これは達成が難しく、エラーが発生しやすいかもしれません(ウィリアムジャクソンのソリューション+1 BTWを引き続き使用します)が、十分に興味深いと思いました。
次のようなシートがあります。
次の手順を使用して、新しいスクリプトを追加しました。
表示される空のコードウィンドウに、セルが編集されるたびに自動的に実行される次のコードを貼り付けます。
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 } );
}
}
シートに戻って値をいじって、毎回テーブルが自動的にソートされるのを確認します
注意:
上記のスクリプトでは、
4
は列Dのインデックスを表します(Value
列-ソートされる列)"B3:E9"
はテーブル範囲を表します(ヘッダー行を除く)テーブルはおそらく私のものとは異なるため、これらの値はそれに応じて調整する必要があります。
null
のためにevent
実際のイベントがトリガされたときにそうでない場合、適切Googleスプレッドシートインフラストラクチャによって移入されたパラメータを、。
range.sort
、このような行を:range.sort( { column : columnToSortBy, ascending: false } );
。その他の並べ替えオプションについては、developers.google.com
以下は、最初の列に基づいて自動ソートされ、ヘッダー行を前提とする一般的なスクリプトです。
スクリプトを作成するには:
空のコードウィンドウに、セルが編集されるたびに自動的に実行される次のコードを貼り付けます。
// 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();
ここにあるものの代わりにやらなければならなかったことがわかりました。
ドロップダウンメニューの列で並べ替えてから、日付で並べ替えたいと思いました。
そのためには、Cristianまたはgeekspotzのコードスニペットの「range.sort」行を次のように変更します。
// 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}]);
違いは、ステートメント全体(配列)を角括弧で囲み、ソートをコンマで区切ることです。
SergeのStack Overflowの回答から引き出されたコード変更のソートはこちら: シートでの自動ソート
この理由から、Googleスプレッドシートにはフィルタがあり、ドキュメントに新しいシートを作成する必要はありません。
;
例:= sort(Sheet1!A:C; 3; TRUE)