Google शीट्स में एक कॉलम में अंतिम गैर-रिक्त सेल प्राप्त करें


140

मैं निम्नलिखित फ़ंक्शन का उपयोग करता हूं

=DAYS360(A2, A35)

मेरे कॉलम में दो तिथियों के बीच अंतर की गणना करने के लिए। हालाँकि, स्तंभ कभी भी विस्तारित हो रहा है और वर्तमान में मुझे अपनी स्प्रैडशीट को अपडेट करते हुए 'A35' को मैन्युअल रूप से बदलना होगा।

क्या इस कॉलम में अंतिम गैर-रिक्त सेल को खोजने के लिए (Google शीट्स में) एक तरीका है और फिर उस फ़ंक्शन को उपरोक्त फ़ंक्शन में गतिशील रूप से सेट किया गया है?


2

जवाबों:


172

एक अधिक स्पष्ट तरीका हो सकता है, लेकिन यह वह तरीका है जो मैं लेकर आया हूं:

स्तंभ में अंतिम आबादी वाले सेल को खोजने का कार्य है:

=INDEX( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ; ROWS( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ) )

इसलिए यदि आप इसे अपने वर्तमान फ़ंक्शन के साथ जोड़ते हैं तो यह इस तरह दिखाई देगा:

=DAYS360(A2,INDEX( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ; ROWS( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ) ))

1
मैं वास्तव में इस मामले में वाक्पटुता के बारे में परेशान नहीं हूँ जब तक कि यह एक आकर्षण की तरह काम करता है (जो यह करता है) - बहुत बहुत धन्यवाद!
माइकल

4
मैंने ISBLANK का उपयोग करने के बजाय खाली स्ट्रिंग के साथ तुलना करना समाप्त कर दिया, जो कुछ खाली दिखने वाली कोशिकाओं (उदाहरण के लिए = "" जैसे रिक्त-लौटने वाले फ़ार्मुलों को गैर-रिक्त के रूप में मानता है। <> ""), पंक्तियाँ (फिल्टर (ए: ए, ए: ए <> ""))) '
सर्कल 193 14

मुझे फॉर्मूलों के कारण ISBLANK से भी समस्या थी। लेकिन = INDEX (FILTER (F3: F; F3: F <> "")) का उपयोग करना; ROWS (फिल्टर (F3: F; F3: F <> "")) सूत्र पार्स त्रुटि का परिणाम है। कुछ पता है क्या गड़बड़ है?
klor

सवाल। यदि A: A के बजाय, एक importrange () है, तो इसे एक ही importrange () 4 बार किए बिना कैसे दोबारा लिखा जा सकता है?
रूबी

4
थोड़ा सरलीकृत उत्तर जो डग ब्रैडशॉ द्वारा ब्लैंक भी संभालता है: =INDEX(FILTER(A1:A,NOT(ISBLANK(A1:A))),COUNTA(A1:A))(पंक्ति A1 शुरू कर सकते हैं) पूरा विवरण: stackoverflow.com/a/27623407/539149
Zack Morris

82

अंतिम गैर-रिक्त कक्ष को खोजने के लिए आप इस तरह का उपयोग कर सकते हैं INDEXऔर MATCHकार्य कर सकते हैं :

=DAYS360(A2; INDEX(A:A; MATCH(99^99;A:A; 1)))

मुझे लगता है कि यह थोड़ा तेज और आसान है।


1
यह सरल है और मैंने इसका परीक्षण किया है। बहुत अच्छा काम करता है।
सीयारन

24
आपका तरीका केवल अंतिम सेल को खोजने के लिए प्रतीत होता है यदि मान एक संख्या है, तो मेरी विधि अंतिम पंक्ति को खोजेगी यदि टाइप स्ट्रिंग का भी है। मूल प्रश्न तिथियों के बारे में था, इसलिए यह काम करेगा, लेकिन जैसा कि लेख अभी भी ध्यान देता है, यह अंतर को ध्यान देने योग्य है। यह सब आपकी जरूरतों पर निर्भर करता है। अगर आपको सिर्फ एक नंबर की आवश्यकता है तो मैं इस तरह से सलाह देता हूं
सैम प्लस प्लस

1
यह मान लिया गया है कि स्तंभ को
छाँटा गया है

इसके अलावा के रूप में किया जा सकता है=DAYS360(A2;VLOOKUP(99^99;A:A;1))
vstepaniuk

56

यदि A2: A में सम्‍मिलित रूप से तिथियां हैं, तो INDEX (A2: A, COUNT (A2: A)) अंतिम तिथि लौटाएगा। अंतिम सूत्र है

=DAYS360(A2,INDEX(A2:A,COUNT(A2:A)))

9
व्यक्तिगत रूप से मुझे लगता है कि यह स्वीकृत उत्तर होना चाहिए। संक्षिप्त और सरल।
SwampThingTom 17

4
यह सबसे सटीक उत्तर है। हालांकि @Poul का जवाब इस मामले के लिए काम करता है, मैं वास्तविक डेटा के साथ वास्तविक अंतिम सेल को ढूंढना चाहता था और इससे यह पता चलता है कि डेटा क्रम में है या नहीं।
चाक क्लांच

4
यह पूर्ण है। दूसरा प्रस्ताव है कि यह स्वीकृत उत्तर होना चाहिए।
शेरी

37

मेरी पसंदीदा है:

=INDEX(A2:A,COUNTA(A2:A),1)

तो, ओपी की जरूरत के लिए:

=DAYS360(A2,INDEX(A2:A,COUNTA(A2:A),1))

... हालाँकि "MAX" एक ऊपर पोस्ट किया गया पोउल क्लीनर के मामले में देख रहा है जब अंतिम तिथि हमेशा नवीनतम होती है।
एरिक स्मॉलिंग

1
उनका मतलब +1 नहीं, 1
न्यूब्रिक्ट

1
यह सवाल का जवाब नहीं देता है - यह अंतिम मूल्य चुनता है, लेकिन अंतिम गैर-खाली मूल्य नहीं।
नैट्स

17

यदि कॉलम केवल मेरे मामले में सन्निहित रूप से जोड़ी गई तारीखों से विस्तारित होता है - मैंने अंतिम तिथि प्राप्त करने के लिए सिर्फ MAX फ़ंक्शन का उपयोग किया है।

अंतिम सूत्र होगा:

=DAYS360(A2; MAX(A2:A)) 

3
प्रतिभाशाली! सरल और प्रभावी।
आसू

14

यद्यपि प्रश्न का उत्तर पहले से ही है, लेकिन इसे करने का एक शानदार तरीका है।

Use just the column name to denote last non-empty row of that column.

उदाहरण के लिए:

यदि आपका डेटा अंदर है A1:A100और आप स्तंभ A में कुछ और डेटा जोड़ने में सक्षम होना चाहते हैं, तो कहें कि यह A1:A105या A1:A1234बाद में भी हो सकता है , आप इस सीमा का उपयोग कर सकते हैं:

A1:A

नमूना

तो एक सीमा में अंतिम गैर-रिक्त मान प्राप्त करने के लिए, हम 2 कार्यों का उपयोग करेंगे:

  • COUNTA
  • सूचकांक

जवाब है =INDEX(B3:B,COUNTA(B3:B))

यहाँ स्पष्टीकरण है:

COUNTA(range) किसी श्रेणी में मानों की संख्या लौटाता है, हम इसका उपयोग पंक्तियों की गिनती प्राप्त करने के लिए कर सकते हैं।

INDEX(range, row, col)किसी श्रेणी में मान लौटाता है rowऔर col( col=1यदि निर्दिष्ट नहीं है)

उदाहरण:

INDEX(A1:C5,1,1) = A1
INDEX(A1:C5,1) = A1 # implicitly states that col = 1
INDEX(A1:C5,1,2) = A2
INDEX(A1:C5,2,1) = B1
INDEX(A1:C5,2,2) = B2
INDEX(A1:C5,3,1) = C1
INDEX(A1:C5,3,2) = C2

ऊपर की तस्वीर के लिए, हमारी सीमा होगी B3:B। इसलिए हम कितने मूल्यों रेंज में देखते हैं की गणना होती है B3:Bद्वारा COUNTA(B3:B)पहले। बाईं ओर, यह 88 मानों का उत्पादन करेगा, जबकि यह 9दाईं ओर का उत्पादन करेगा । हम यह भी जानते हैं कि अंतिम मान सीमा के 1 कॉलम में है B3:Bइसलिए colपैरामीटर INDEX1 होना चाहिए और rowपैरामीटर होना चाहिए COUNTA(B3:B)

पुनश्च : कृपया upmote @ bloodymurderlive का उत्तर दें क्योंकि उन्होंने इसे पहले लिखा था, मैं इसे यहाँ समझा रहा हूँ।


1
मुझे यह पसंद है, लेकिन उन मुद्दों को देखा है जहां यह कभी-कभी पिछले वाले के बजाय अगले-से-अंतिम आइटम वापस करता है।
एरिक स्मॉलिंग

1
@ एरिकस्मॉलिंग जो हो सकता है क्योंकि आपके पास सभी पंक्तियों के अंत में एक अतिरिक्त लाइनफीड है और जब आप इसे पेस्ट करते हैं, तो इसे गैर-रिक्त सेल माना जा सकता है। क्या आपके पास इस मुद्दे को उजागर करने वाली कोई नमूना स्प्रेडशीट है?
रमज़ान पोलैट

सबसे चतुर समाधान की तरह लग रहा है!
मेमलेक

यह काम नहीं करता है। आपको btw की बोली कहाँ से मिली? मैंने सोचा था कि यह Google शीट प्रलेखन से है।
अतुल

1
@ रमाजनपॉलट: ओपी रास्ता पूछ रहा है (Google शीट्स में) कॉलम में अंतिम गैर-रिक्त सेल को खोजने केA1:A लिए मुझे कॉलम ए में अंतिम गैर-खाली सेल मान नहीं देता है
अतुल

8

यहाँ एक और है:

=indirect("A"&max(arrayformula(if(A:A<>"",row(A:A),""))))

अंतिम समीकरण यह होने के साथ:

=DAYS360(A2,indirect("A"&max(arrayformula(if(A:A<>"",row(A:A),"")))))

यहाँ पर अन्य समीकरण काम करते हैं, लेकिन मुझे यह पसंद है क्योंकि यह पंक्ति संख्या को आसान बनाता है, जो मुझे लगता है कि मुझे अधिक बार करने की आवश्यकता है। बस पंक्ति संख्या इस तरह होगी:

=max(arrayformula(if(A:A<>"",row(A:A),"")))

मैंने मूल रूप से एक स्प्रेडशीट समस्या को हल करने के लिए बस इसे खोजने की कोशिश की, लेकिन कुछ भी उपयोगी नहीं पा सका, जिसने अंतिम प्रविष्टि की पंक्ति संख्या दी, इसलिए उम्मीद है कि यह किसी के लिए उपयोगी है।

इसके अलावा, इसका अतिरिक्त लाभ यह है कि यह किसी भी क्रम में किसी भी प्रकार के डेटा के लिए काम करता है, और आपके पास सामग्री के साथ पंक्तियों के बीच में खाली पंक्तियाँ हो सकती हैं, और यह उन सूत्रों के साथ कोशिकाओं की गणना नहीं करता है जो "" का मूल्यांकन करते हैं। यह दोहराया मूल्यों को भी संभाल सकता है। सभी में यह उस समीकरण के समान है जो यहाँ पर अधिकतम ((G: G <> "") * पंक्ति (G: G) का उपयोग करता है, लेकिन यदि आप इसके बाद हैं तो पंक्ति संख्या को थोड़ा आसान बना सकते हैं। ।

वैकल्पिक रूप से, यदि आप अपनी शीट पर एक स्क्रिप्ट रखना चाहते हैं, तो यदि आप बहुत कुछ करने की योजना बनाते हैं, तो आप इसे स्वयं पर आसान बना सकते हैं। यहाँ है कि परिहास:

function lastRow(sheet,column) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  if (column == null) {
    if (sheet != null) {
       var sheet = ss.getSheetByName(sheet);
    } else {
      var sheet = ss.getActiveSheet();
    }
    return sheet.getLastRow();
  } else {
    var sheet = ss.getSheetByName(sheet);
    var lastRow = sheet.getLastRow();
    var array = sheet.getRange(column + 1 + ':' + column + lastRow).getValues();
    for (i=0;i<array.length;i++) {
      if (array[i] != '') {       
        var final = i + 1;
      }
    }
    if (final != null) {
      return final;
    } else {
      return 0;
    }
  }
}

यहां आप केवल निम्नलिखित में टाइप कर सकते हैं यदि आप उसी शीट पर अंतिम पंक्ति चाहते हैं जिसे आप वर्तमान में संपादित कर रहे हैं:

=LASTROW()

या यदि आप उस शीट से किसी विशेष कॉलम की अंतिम पंक्ति चाहते हैं, या किसी अन्य शीट से किसी विशेष कॉलम की आप निम्न कर सकते हैं:

=LASTROW("Sheet1","A")

और सामान्य रूप से किसी विशेष शीट की अंतिम पंक्ति के लिए:

=LASTROW("Sheet1")

फिर वास्तविक डेटा प्राप्त करने के लिए आप या तो अप्रत्यक्ष उपयोग कर सकते हैं:

=INDIRECT("A"&LASTROW())

या आप पिछली दो रिटर्न लाइनों पर उपरोक्त स्क्रिप्ट को संशोधित कर सकते हैं (अंतिम दो क्योंकि आपको वास्तविक मूल्य प्राप्त करने के लिए शीट और कॉलम दोनों को एक वास्तविक कॉलम से प्राप्त करना होगा), और चर को निम्न के साथ बदलें:

return sheet.getRange(column + final).getValue();

तथा

return sheet.getRange(column + lastRow).getValue();

इस स्क्रिप्ट का एक लाभ यह है कि आप चुन सकते हैं कि आप "" का मूल्यांकन करने वाले समीकरणों को शामिल करना चाहते हैं या नहीं। यदि कोई तर्क नहीं जोड़े जाते हैं तो "" का मूल्यांकन करने वाले समीकरणों को गिना जाएगा, लेकिन यदि आप एक शीट और कॉलम निर्दिष्ट करते हैं तो उन्हें अब गिना जाएगा। इसके अलावा, यदि आप स्क्रिप्ट की विविधताओं का उपयोग करने के इच्छुक हैं, तो इसमें बहुत लचीलापन है।

शायद ओवरकिल, लेकिन सभी संभव।


1
"अज्ञात कार्य LASTROW"
लार्सन

वास्तव में हेडलाइन का उत्तर देने के लिए +100 होना चाहिए: अंतिम पंक्ति, अंतिम पंक्ति में मूल्य नहीं
नॉर्बर्ट वैन नोबेलन

6

अंतिम मान प्राप्त करने के इस सूत्र के बारे में क्या:

=index(G:G;max((G:G<>"")*row(G:G)))

और यह आपके मूल कार्य के लिए एक अंतिम सूत्र होगा:

=DAYS360(G10;index(G:G;max((G:G<>"")*row(G:G))))

मान लीजिए कि आपकी प्रारंभिक तिथि G10 में है।


5

मैं एक अलग मार्ग गया। चूँकि मुझे पता है कि मैं एक-एक करके किसी पंक्ति / स्तंभ में कुछ जोड़ रहा हूँ, इसलिए मुझे पहले उन फ़ील्ड्स की गिनती करके पता चलता है जिनके पास डेटा है। मैं इसे एक कॉलम के साथ प्रदर्शित करूँगा:

=COUNT(A5:A34)

तो, मान लें कि 21 लौट आया। A5 4 पंक्तियों से नीचे है, इसलिए मुझे 4 वीं पंक्ति से नीचे 21 वीं स्थिति प्राप्त करने की आवश्यकता है। मैं ऐसा करने के लिए इनड्रेक्ट का उपयोग कर सकता हूं, जैसे:

=INDIRECT("A"&COUNT(A5:A34)+4)

यह डेटा के साथ पंक्तियों की मात्रा का पता लगा रहा है, और मुझे एक नंबर लौटा रहा है जो मैं एक सूचकांक संशोधक के रूप में उपयोग कर रहा हूं।


1
ध्यान दें कि रिक्त कोशिकाएँ नहीं हो सकती हैं। इसके अलावा, COUNTA को अधिक परिदृश्यों में फिट होना चाहिए
जेड खुल्लाह

4

एक पंक्ति के लिए:

=ARRAYFORMULA(INDIRECT("A"&MAX(IF(A:A<>"", ROW(A:A), ))))

एक कॉलम के लिए:

=ARRAYFORMULA(INDIRECT(ADDRESS(1, MAX(IF(1:1<>"", COLUMN(1:1), )), 4)))

1
बहुत बढ़िया जवाब। धन्यवाद।
निक

2

यह उस सरलतम समाधान की तरह प्रतीत होता है, जिसे मैंने अंतिम-मूल्य को कभी-विस्तार वाले कॉलम में प्राप्त करने के लिए पाया है:

=INDEX(A:A,COUNTA(A:A),1)

2

यह मेरे लिए काम करता है। Google शीट में कॉलम A का अंतिम मान प्राप्त करें:

=index(A:A,max(row(A:A)*(A:A<>"")))

(यह बीच में खाली पंक्तियों को छोड़ देता है यदि कोई हो)



1

यह अंतिम सेल की सामग्री देगा:

=indirect("A"&max(ARRAYFORMULA(row(a:a)*--(a:a<>""))))

यह अंतिम सेल का पता देगा:

="A"&max(ARRAYFORMULA(row(a:a)*--(a:a<>"")))

यह अंतिम सेल की पंक्ति देगा:

=max(ARRAYFORMULA(row(a:a)*--(a:a<>"")))

शायद आप एक स्क्रिप्ट पसंद करेंगे। यह स्क्रिप्ट किसी अन्य व्यक्ति द्वारा ऊपर पोस्ट किए गए विशाल से कम है:

स्क्रिप्ट एडिटर पर जाएं और इस स्क्रिप्ट को सहेजें:

function getLastRow(range){
  while(range.length>0 && range[range.length-1][0]=='') range.pop();
  return range.length;
}

ऐसा किया जाता है कि आपको इसे एक सेल में दर्ज करने की आवश्यकता है:

=getLastRow(A:A)

0

जिस तरह से एक शौकिया करता है वह है "= CONCATENATE (" A ", COUNTUNIQUE (A1: A9999))", जहां A1 कॉलम की पहली सेल है, और A9999 उस कॉलम से बहुत दूर है, जहां से कभी भी कोई प्रविष्टि होने की उम्मीद है। इस परिणाम A # का उपयोग आवश्यकतानुसार कार्य फ़ंक्शन के साथ किया जा सकता है।


माफ़ करना। यह केवल तभी काम करता है जब कॉलम की सभी प्रविष्टियाँ अद्वितीय हों।
कॉनराड लिंडेस

1
जबकि मैं StackOverflow, Conrad में आपके योगदान की सराहना करता हूं, आपके उत्तर में कुछ मुद्दे हैं। पहले, उन्होंने यह निर्दिष्ट नहीं किया कि तिथियां अद्वितीय थीं, इसलिए आपको काउंटिक () के बजाय गिनती () का उपयोग करना चाहिए। दूसरा, अप्रत्यक्ष () और कॉनेटेटेट का उपयोग करके सूचकांक की मौजूदा कार्यक्षमता को दोहराता है (), जैसा कि आप अन्य उत्तरों में देख सकते हैं। तीसरा, A1 के बजाय: A9999, सिर्फ A1 का उपयोग क्यों न करें: A?
sondra.kinsey

0

अंतिम गैर-रिक्त पंक्ति संख्या (उनके बीच रिक्त स्थान की अनुमति) खोजने के लिए मैंने नीचे खोज कॉलम का उपयोग किया A

=ArrayFormula(IFNA(match(2,1/(A:A<>""))))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.