जवाबों:
यह टेक्स्ट और नंबरों दोनों के साथ काम करता है और परवाह नहीं करता है कि वहाँ खाली सेल हैं, यानी, यह अंतिम गैर-रिक्त सेल लौटाएगा।
इसे सरणी-दर्ज करने की आवश्यकता है , जिसका अर्थ है कि आप टाइप करने या इसे पेस्ट करने के बाद Ctrl-Shift-Enter दबाएं । नीचे स्तंभ के लिए है:
=INDEX(A:A,MAX((A:A<>"")*(ROW(A:A))))
CELL()
या इसे पास किया जा सकता है OFFSET()
), जबकि अधिक उत्तोलक आपको यह बताए बिना एक मान लौटाता है कि वह कहां है।
सरल सूत्र का उपयोग करना बहुत तेज है
=LOOKUP(2,1/(A:A<>""),A:A)
Excel 2003 के लिए:
=LOOKUP(2,1/(A1:A65535<>""),A1:A65535)
यह आपको निम्नलिखित लाभ देता है:
स्पष्टीकरण:
(A:A<>"")
रिटर्न सरणी {TRUE,TRUE,..,FALSE,..}
1/(A:A<>"")
इस सरणी को संशोधित करता है {1,1,..,#DIV/0!,..}
।LOOKUP
उम्मीद है , और इस बात को ध्यान में रखते हुए कि यदि फ़ंक्शन एक सटीक मिलान नहीं पा सकता है, तो यह (हमारे मामले में ) सबसे बड़ा मूल्य चुनता है जो मूल्य (हमारे मामले में ) से कम या बराबर है , सूत्र सरणी में अंतिम पाता है और (तीसरे पैरामीटर - ) से संबंधित मान लौटाता है ।LOOKUP
lookup_range
{1,1,..,#DIV/0!,..}
2
1
result_range
A:A
इसके अलावा थोड़ा ध्यान दें - उपरोक्त सूत्र त्रुटियों के साथ खाता कोशिकाओं को नहीं लेता है (आप इसे केवल तभी देख सकते हैं जब अंतिम गैर रिक्त सेल में त्रुटि हो)। यदि आप उन्हें खाते में लेना चाहते हैं, तो उपयोग करें:
=LOOKUP(2,1/(NOT(ISBLANK(A:A))),A:A)
नीचे दी गई छवि अंतर दिखाती है:
LOOKUP
अंतिम तर्क result_vector
वैकल्पिक है कि कहने के लिए प्रलेखन । हालांकि अगर मैं इसे छोड़ देता हूं, तो मुझे एक बहुत ही अजीब परिणाम मिलता है जो मुझे समझ में नहीं आता है।
LOOKUP
फ़ंक्शन नहीं मिल सकता है lookup_value
, तो फ़ंक्शन उस सबसे बड़े मान से मेल खाता है जो lookup_vector
इससे कम या बराबर है lookup_value.
" यदि मैं =LOOKUP(2,A:A<>"",A:A)
बिना किसी #DIV/0!
त्रुटि के जेनरेटिन का उपयोग करता हूं 1/...
, तो ऐसा लगता है कि यह बीच में कुछ मान लौटाता है सदिश। मैंने नहीं पाया कि इस मामले में सटीक कार्यक्षमता क्या है।
=LOOKUP(2,1/(A:A<>""),ROW(A:A))
लेकिन ROW
फ़ंक्शन जोड़ने से "अस्थिरता" प्रभाव बढ़ जाएगा - सूत्र को हर बार पुनर्गठित किया जाएगा जब भी वॉकशीट पर किसी भी सेल को बदल दिया जाएगा
यहाँ एक और विकल्प है: =OFFSET($A$1;COUNTA(A:A)-1;0)
COUNTA
इसके बजाय उपयोग करें COUNT
)। रिक्त कोशिकाओं का उल्लेख नहीं है।
डौग ग्लेन्सी के उत्तर द्वारा दिए गए महान नेतृत्व से प्रेरित होकर, मैं एक सरणी-सूत्र की आवश्यकता के बिना एक ही काम करने का तरीका लेकर आया। मुझसे मत पूछो क्यों, लेकिन मैं सरणी सूत्रों के उपयोग से बचने के लिए उत्सुक हूं यदि संभव हो तो (किसी विशेष कारण से नहीं, यह सिर्फ मेरी शैली है)।
यह रहा:
=SUMPRODUCT(MAX(($A:$A<>"")*(ROW(A:A))))
संदर्भ कॉलम के रूप में कॉलम ए का उपयोग करके अंतिम गैर-रिक्त पंक्ति खोजने के लिए
=SUMPRODUCT(MAX(($1:$1<>"")*(COLUMN(1:1))))
संदर्भ पंक्ति के रूप में पंक्ति 1 का उपयोग करके अंतिम गैर-रिक्त कॉलम खोजने के लिए
इसे सूचकांक फ़ंक्शन के साथ संयोजन के रूप में उपयोग किया जा सकता है ताकि गतिशील नामित सीमाओं को कुशलतापूर्वक परिभाषित किया जा सके, लेकिन यह किसी अन्य पद के लिए कुछ है क्योंकि यह यहां संबोधित तत्काल प्रश्न से संबंधित नहीं है।
मैंने उपरोक्त विधियों को Excel 2010 के साथ, "मूल रूप से" और "संगतता मोड" (Excel के पुराने संस्करणों के लिए) में परीक्षण किया है और वे काम करते हैं। फिर, इनके साथ आपको Ctrl + Shift + Enter में से कोई भी करने की आवश्यकता नहीं है। जिस तरह से एक्सेल में sumproduct का काम करता है, उसका लाभ उठाकर हम अपनी भुजाओं को सरणी-संचालन करने की आवश्यकता के आसपास प्राप्त कर सकते हैं, लेकिन हम इसे बिना सरणी-सूत्र के करते हैं। मुझे आशा है कि कोई व्यक्ति इन प्रस्तावित ऊष्मातापी समाधानों की सुंदरता, सादगी और सुंदरता की सराहना कर सकता है जितना मैं करता हूं। मैं हालांकि उपरोक्त समाधानों की स्मृति-दक्षता की ओर ध्यान नहीं देता। बस वे सरल हैं, सुंदर दिखते हैं, इच्छित उद्देश्य की मदद करते हैं और अन्य उद्देश्यों के लिए अपने उपयोग को बढ़ाने के लिए पर्याप्त लचीले हैं :)
उम्मीद है की यह मदद करेगा!
शुभकामनाएं!
मुझे पता है कि यह सवाल पुराना है, लेकिन मैं प्रदान किए गए उत्तरों से संतुष्ट नहीं हूं।
LOOKUP, VLOOKUP और HLOOKUP में प्रदर्शन के मुद्दे हैं और इन्हें कभी भी उपयोग नहीं किया जाना चाहिए।
सरणी कार्यों में बहुत अधिक ओवरहेड होता है और इसमें प्रदर्शन के मुद्दे भी हो सकते हैं, इसलिए इसे केवल अंतिम उपाय के रूप में उपयोग किया जाना चाहिए।
COUNT और COUNTA समस्याओं में चलते हैं यदि डेटा संयोगवश गैर-रिक्त नहीं है, अर्थात आपके पास रिक्त स्थान हैं और फिर डेटा फिर से सीमा में है
संकेत अस्थिर है, इसलिए इसका उपयोग केवल अंतिम उपाय के रूप में किया जाना चाहिए
OFFSET अस्थिर है, इसलिए इसे केवल अंतिम उपाय के रूप में उपयोग किया जाना चाहिए
अंतिम पंक्ति या स्तंभ के किसी भी संदर्भ (उदाहरण के लिए Excel 2003 में 65536 वीं पंक्ति) मजबूत नहीं है और अतिरिक्त सिर में परिणाम है
यही है वह जो मेरे द्वारा उपयोग किया जाता है
जब डेटा प्रकार मिलाया जाता है: =max(MATCH(1E+306,[RANGE],1),MATCH("*",[RANGE],-1))
जब यह पता चलता है कि डेटा में केवल संख्याएँ हैं: =MATCH(1E+306,[RANGE],1)
जब यह पता चलता है कि डेटा में केवल पाठ है: =MATCH("*",[RANGE],-1)
MATCH में सबसे कम ओवरहेड है और गैर-वाष्पशील है, इसलिए यदि आप बहुत सारे डेटा के साथ काम कर रहे हैं तो यह उपयोग करने के लिए सबसे अच्छा है।
TRUE
/ FALSE
) वाले सेल हैं , तो वे अनिर्धारित हो जाएंगे। इस तथ्य के बावजूद कि यह उत्तर बुलेटप्रूफ नहीं है, मुझे अभी भी लगता है कि इस उत्तर का प्रदर्शन पर कम से कम प्रभाव है।
=INDEX(N:N,MATCH(1E+306,N:N,1))
यह Excel 2003 में काम करता है (और बाद में मामूली संपादन के साथ, नीचे देखें)। इसे सरणी सूत्र के रूप में दर्ज करने के लिए Ctrl + Shift + Enter (केवल दर्ज न करें) दबाएँ।
=IF(ISBLANK(A65536),INDEX(A1:A65535,MAX((A1:A65535<>"")*(ROW(A1:A65535)))),A65536)
ध्यान रखें कि Excel 2003 है संपूर्ण कॉलम में सरणी सूत्र लागू करने असमर्थ है। इतनी पैदावार कर रहा है #NUM!
; अप्रत्याशित परिणाम हो सकते हैं! (संपादित करें : Microsoft से परस्पर विरोधी जानकारी: एक ही सकता है या नहीं हो सकता है Excel 2007 के बारे में सच हो; समस्या हो सकती है 2010 में निर्धारित किया गया है )
इसीलिए मैं सरणी सूत्र को रेंज में लागू करता हूं A1:A65535
और अंतिम सेल को विशेष उपचार देता हूं , जो कि A65536
एक्सेल 2003 में है। केवल कहने A:A
या यहां तक A1:A65536
कि स्वचालित रूप से पुन: प्राप्त करने के लिए भी नहीं कह सकते A:A
।
यदि आप पूरी तरह A65536
से खाली हैं, तो आप IF
भाग को छोड़ सकते हैं :
=INDEX(A1:A65535,MAX((A1:A65535<>"")*(ROW(A1:A65535))))
ध्यान दें कि यदि आप Excel 2007 या 2010 का उपयोग कर रहे हैं, तो अंतिम पंक्ति संख्या 1048576 65536 नहीं है, इसलिए उपरोक्त को उचित रूप में समायोजित करें।
अपने डेटा के बीच में कोई खाली कोशिकाओं देखते हैं, तो मैं सिर्फ सरल सूत्र, का प्रयोग करेंगे =INDEX(A:A,COUNTA(A:A))
।
=INDEX(19:19,COUNTA(19:19))
सरणी सूत्रों के बिना एक वैकल्पिक समाधान, संभवतः सरणी सूत्रों के बिना एक (संकेत) समाधान के साथ पिछले उत्तर की तुलना में अधिक मजबूत है।
=INDEX(A:A,INDEX(MAX(($A:$A<>"")*(ROW(A:A))),0))
इस उत्तर को एक उदाहरण के रूप में देखें । कुडोस टू ब्रैड और बैरी हुडिनी , जिन्होंने इस प्रश्न को हल करने में मदद की ।
गैर-सरणी सूत्र को प्राथमिकता देने के संभावित कारण निम्नलिखित हैं:
एक आधिकारिक Microsoft पृष्ठ ("सरणी सूत्रों का उपयोग करने के नुकसान" के लिए देखें)।
सरणी सूत्र जादुई लग सकते हैं, लेकिन उनके कुछ नुकसान भी हैं:
A
घटनाओं को एक के साथ बदल दिया D
। मैं क्या गलत कर रहा हूं?
यदि आप कॉलम (ए) के उपयोग में खोज करते हैं:
=INDIRECT("A" & SUMPRODUCT(MAX((A:A<>"")*(ROW(A:A)))))
यदि आपकी सीमा A1 है: A10 आप उपयोग कर सकते हैं:
=INDIRECT("A" & SUMPRODUCT(MAX(($A$1:$A10<>"")*(ROW($A$1:$A10)))))
इस सूत्र में:
SUMPRODUCT(MAX(($A$1:$A10<>"")*(ROW($A$1:$A10))))
अंतिम गैर रिक्त पंक्ति संख्या और अप्रत्यक्ष () सेल मान लौटाता है।
=INDEX(A:A, COUNTA(A:A), 1)
यहां से ले जाया गया
Ive ने सभी गैर-वाष्पशील संस्करणों की कोशिश की, लेकिन ऊपर दिए गए एक भी संस्करण ने काम नहीं किया है। एक्सेल 2003 / 2007upate। निश्चित रूप से यह एक्सेल 2003 में किया जा सकता है। न तो एक सरणी के रूप में और न ही मानक सूत्र के रूप में। मुझे या तो केवल एक रिक्त, 0 या #value त्रुटि मिलती है। इसलिए मैं अस्थिर तरीकों का सहारा लेता हूं।
= LOOKUP (2,1 / (टी -4: T369 <> ""), टी -4: T369)
@ जूलियन क्रोने .. "का उपयोग करना;" इसके बजाय "," काम नहीं करता है! मुझे लगता है कि आप लिबर ऑफिस का उपयोग कर रहे हैं एमएस एक्सेल नहीं? LOOKUP इतनी झुंझलाहट से अस्थिर है मैं इसे केवल अंतिम उपाय के रूप में उपयोग करता हूं
इस कोड को VBA मॉड्यूल में रखें। सहेजें। फ़ंक्शंस के तहत, उपयोगकर्ता इस फ़ंक्शन के लिए परिभाषित दिखता है।
Function LastNonBlankCell(Range As Excel.Range) As Variant
Application.Volatile
LastNonBlankCell = Range.End(xlDown).Value
End Function
पाठ डेटा के लिए:
EQUIV("";A1:A10;-1)
संख्यात्मक डेटा के लिए:
EQUIV(0;A1:A10;-1)
यह आपको चयनित रेंज में अंतिम गैर खाली सेल का सापेक्ष सूचकांक देता है (यहां A1: A10)।
यदि आप मूल्य प्राप्त करना चाहते हैं, तो भवन के बाद INDIRECT के माध्यम से इसे एक्सेस करें- पूर्ण सेल संदर्भ, उदाहरण के लिए:
INDIRECT("A" & (nb_line_where_your_data_start + EQUIV(...) - 1))
मुझे भी यही समस्या थी। यह सूत्र भी समान रूप से काम करता है: -
=INDIRECT(CONCATENATE("$G$",(14+(COUNTA($G$14:$G$65535)-1))))
14 उन पंक्तियों में पहली पंक्ति की पंक्ति संख्या जो आप गिनना चाहते हैं।
क्रोनिक क्लॉटोथ
यदि आप जानते हैं कि बीच में खाली कोशिकाएं नहीं हैं, तो सबसे तेज़ तरीका यह है।
=INDIRECT("O"&(COUNT(O:O,"<>""")))
यह केवल गैर-रिक्त कोशिकाओं को गिनता है और उपयुक्त सेल को संदर्भित करता है।
इसका उपयोग विशिष्ट श्रेणी के लिए भी किया जा सकता है।
=INDIRECT("O"&(COUNT(O4:O34,"<>""")+3))
यह O4: O34 की अंतिम गैर-रिक्त सेल देता है।
मुझे लगता है कि एक कॉलम में डेटा की अंतिम पंक्ति को खोजने के लिए मैं W5ALIVE की प्रतिक्रिया के सबसे करीब हूं। यह मानते हुए कि मैं कॉलम A में डेटा के साथ अंतिम पंक्ति की तलाश कर रहा हूं, हालांकि, मैं अधिक सामान्य लुकअप के लिए निम्नलिखित का उपयोग करूंगा:
=MAX(IFERROR(MATCH("*",A:A,-1),0),IFERROR(MATCH(9.99999999999999E+307,A:A,1),0))
पहला MATCH अंतिम टेक्स्ट सेल को खोजेगा और दूसरा MATCH अंतिम संख्यात्मक सेल को खोजता है। IFERROR फ़ंक्शन शून्य हो जाता है यदि पहला MATCH सभी संख्यात्मक कोशिकाओं को पाता है या यदि दूसरा मैच सभी पाठ कोशिकाओं को पाता है।
मूल रूप से यह W5ALIVE के मिश्रित पाठ और संख्या समाधान की थोड़ी भिन्नता है।
समय के परीक्षण में, यह बराबर LOOKUP भिन्नताओं की तुलना में काफी तेज था।
उस अंतिम सेल के वास्तविक मूल्य को वापस करने के लिए, मैं इस तरह अप्रत्यक्ष सेल संदर्भ का उपयोग करना पसंद करता हूं:
=INDIRECT("A"&MAX(IFERROR(MATCH("*",A:A,-1),0),IFERROR(MATCH(9.99999999999999E+307,A:A,1),0)))
Sancho.s द्वारा दी गई विधि शायद एक क्लीनर विकल्प है, लेकिन मैं उस भाग को संशोधित करूंगा जो पंक्ति संख्या को इस पर पाता है:
=INDEX(MAX((A:A<>"")*(ROW(A:A))),1)
एकमात्र अंतर यह है कि ", 1" पहला मान लौटाता है जबकि ", 0" मानों की संपूर्ण सरणी देता है (सभी जिनमें से एक की आवश्यकता नहीं है)। मैं अभी भी सेल को इंडेक्स फ़ंक्शन पर संबोधित करना पसंद करता हूं, दूसरे शब्दों में, सेल वैल्यू को इसके साथ लौटाता हूं:
=INDIRECT("A"&INDEX(MAX((A:A<>"")*(ROW(A:A))),1))
महान धागा!
यदि आप सरणियों का उपयोग करने से डरते नहीं हैं, तो समस्या को हल करने के लिए एक बहुत ही सरल सूत्र है:
= SUM (IF (ए: एक <> "", 1,0))
आपको CTRL + SHIFT + ENTER दबाएँ क्योंकि यह एक सरणी सूत्र है।
ठीक है, इसलिए मेरे पास पूछने वाले के रूप में एक ही मुद्दा था, और दोनों शीर्ष उत्तरों की कोशिश की। लेकिन केवल सूत्र त्रुटियां हो रही हैं। पता चला कि मुझे "," से ";" सूत्र काम करने के लिए। मैं XL 2007 का उपयोग कर रहा हूं।
उदाहरण:
=LOOKUP(2;1/(A:A<>"");A:A)
या
=INDEX(A:A;MAX((A:A<>"")*(ROW(A:A))))
संस्करण ट्रैकिंग के लिए (संख्या की शुरुआत में अक्षर v को जोड़ते हुए), मुझे यह एक Xc सेल्सियस (SAAS डैश) में अच्छी तरह से काम करने के लिए मिला
="v"&MAX(A2:A500)