답변:
이 sort()
기능 을 사용할 수는 있지만 한 곳에 데이터를 보관하고 다른 장소에 해당 데이터를 자동으로 정렬해야합니다.
예를 들어, 내 데이터에 Sheet1이 있다고 가정하십시오.
| A | B | C
=====================
1 | This | this | 2
2 | Is | is | 1
3 | Test | test | 3
그런 다음 Sheet2, A1 셀 에이 기능을 넣습니다.
= 정렬 (Sheet1! A : C, 3, TRUE)
이것은 내 데이터를 보여 주지만 열 C (세 번째 열)에 따라 오름차순으로 정렬됩니다.
| A | B | C
=====================
1 | Is | is | 1
2 | This | this | 2
3 | Test | test | 3
Google Apps 스크립트 를 사용 하여 자동으로 데이터를 자동 정렬 할 수 있습니다.
이것은 달성하기가 더 어려워지고 오류가 발생하기 쉬울 수 있습니다 (William Jackson의 솔루션, +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/apps-script/class_range#sort
첫 번째 열을 기준으로 자동 정렬하고 헤더 행을 가정하는 일반 스크립트는 다음과 같습니다.
스크립트를 만들려면
빈 코드 창에서 셀을 편집 할 때마다 자동으로 실행되는 다음 코드를 붙여 넣습니다.
// 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();
여기에있는 것 대신에 해야한다는 것을 알았습니다 .
스크립트가없는 다른 옵션은 다음과 같습니다.
=QUERY(A1:C3,"SELECT * ORDER BY C")
순서가 오름차순 인 빈 항목이 먼저 나타나므로 범위가 제한됩니다 (A1 : C3).
SELECT * WHERE C <> '' ORDER BY C
빈 항목을 무시 하는 데 사용할 수 있으며 현재 및 미래의 모든 행을 포함하기에 충분한 범위를 사용할 수 있습니다.
드롭 다운 메뉴 열을 기준으로 정렬 한 다음 날짜별로 정렬하고 싶었습니다.
이렇게하려면 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의 스택 오버플로 답변에서 가져온 정렬 코드 수정 : 여기에서 자동 정렬
이러한 이유로 Google 스프레드 시트에는 필터 가 있으므로 문서에서 새 시트를 만들 필요가 없습니다.
;
예 := sort(Sheet1!A:C; 3; TRUE)