দ্রষ্টব্য : আমি এটিকে একটি "ওয়ান স্টপ পোস্ট" বানাতে চাইছি যেখানে আপনি Correct
শেষ সারিটি সন্ধান করার উপায়টি ব্যবহার করতে পারেন । এটি সর্বশেষ সারিটি সন্ধান করার সময় অনুসরণ করার জন্য সর্বোত্তম অভ্যাসগুলিও কভার করবে। এবং তাই আমি যখনই কোনও নতুন দৃশ্য / তথ্য জুড়ে আসি তা আপডেট করে রাখব।
শেষ সারিটি সন্ধান করার অবিশ্বস্ত উপায়
শেষ সারিটি সন্ধান করার কয়েকটি সাধারণ উপায় যা অত্যন্ত অবিশ্বাস্য এবং তাই কখনও ব্যবহার করা উচিত নয়।
- UsedRange
- xlDown
- COUNTA
UsedRange
ডেটা আছে এমন সর্বশেষ কক্ষটি খুঁজতে কখনই ব্যবহার করা উচিত নয় । এটি অত্যন্ত অবিশ্বাস্য। এই পরীক্ষা করে দেখুন।
ঘরে কিছু লিখুন A5
। এখন আপনি নীচে প্রদত্ত যে কোনও পদ্ধতিতে শেষ সারিটি গণনা করুন, এটি আপনাকে 5 দিবে Now এখন ঘরটি 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
। যে প্রশ্ন একটি ক্লাসিক দৃশ্যকল্প যেখানে কোড ব্যর্থ হবে কারণ Rows.Count
রিটার্ন 65536
এক্সেল 2003 এবং তার আগে এবং 1048576
এক্সেল 2007 এবং পরবর্তী সময়ের জন্য। একইভাবে Columns.Count
ফিরে আসে 256
এবং 16384
যথাক্রমে।
উপরে যে এক্সেল 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