Google शीट में संपूर्ण शीट को सीमा के रूप में कैसे निर्दिष्ट करें?


27

अब तक मुझे मिला सबसे अच्छा समाधान है:

worksheet_name!$A$1:$YY

लेकिन आदर्श रूप में मैं बस लिखने में सक्षम होना चाहता हूँ, जैसे:

worksheet_name!

तो, क्या किसी को पता है: क्या एक पूरी शीट को एक सीमा के रूप में निर्दिष्ट करने के लिए एक वाक्यविन्यास है?

जवाबों:


10

मैंने आपके लिए काम करने के लिए एक छोटा Google Apps Script (GAS) स्निपेट बनाया है।

कोड

function sheetRange(targetName,int) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var asName = ss.getActiveSheet().getSheetName();
  var tgSheet = ss.getSheetByName(targetName);
  var output;

  if(targetName == asName) {
    output = "Error: target sheet is active sheet !!";
  } else {
    switch(int) {
      case 1: 
        output = tgSheet.getDataRange().getValues();
        break;
      case 2:
        output = tgSheet.getSheetValues(1, 1, tgSheet.getMaxRows(),  
          tgSheet.getMaxColumns());
        break;
      default:
        output = "Choose int to be 1 or 2 !!";
    }
  }
  return output;
}

स्प्रेडशीट मेनू में, टूल> स्क्रिप्ट एडिटर चुनें, और कोड जोड़ें। बग बटन दबाना सुनिश्चित करें:
यहाँ छवि विवरण दर्ज करें

प्रयोग

=sheetRange("sheetName",int)

intटिप्पणी के तहत बताए गए विकल्प का उपयोग करें ।

उदाहरण

मैंने आपके लिए एक उदाहरण फ़ाइल बनाई है: शीट को रेंज के रूप में

टिप्पणियों

इस स्थिति में, GAS के माध्यम से स्प्रैडशीट में सीमा निर्धारित करने के दो तरीके हैं:

  1. int=1; getDataRangeविधि के माध्यम से । यह एक श्रेणी को पुनः प्राप्त करेगा, जिसमें अंतिम कॉलम वह है जिसमें डेटा है। पंक्तियों की संख्या के लिए समान खाते। यह आमतौर पर सबसे सीधा मार्ग है। उदाहरण फ़ाइल में दूसरी शीट देखें।
  2. int=2; getSheetValuesविधि के माध्यम से । यह "WYSIWYG" श्रेणी को पुनः प्राप्त करेगा। उदाहरण फ़ाइल में तीसरी शीट देखें।
  3. इस प्रकार के कस्टम फ़ंक्शन की ताज़ा दरें तत्काल नहीं हैं, इसलिए कृपया धैर्य रखें। डेटा रीफ्रेश होने में कई घंटे लग सकते हैं।

संदर्भ


इस फ़ंक्शन को ताज़ा डेटा दिखाने में कई घंटे क्यों लगेंगे? मैंने सोचा कि इस तरह एक समारोह का उपयोग करने का पूरा बिंदु हमेशा सटीक सीमा होगा?
क्लीयरक्लॉड 8

1
GetSheetValues ​​() का उपयोग कर समाधान getDataRange () getValues ​​() के साथ उपयोग करने की तुलना में 20% तेज है। 38k कोशिकाओं वाले शीट के साथ परीक्षण किया गया।
मार्क विट्जीक

11

आप A: Z या A: AB या A: XX का उपयोग कर सकते हैं (XX आपके पृष्ठ के अंतिम कॉलम के साथ):

एकल कक्ष के मान के आधार पर पंक्तियों में सशर्त स्वरूपण लागू करने के लिए इसका उपयोग करने का स्क्रीनशॉट


1
इस्त मर जाता है: "डेन्क मल नू"? यह प्रश्न का उत्तर कैसे देता है?
जैकब जान टुंस्ट्रा

1
यहां हर कोई जानता है कि किसी श्रेणी को कैसे निर्दिष्ट किया जाए। यह सवाल नहीं था।

3

Google शीट में संपूर्ण शीट श्रेणी के लिए श्रेणी सिंटैक्स नहीं है।

निम्नलिखित सूत्र शीट 1 नाम की पूरी शीट का सीमा पता लौटाएगा

="Sheet1!"&ADDRESS(1,1,,TRUE)&":"&ADDRESS(ROWS(Sheet1!A:A),COLUMNS(Sheet1!1:1),,TRUE)

इसे संदर्भ के रूप में उपयोग करने के लिए, इसे संकेत के अंदर रखें। निम्नलिखित सूत्र Sheet1 में सभी मानों की एक सरणी लौटाएगा।

= ArrayFormula (
  अप्रत्यक्ष (
    "Sheet1!"
    और पता (1,1,, TRUE)
    और ":"
    और पता (ROWS (पत्रक 1 ए: ए), कॉलम (पत्रक 1 1: 1) ,, TRUE)
    ,
    सच
  )
)

1

मुझे एक विशिष्ट जानकारी नहीं है, लेकिन मुझे लगता है कि यदि आप पंक्तियों / स्तंभों की संख्या नहीं जानते हैं तो आप कुछ सूत्रों का उपयोग कर सकते हैं:

indirect("Sheet!1:"&countif(Sheet!A:A,"<>@")+countif(Sheet!A:A,"=@"))

यहां, Sheetआपकी शीट नाम है, और @एक मनमाना स्ट्रिंग है। यदि वह पत्रक जो आप चुन रहे हैं @वह एक सेल में है, तो यह काम नहीं करेगा। आप इसे किसी अन्य वर्ण द्वारा प्रतिस्थापित कर सकते हैं यदि कभी शीट में ऐसा सेल होता है।

COUNITFयहाँ स्तंभ एक में पंक्तियों की संख्या में गिना जाता है: एक युक्त नहीं @है, जो सभी अगर कोई यह युक्त कोशिकाएं होती हैं होना चाहिए, और INDIRECTरूपांतरण Sheet!1:###(जहां ###एक वास्तविक चयनित श्रेणी में पंक्तियों की संख्या है)।


मैं प्रयास की सराहना करता हूं, लेकिन जहां तक ​​मैं बता सकता हूं, आपके सुझाव से मेरे सवाल में बताए गए वर्कअराउंड पर कोई लाभ नहीं मिलता है, लेकिन अधिक क्रिया होने और उपयोगकर्ता को एक चरित्र इनपुट करने की आवश्यकता के नुकसान हैं जो कभी भी मौजूद नहीं होंगे चादर में।
sampablokuper

@sampablokuper इसके बारे में क्रिया होने के नाते, मुझे नहीं लगता कि मैं इसके लिए कोई समाधान पा सकता हूं, जैसा कि दूसरे भाग के लिए, मैंने कुछ को अनदेखा कर दिया था जिसे मैंने अब अपने जवाब में जोड़ दिया है। इसके अलावा, जहां तक ​​मैं देख सकता हूं, आपके वर्तमान वर्कअराउंड पर इसका फायदा यह है कि आपको यह जानने की जरूरत नहीं है कि शीट में कितनी पंक्तियां या कॉलम हैं। लेकिन हाँ, जहाँ तक यह हो जाता है कि :( शायद एक ऊपर एक समारोह एक VBA स्क्रिप्ट से बना सकते हैं।
जेरी

धन्यवाद, लेकिन मेरे वर्तमान वर्कअराउंड के लिए यह जानने की आवश्यकता नहीं है कि शीट में कितनी पंक्तियाँ हैं, और न ही इसमें कितने कॉलम हैं, जब तक इसमें 676 कॉलम हों।
सम्पाबलोक्पर

1

सबसे अच्छा उत्तर पहले से ही उन लोगों के लिए दिया गया है, जो एपस्क्रिप्ट के भीतर काम कर रहे हैं, लेकिन अगर कोई भी व्यक्ति Google शीट के भीतर काम कर रहा है, तो यहां एक दृष्टिकोण है जो आपकी आवश्यकताओं के अनुरूप हो सकता है:

"worksheet_name!1:" & ROWS(worksheet_name!A:A)

स्पष्टीकरण : * आप अनिवार्य रूप से एक स्ट्रिंग के माध्यम से सीमा निर्दिष्ट कर रहे हैं जिसे कार्यपत्रक_नाम में पंक्तियों की संख्या के साथ समाहित किया गया है !

इस दृष्टिकोण के कुछ फायदे : * यह 'गतिशील' है ... यदि आप नीचे की ओर पंक्तियाँ जोड़ते हैं, तो सीमा तदनुसार समायोजित होगी * लाइटवेट - आप इसे आयात / क्वेरी फ़ंक्शन में थप्पड़ मार सकते हैं

नुकसान : * यह सभी मामलों में कोशिश नहीं की है तो यह केवल विशिष्ट उपयोग के मामलों के लिए काम कर सकते हैं * मैं व्यक्तिगत रूप से चीजों को गतिशील / स्वच्छ बनाने के लिए एक प्राथमिकता है ताकि प्रकार के एक कस्टम फ़ंक्शन appcript और इस हल्के दृष्टिकोण के बीच एक अच्छा मध्य आधार होगा


1

यह मेरे लिए काम करता है:

var ss = SpreadsheetApp.getActive();
var sh = ss.getSheets()[0];
var rg = sh.getName() +"!"+ sh.getDataRange().getA1Notation();

एक बाउंड स्क्रिप्ट में उपयोग किया जाता है, शीटनेम को "!" और फिर चुनी हुई शीट पर डेटा रेंज का A1 नोटेशन प्राप्त करें


0

मैं विस्मयादिबोधक चिह्न के बिना सीमा के नामकरण द्वारा संपूर्ण शीट का चयन करने में सक्षम था।

मेरे पास डेटा नाम का एक टैब था। डेटा का उपयोग करने के बजाय! या डेटा! A1: ZZ।


जब हम एक नामित सीमा के लिए एक नाम निर्दिष्ट करते हैं, तो एक सीमा संदर्भ निर्दिष्ट किया जाना चाहिए। आपने किस संदर्भ श्रेणी का उपयोग किया है?
रुबैन

-1

पूरी शीट को एक सीमा के रूप में निर्दिष्ट करने के लिए, कृपया उपयोग करें:

worksheet_name!A1:ZZ

आप इसे यहाँ आज़मा सकते हैं: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/clear

या यदि आप Java (शीट 1 में सब कुछ साफ़ करने के लिए) का उपयोग करते हैं:

Sheets service = getSheetsService(credential);
service.spreadsheets().values().clear(REPORT_WARNINGS_LATAM_FILEID, "Sheet1!A1:ZZ", new ClearValuesRequest()).execute();

या यदि आप इसे केवल एक सूत्र में उपयोग करना चाहते हैं (उदाहरण के लिए: SUM) दूसरी शीट पर (उदाहरण के लिए: Sheet2) आप निम्न संदर्भ का उपयोग कर सकते हैं:

=SUM(Sheet1!A1:ZZ)

^ यह शीट 1 पर सभी मौजूदा कोशिकाओं को योग करेगा और मूल्य को शीट 2 पर रखेगा, आप यहां उदाहरण देख सकते हैं: https://docs.google.com/spreadsheets/d/1rP3YCl3ErlYjlYGT_Q/xFvkVr7yKw6WQfHklbohL1NM/edit/sit?s?s । इस उदाहरण में हमारे पास Sheet1 पर 3 कॉलम और 5 पंक्तियाँ हैं, इसलिए यह सूत्र = SUM (शीट 1! A1: ZZ) उन सभी का चयन करता है। आप Sheet1 पर पंक्तियों या स्तंभों को जोड़ सकते हैं और यह समाधान अभी भी सभी कक्षों का चयन करेगा।

पुनश्च: यदि आप नीचे मेरे जवाब को वोट करते हैं - तो कृपया क्यों समझाएं।


-2

यह मानकर कि आप पंक्तियों की संख्या जानते हैं, आप पूरी शीट को "वर्कशीट_नाम" के रूप में नाम दे सकते हैं:

कदम:

  1. संपूर्ण कार्यपत्रक का चयन करें
  2. 'डेटा' पर क्लिक करें -> 'नामित और संरक्षित रंग'
  3. चयन को नाम देने और पूर्ण करने के लिए "वर्कशीट_नाम" टाइप करें।

अब हर बार जब आप किसी फ़ंक्शन में "वर्कशीट_नाम" का उपयोग करते हैं, तो यह संपूर्ण वर्कशीट का संदर्भ देगा।


4
आपकी विधि "स्नैपशॉट" श्रेणी में परिणाम करेगी। दोनों स्तंभ या पंक्तियों को जोड़ने से नाम सीमा नहीं बदलेगी !!
जैकब जान तुइस्ट्रा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.