54

मैं निम्नलिखित समारोहGoogle पत्रक में एक कॉलम में अंतिम गैर-खाली कक्ष जाओ

=DAYS360(A2, A35) 

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

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

+2

इसी प्रकार का प्रश्न: http://stackoverflow.com/questions/4169914/selecting-the-last-value-of-a-column/13356890 –

उत्तर

79

एक अधिक सुवक्ता तरीका नहीं हो सकता है लेकिन इस तरह से मैं के साथ आया है:

समारोह एक कॉलम में पिछले आबादी वाले सेल को मिल रहा है:

=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)))))) 
+0

मुझे इस मामले में वाकई के बारे में परेशान नहीं है जब तक यह काम करता है एक आकर्षण (जो यह करता है) - बहुत बहुत धन्यवाद सैम! – MichaelS

+2

मैं आईएसबीएलएएनके का उपयोग करने के बजाय खाली स्ट्रिंग की तुलना में समाप्त हुआ, जो कुछ रिक्त दिखने वाले कोशिकाओं (जैसे रिक्त-वापसी वाले सूत्रों जैसे = "" को गैर-खाली के रूप में मानता है। इस प्रकार: '= अनुक्रमणिका (फ़िल्टर (ए: ए, ए: एक <> ""), पंक्तियां (फ़िल्टर (ए: ए, ए: ए <> ""))) ' – circlepi314

41

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

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

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

+0

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

+12

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

+2

यहां एक और संस्करण है http://stackoverflow.com/a/13871043/44620 –

2

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

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

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

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

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

23

यदि ए 2: ए में तारीखें होती हैं तो इंडेक्स (ए 2: ए, COUNT (ए 2: ए)) अंतिम तिथि लौटाएगी। अंतिम सूत्र है

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

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

+0

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

-1

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

+0

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

+0

जबकि मैं स्टैक ओवरफ्लो, कॉनराड में आपके योगदान की सराहना करता हूं, आपके उत्तर में कुछ समस्याएं हैं। सबसे पहले, उन्होंने यह निर्दिष्ट नहीं किया कि तिथियां अनूठी थीं, इसलिए आपको गिनती() के बजाय गिनती() का उपयोग करना चाहिए। दूसरा, अप्रत्यक्ष() का उपयोग करके और इंडेक्स() की मौजूदा कार्यक्षमता को डुप्लिकेट करता है, जैसा कि आप अन्य उत्तरों में देख सकते हैं। तीसरा, ए 1: ए 99 99 के बजाय, क्यों न केवल ए 1: ए का उपयोग करें? –

10

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

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

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

प्रतिभा! सरल और प्रभावी। – Asu

3

हालांकि सवाल पहले से ही उत्तर है, वहाँ यह करने के लिए एक वाक्पटु तरीका है।

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

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

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

A1:A 
+0

मुझे यह पसंद है, लेकिन मैंने ऐसे मुद्दों को देखा है जहां यह कभी-कभी अंतिम के बजाय अगली-टू-आखिरी वस्तु देता है। –

+0

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

5

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

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

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

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

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

+0

अंत में '1, 1' जोड़ने वाला कोई बिंदु नहीं है? –

0

यहाँ एक दूसरे के है:

=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),""))) 

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

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

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

=LASTROW() 

या अगर आप चाहते हैं:

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; 
    } 
    } 
} 

यहाँ आप बस में निम्नलिखित अगर आपको लगता है कि आप वर्तमान में संपादित कर रहे हैं चादर का एक ही पर अंतिम पंक्ति चाहते हैं टाइप कर सकते हैं: यहाँ कि scirpt है किसी खास कॉलम कि चादर से, या किसी अन्य पत्रक से किसी खास कॉलम आप कर सकते हैं की अंतिम पंक्ति के बाद:

=LASTROW("Sheet1","A") 

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

=LASTROW("Sheet1") 

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

=INDIRECT("A"&LASTROW()) 

या जब से तुम दोनों डाल करने के लिए होगा आप पिछले दो वापसी लाइनों (पिछले दो पर ऊपर स्क्रिप्ट को संशोधित चादर और स्तंभ एक वास्तविक स्तंभ से वास्तविक मूल्य प्राप्त करने के लिए), और साथ चर की जगह निम्नलिखित:

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

और

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

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

शायद अधिक से अधिक, लेकिन सभी संभव है।