नोट : मैं इसे "वन स्टॉप पोस्ट" बनाने का इरादा रखता हूं जहां आप Correct
अंतिम पंक्ति को खोजने के तरीके का उपयोग कर सकते हैं । यह अंतिम पंक्ति का पता लगाने के लिए सर्वोत्तम प्रथाओं को भी कवर करेगा। और इसलिए जब भी मैं किसी नए परिदृश्य / जानकारी पर आता हूं, मैं इसे अपडेट करता रहूंगा।
अंतिम पंक्ति खोजने के अविश्वसनीय तरीके
अंतिम पंक्ति खोजने के कुछ सबसे सामान्य तरीके जो अत्यधिक अविश्वसनीय हैं और इसलिए कभी भी उपयोग नहीं किए जाने चाहिए।
- UsedRange
- xlDown
- COUNTA
UsedRange
जो भी अंतिम डेटा है उसे खोजने के लिए कभी भी उपयोग नहीं किया जाना चाहिए । यह बेहद अविश्वसनीय है। इस प्रयोग को आजमाएं।
सेल में कुछ टाइप करें A5
। अब जब आप नीचे दी गई किसी भी विधि के साथ अंतिम पंक्ति की गणना करते हैं, तो यह आपको 5 देगा। अब सेल को A10
लाल रंग दें। यदि आप अब नीचे दिए गए किसी भी कोड का उपयोग करते हैं, तो भी आपको 5 मिलेगा। यदि आप उपयोग Usedrange.Rows.Count
करते हैं तो आपको क्या मिलेगा? यह 5 नहीं होगा।
यह दिखाने के लिए यहां एक परिदृश्य है कि कैसे UsedRange
काम करता है।
xlDown
उतना ही अविश्वसनीय है।
इस कोड पर विचार करें
lastrow = Range("A1").End(xlDown).Row
यदि केवल एक सेल ( A1
) होता, जिसमें डेटा होता, तो क्या होता ? आप कार्यपत्रक में अंतिम पंक्ति तक पहुंच जाएंगे! यह सेल का चयन करने A1
और फिर Endकुंजी दबाने और फिर कुंजी दबाने जैसा है Down Arrow। यह आपको अविश्वसनीय परिणाम भी देगा यदि एक सीमा में रिक्त कोशिकाएं हैं।
CountA
यह भी अविश्वसनीय है क्योंकि यह आपको गलत परिणाम देगा यदि बीच में रिक्त कोशिकाएं हैं।
और इसलिए एक के उपयोग से बचना चाहिए UsedRange
, xlDown
और CountA
अंतिम सेल खोजने के लिए।
एक कॉलम में अंतिम पंक्ति खोजें
कर्नल ई में अंतिम पंक्ति को खोजने के लिए इसका उपयोग करें
With Sheets("Sheet1")
LastRow = .Range("E" & .Rows.Count).End(xlUp).Row
End With
यदि आप ध्यान दें कि हमारे पास .
पहले एक है Rows.Count
। हमने अक्सर इसे नजरअंदाज करना चुना। आपके द्वारा प्राप्त की जा सकने वाली संभावित त्रुटि पर यह प्रश्न देखें । मैं हमेशा .
पहले Rows.Count
और का उपयोग करने की सलाह देता हूं Columns.Count
। यह प्रश्न एक क्लासिक परिदृश्य है जहां कोड विफल हो जाएगा क्योंकि Excel 2003 और पहले और Excel 2007 और बाद के लिए Rows.Count
रिटर्न । इसी प्रकार देता है और क्रमश:।65536
1048576
Columns.Count
256
16384
उपरोक्त तथ्य कि Excel 2007+ में 1048576
पंक्तियाँ भी इस तथ्य पर जोर देती हैं कि हमें हमेशा वैरिएबल की घोषणा करनी चाहिए जो पंक्ति मान को रखेगा Long
, Integer
अन्यथा आपको एक Overflow
त्रुटि मिलेगी ।
ध्यान दें कि यह दृष्टिकोण किसी भी छिपी हुई पंक्तियों को छोड़ देगा। पर वापस देख रहे हैं स्तंभ एक के लिए ऊपर मेरी स्क्रीनशॉट , अगर पंक्ति 8 छिपे हुए थे, इस दृष्टिकोण वापसी होगी 5
बजाय 8
।
एक शीट में अंतिम पंक्ति खोजें
Effective
शीट में अंतिम पंक्ति खोजने के लिए , इसका उपयोग करें। के उपयोग पर ध्यान दें Application.WorksheetFunction.CountA(.Cells)
। यह आवश्यक है क्योंकि यदि कार्यपत्रक में डेटा वाले कोई सेल नहीं हैं तो .Find
आपको दे देंगेRun Time Error 91: Object Variable or With block variable not set
With Sheets("Sheet1")
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
lastrow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
Else
lastrow = 1
End If
End With
तालिका में अंतिम पंक्ति खोजें (सूची सूची)
एक ही सिद्धांत लागू होते हैं, उदाहरण के लिए एक तालिका के तीसरे कॉलम में अंतिम पंक्ति प्राप्त करने के लिए:
Sub FindLastRowInExcelTableColAandB()
Dim lastRow As Long
Dim ws As Worksheet, tbl as ListObject
Set ws = Sheets("Sheet1") 'Modify as needed
'Assuming the name of the table is "Table1", modify as needed
Set tbl = ws.ListObjects("Table1")
With tbl.ListColumns(3).Range
lastrow = .Find(What:="*", _
After:=.Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
End With
End Sub