สมมติว่าผมต้องการที่ Google C
ชีตไปโดยอัตโนมัติเรียงลำดับข้อมูลบางอย่างเช่นคอลัมน์
ฉันจะทำอย่างไร
ฉันรู้ว่าฉันสามารถเรียงลำดับข้อมูลด้วยตนเองโดยคลิกขวาและเลือกเรียงลำดับข้อมูลแต่นี่ไม่ใช่สิ่งที่ฉันกำลังมองหา
สมมติว่าผมต้องการที่ Google C
ชีตไปโดยอัตโนมัติเรียงลำดับข้อมูลบางอย่างเช่นคอลัมน์
ฉันจะทำอย่างไร
ฉันรู้ว่าฉันสามารถเรียงลำดับข้อมูลด้วยตนเองโดยคลิกขวาและเลือกเรียงลำดับข้อมูลแต่นี่ไม่ใช่สิ่งที่ฉันกำลังมองหา
คำตอบ:
คุณสามารถใช้ฟังก์ชั่นสำหรับว่า แต่คุณต้องมีข้อมูลของคุณในที่เดียวและสำเนาเรียงโดยอัตโนมัติของข้อมูลที่ในสถานที่อื่น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 (คอลัมน์ที่สาม) จากน้อยไปมาก
| A | B | C
=====================
1 | Is | is | 1
2 | This | this | 2
3 | Test | test | 3
นอกจากนี้ยังเป็นไปได้ที่จะใช้สคริปต์ของ Google Appsเพื่อให้ได้การเรียงลำดับข้อมูลอัตโนมัติ
นี่อาจเป็นเรื่องยากที่จะประสบความสำเร็จและเกิดข้อผิดพลาดได้ง่ายขึ้น (ฉันยังคงหาวิธีแก้ปัญหาของ William Jackson +1 BTC) แต่ฉันคิดว่ามันน่าสนใจพอที่จะแสดง
ฉันมีแผ่นงานที่มีลักษณะดังนี้:
ฉันเพิ่มสคริปต์ใหม่โดยใช้ขั้นตอนเหล่านี้:
ในหน้าต่างรหัสเปล่าที่ปรากฏขึ้นให้วางรหัสต่อไปนี้ซึ่งจะทำงานโดยอัตโนมัติทุกครั้งที่มีการแก้ไขเซลล์:
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 Spreadsheet อย่างเหมาะสมเมื่อมีการเรียกใช้เหตุการณ์จริง
range.sort
range.sort( { column : columnToSortBy, ascending: false } );
สำหรับตัวเลือกการเรียงลำดับเพิ่มเติมดูdevelopers.google.com/apps-script/class_range#sort
นี่คือสคริปต์ทั่วไปที่จะทำการบันทึกอัตโนมัติตามคอลัมน์ที่ 1 และถือว่าเป็นแถวส่วนหัว
วิธีสร้างสคริปต์:
ในหน้าต่างรหัสที่ว่างเปล่าวางรหัสต่อไปนี้ซึ่งจะทำงานโดยอัตโนมัติทุกครั้งที่มีการแก้ไขเซลล์:
// 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
เพื่อละเว้นรายการว่างจากนั้นคุณสามารถใช้ช่วงที่มีขนาดใหญ่พอเพื่อรวมแถวปัจจุบันและอนาคตทั้งหมด
ฉันต้องการจัดเรียงตามคอลัมน์เมนูแบบเลื่อนลงและตามวันที่
หากต้องการทำเช่นนั้นให้แก้ไขบรรทัด "range.sort" ของตัวอย่างโค้ดของ Cristian หรือ geekspotz ดังนี้:
// 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}]);
ความแตกต่างคือการเพิ่มวงเล็บตรงรอบคำสั่งทั้งหมดของคุณ (อาร์เรย์) และแยกเรียงตามเครื่องหมายจุลภาค
การจัดเรียงโค้ดที่ดึงมาจากคำตอบ Stack Overflow ของ Serge ได้ที่นี่ : การ เรียงลำดับอัตโนมัติบนชีต
Google ชีตมีตัวกรองด้วยเหตุผลนี้และคุณไม่จำเป็นต้องสร้างชีตใหม่ในเอกสารของคุณ
เอกสารประกอบ: https://support.google.com/docs/answer/3540681
;
เช่น= sort(Sheet1!A:C; 3; TRUE)