मैं Google पत्रक ऑटो-सॉर्टिंग पर कुछ डेटा कैसे बना सकता हूं?


57

मान लीजिए कि मैं चाहता हूं कि Google पत्रक कुछ डेटा को स्वचालित रूप से सॉर्ट करें, उदाहरण के लिए कॉलम C

मैं उसको कैसे करू?

मुझे पता है कि मैं डेटा को राइट-क्लिक करके और सॉर्ट डेटा का चयन करके मैन्युअल रूप से सॉर्ट कर सकता हूं , लेकिन यह वह नहीं है जो मैं खोज रहा हूं।

जवाबों:


51

आप उपयोग कर सकते हैं समारोह है कि के लिए है, लेकिन आप एक ही स्थान पर, और एक अन्य जगह में है कि डेटा की एक प्रतिलिपि अपने आप क्रमबद्ध में अपने डेटा को करना होगा।sort()

उदाहरण के लिए, कहो कि मेरे पास मेरे डेटा के साथ शीट 1 है:

   | A    | B    | C
=====================
 1 | This | this | 2
 2 | Is   | is   | 1
 3 | Test | test | 3

फिर Sheet2, सेल A1 में, मैं यह फ़ंक्शन डालूँगा:

= सॉर्ट (शीट 1! ए: सी, 3, ट्रू)

यह मेरा डेटा दिखाएगा, लेकिन स्तंभ C (तीसरा स्तंभ) के अनुसार, आरोही।

   | A    | B    | C
=====================
 1 | Is   | is   | 1
 2 | This | this | 2
 3 | Test | test | 3

पैरामीटर्स को अर्धविराम द्वारा अलग किया जाना चाहिए ;जैसे= sort(Sheet1!A:C; 3; TRUE)

2
@Petr यह अल्पविराम के साथ मेरे लिए ठीक काम करता है।
विलियम जैक्सन

6
@ user17634: यह आपकी लोकेल सेटिंग पर निर्भर करता है।
विदर्भ एस। रामदल

42

डेटा के स्वचालित इन-प्लेस छँटाई को प्राप्त करने के लिए Google Apps लिपियों का उपयोग करना भी संभव है ।

इसे प्राप्त करना और अधिक त्रुटि-प्रवण होना मुश्किल हो सकता है (मैं अभी भी विलियम जैक्सन के समाधान, +1 बीटीडब्ल्यू के लिए जाऊंगा), लेकिन मुझे लगा कि यह दिखाना काफी दिलचस्प था।

मेरे पास एक शीट है जो इस तरह दिखती है:

ऑटो-छाँटने की चादर

मैंने इन चरणों का उपयोग करते हुए एक नई स्क्रिप्ट जोड़ी:

  • मेनू में, टूल्स पर जाएं -> स्क्रिप्ट एडिटर ...
  • एक नया प्रोजेक्ट बनाएँ चुनें
  • दिखाई देने वाली खाली कोड विंडो में, निम्न कोड चिपकाएँ, जो सेल संपादित होने पर स्वचालित रूप से चलाया जाएगा:

    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"तालिका श्रेणी (हेडर पंक्ति को छोड़कर) का प्रतिनिधित्व करता है

आपकी तालिका मेरा सबसे अलग होने की संभावना है, इसलिए इन मूल्यों को तदनुसार समायोजित किया जाना चाहिए।


मैंने तुम्हारा [संपादित] फंक्शन ऑनएड (ईवेंट) {var sheet = event.source.getActiveSheet (); var editCell = sheet.getActiveCell (); var columnToSortBy = 4; var tableRange = "A2: F99"; if (editCell.getColumn () == columnToSortBy) {var range = sheet.getRange (tableRange); range.sort ({कॉलम: columnToSortBy}); }} लेकिन एक त्रुटि प्राप्त करते रहें: टाइपर्रर: अपरिभाषित से संपत्ति "स्रोत" नहीं पढ़ सकते हैं। (पंक्ति 2) जो निम्नलिखित कोड है: var sheet = event.source.getActiveSheet (); कोई विचार? NM, केवल स्क्रिप्ट पेज से चलने पर त्रुटि मिलती है, लेकिन यह वास्तविक स्प्रेडशीट पर ठीक से काम करता है
drizzt09

लेकिन एक त्रुटि प्राप्त करते रहें: टाइपर्रर: अपरिभाषित से संपत्ति "स्रोत" नहीं पढ़ सकते हैं। (पंक्ति 2) जो निम्नलिखित कोड है: var sheet = event.source.getActiveSheet (); कोई विचार? NM, केवल स्क्रिप्ट पेज से चलने पर त्रुटि प्राप्त करता है, लेकिन यह वास्तविक स्प्रेडशीट पर ठीक से काम करता है। अब सवाल ... इसकी छँटाई AZ, मैं इसे ऑटो-सॉर्ट ZA में कैसे बदलूँ? धन्यवाद
drizzt09

@ drizzt09 जब आप उस विधि को कॉल करते हैं जिसे आप संभवतः पैरामीटर के nullलिए निर्दिष्ट करते eventहैं, जो अन्यथा Google स्प्रेडशीट के बुनियादी ढांचे द्वारा ठीक से आबाद होती है जब एक वास्तविक घटना शुरू होती है।
क्रिस्टियन लुपस्कू

3
@ drizzt09 क्रम क्रम बदलने के लिए range.sort, इस तरह से लाइन बदलें range.sort( { column : columnToSortBy, ascending: false } ); :। अधिक छँटाई विकल्पों के लिए, डेवलपर्स
Googleapps-script/class_range#sort

@ w0lf आपको धन्यवाद कि सही काम किया। अब मैं इसे जोड़ना चाहूंगा या एक अलग कार्य कर सकता हूं जो सटीक एक ही कार्य करता है लेकिन खुले या ताज़ा पर। इसलिए जब मैं एक्सेल शीट को खोल / रिफ्रेश करता हूँ तो यह 4 कॉलम को ऑटो कर देगा जैसे कि मैं अपने वर्तमान कोड के साथ कॉलम 4 में कोड को एडिट करता हूँ। धन्यवाद

10

यहां एक सामान्य स्क्रिप्ट है जो 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 } );
  }
}

3
मैंने पाया कि मुझे var sheet = SpreadsheetApp.getActiveSpreadsheet();यहाँ क्या है इसके बजाय।
dldnh

यह बहुत अच्छा काम करता है, लेकिन मैं इसे कैसे संपादित कर सकता हूं, इसलिए यह केवल डॉक्टर की एक शीट पर छाँटेगा?
मूबोट

काम करने के लिए प्रतीत नहीं होता है
Shadowz1337

6

स्क्रिप्ट के बिना एक और विकल्प है:

=QUERY(A1:C3,"SELECT * ORDER BY C")  

सीमा प्रतिबंधित है (A1: C3) क्योंकि जहां ऑर्डर बढ़ते हुए रिक्त प्रविष्टियां पहले दिखाई देंगी।


4
क्या आप कृपया मुझे बता सकते हैं कि मुझे इसे कहां रखना चाहिए?
लुई ट्रैन

1
आप SELECT * WHERE C <> '' ORDER BY Cरिक्त प्रविष्टियों को अनदेखा करने के लिए उपयोग कर सकते हैं , फिर आप सभी वर्तमान और भविष्य की पंक्तियों को शामिल करने के लिए एक बड़ी पर्याप्त रेंज का उपयोग कर सकते हैं।
गस

0

स्क्रिप्ट समाधान का उपयोग करना, लेकिन एक से अधिक कॉलम पर सॉर्ट करना

मैं ड्रॉपडाउन मेनू कॉलम और फिर तिथि के अनुसार क्रमबद्ध करना चाहता था।

ऐसा करने के लिए, क्रिश्चियन या गीक्सपॉट्स के कोड स्निपेट में से किसी की भी "रेंज.सॉर्ट" लाइन को संशोधित करें:

// 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}]);

अंतर आपके पूरे विवरण (सरणी) के चारों ओर सीधे कोष्ठकों को जोड़ रहा है और अल्पविराम द्वारा प्रकारों को अलग कर रहा है।

सर्ज के स्टैक ओवरफ्लो उत्तर से खींचे गए कोड की तरह संशोधन यहां दिए गए हैं : शीट पर स्वचालित छंटनी


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.