Yanıtlar:
Sen kullanabilirsiniz fonksiyonunu bunun için ancak tek bir yerde ve başka bir yerde, bu verilerin bir otomatik olarak sıralanır kopya verilerinizi olması gerekir.sort()
Örneğin, verilerimle birlikte Sayfa1’im olduğunu varsayalım:
| A | B | C
=====================
1 | This | this | 2
2 | Is | is | 1
3 | Test | test | 3
Sonra Sayfa2'de, A1 hücresinde bu işlevi koyardım:
= sort (Sayfa1! A: C, 3, DOĞRU)
Bu verilerimi gösterir, ancak artan şekilde C sütununa (üçüncü sütun) göre sıralanır.
| A | B | C
=====================
1 | Is | is | 1
2 | This | this | 2
3 | Test | test | 3
Verileri otomatik olarak yerinde sıralamak için Google Apps Komut Dosyaları'nı kullanmak da mümkündür .
Bunu başarmak daha zor ve hataya açık olabilir (hala William Jackson'ın çözümü olan +1 BTW'ye giderdim), ancak gösterecek kadar ilginç olduğunu düşündüm.
Şuna benzeyen bir sayfam var:
Bu adımları kullanarak yeni bir komut dosyası ekledim:
Görünen boş kod penceresinde, bir hücre düzenlendiğinde otomatik olarak çalışacak olan aşağıdaki kodu yapıştırın:
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 } );
}
}
sayfaya geri dönün ve tablo sıralamasını her seferinde otomatik olarak görmek için değerlerle oynamaya başlayın
Not:
Yukarıdaki komut dosyasında
4
D sütununun dizinini gösterir ( Value
sütun - sıralanacak olan)"B3:E9"
tablo aralığını gösterir (başlık satırı hariç)Masanız büyük olasılıkla benimkinden farklı olacak, bu nedenle bu değerler buna göre ayarlanmalıdır.
null
için belirlediğiniz yöntemi çağırdığınızda event
.
range.sort
böyle bir çizgi: range.sort( { column : columnToSortBy, ascending: false } );
. Daha fazla sıralama seçeneği için developers.google.com/apps-script/class_range#sort
İşte 1. sütuna göre otomatik olarak işlem yapacak ve bir Başlık satırı varsayan genel bir komut dosyası.
Bir komut dosyası oluşturmak için:
Boş kod penceresinde, bir hücre düzenlendiğinde otomatik olarak çalışacak olan aşağıdaki kodu yapıştırın:
// 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();
Burada olanlar yerine yapmak zorunda kaldığımı öğrendim .
Komut dosyası olmadan başka bir seçenek:
=QUERY(A1:C3,"SELECT * ORDER BY C")
Aralık kısıtlanır (A1: C3), çünkü sıra artan sırada boş girdiler görünecektir.
SELECT * WHERE C <> '' ORDER BY C
Boş girdileri yoksaymak için kullanabilirsiniz , ardından geçerli ve gelecekteki tüm satırları dahil etmek için yeterince geniş bir aralık kullanabilirsiniz.
Bir açılır menü sütununa ve sonra tarihe göre sıralamak istedim.
Bunu yapmak için, Cristian ya da geekspotz'in kod parçacıklarından birinin "range.sort" satırını değiştirin:
// 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}]);
Aradaki fark, tüm ifadenize (dizi) düz parantez eklemek ve sıralamaları virgüllerle ayırmaktır.
Serge'in Yığın Taşması cevabından çıkarılan sıralama kod değişikliği burada : Otomatik Sayfalarda Otomatik Sıralama
Google Sayfaların bu nedenle Filtreleri var ve belgenizde yeni bir sayfa oluşturmanızı gerektirmiyor.
;
örneğin= sort(Sheet1!A:C; 3; TRUE)