যখন আমরা একাধিক এক্সেল শীট নিয়ে কাজ করি, তখন কখনও কখনও আমাদের ভাল পঠনযোগ্যতার জন্য নির্দিষ্ট শর্তগুলির সাথে একটি স্প্রেডশীট থেকে অন্যটিতে ডেটা অনুলিপি করতে হয়। VBA বাস্তবায়ন করা হচ্ছে এক্সেলে যেকোনো অপারেশন চালানোর জন্য সবচেয়ে কার্যকর, দ্রুততম এবং নিরাপদ পদ্ধতি। এই নিবন্ধে, আমরা আপনাকে দেখাব কিভাবে VBA ম্যাক্রোর সাহায্যে Excel-এ উন্নত ফিল্টার সহ অন্য শীটে ডেটা অনুলিপি করা যায়।
ওয়ার্কবুক ডাউনলোড করুন
আপনি এখান থেকে বিনামূল্যে অনুশীলন এক্সেল ওয়ার্কবুক ডাউনলোড করতে পারেন।
Excel এ উন্নত ফাইলার সহ অন্য শীটে ডেটা অনুলিপি করার জন্য VBA এর সাথে 3টি পদ্ধতি
নিম্নলিখিত ডেটাসেট দেখুন। অরিজিনাল নামে একটি এক্সেল ওয়ার্কশীট আছে . এই শীটে B4 থেকে E12 পরিসরের কিছু ডেটা রয়েছে . সেই পরিসরে ডুপ্লিকেট মানও রয়েছে। রেঞ্জ G4 থেকে H5 মাপদণ্ড ধারণ করে . আমরা যা করতে চাই তা হল, আমরা B5:E12 রেঞ্জ থেকে ডেটা কপি করব , যখন জন নাম থেকে কলাম মার্কস আছে 80 এর কম (সেল G4:H5-এ মানদণ্ড ) এবং উন্নত ফিল্টার সহ অন্যান্য শীটে সেই নির্দিষ্ট ডেটা আটকান তিনটি ভিন্ন পদ্ধতি সহ এক্সেলে।
আমরা দেখব কিভাবে ডেটা কপি করতে হার্ডকোডেড ম্যাক্রো ঢোকাতে হয় , কিভাবে নির্বাচন দ্বারা অগ্রিম ফিল্টার এবং কিভাবে ম্যাক্রো রেকর্ড করার মাধ্যমে একটি শীট থেকে অন্য শীটে ডেটা স্থানান্তর করতে হয় . এবং উপরের ডেটাসেটটি উল্লিখিত সমস্ত পদ্ধতি চালানোর উদাহরণ হবে।
1. Excel এ উন্নত ফিল্টার সহ অন্য শীটে ডেটা অনুলিপি করতে VBA কোড এম্বেড করুন
এখানে, আপনি VBA শিখবেন কোড থেকে শুধুমাত্র ডেটা অনুলিপি করতে আসল শীট যখন John's Marks 80 এর কম হয় অন্য নামযুক্ত শীট-এ লক্ষ্য উন্নত ফিল্টার সহ।
পদক্ষেপ:
- শুরুতে, Alt + F11 টিপুন আপনার কীবোর্ডে বা ট্যাবে যান ডেভেলপার -> ভিজ্যুয়াল বেসিক ভিজ্যুয়াল বেসিক এডিটর খুলতে .
- এরপর, পপ-আপ কোড উইন্ডোতে, মেনু বার থেকে, ঢোকান -> মডিউল ক্লিক করুন .
- তারপর, নিচের কোডটি কপি করুন এবং কোড উইন্ডোতে পেস্ট করুন।
Sub AdvancedFilterCode()
Dim iRange As Range
Dim iCriteria As Range
'set the range to filter and the criteria range
Set iRange = Sheets("Original").Range("B4:E12")
Set iCriteria = Sheets("Original").Range("G4:H5")
'copy the filtered data to the destination
iRange.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=iCriteria, CopyToRange:=Sheets("Target").Range("B4:E4"), Unique:=True
End Sub
আপনার কোড এখন চালানোর জন্য প্রস্তুত৷
৷
- এখন, F5 টিপুন আপনার কীবোর্ডে বা মেনু বার থেকে চালান -> সাব/ইউজারফর্ম চালান নির্বাচন করুন . এছাড়াও আপনি ছোট রান আইকনে ক্লিক করতে পারেন৷ ম্যাক্রো চালানোর জন্য সাব-মেনু বারে।
কোড কার্যকর করার পরে, ফলাফল দেখতে নীচের চিত্রটি দেখুন৷
ফলস্বরূপ, শুধুমাত্র সেই ডেটা যেখানে John’s Marks 80 এর কম কপি করা হয়েছে লক্ষ্যে শীট অরিজিনাল থেকে শীট VBA-এর উন্নত ফিল্টার সহ .
আরো পড়ুন: এক্সেলের অন্য শীটে ডেটা অনুলিপি করতে কীভাবে উন্নত ফিল্টার ব্যবহার করবেন
2. ব্যবহারকারী-সংজ্ঞায়িত নির্বাচন দ্বারা ডেটা ফিল্টার করতে VBA ম্যাক্রো প্রয়োগ করুন
এখন, আপনি শিখবেন কিভাবে শুধুমাত্র অরিজিনাল থেকে ডেটা ফিল্টার করতে হয় শীট যখন John's Marks 80 এর কম হয় গন্তব্য নামের আরেকটি শীটে একটি ব্যবহারকারী-নির্বাচিত পরিসর থেকে VBA এর উন্নত ফিল্টার সহ এক্সেলে।
পদক্ষেপ:
- আগের মতই, ভিজ্যুয়াল বেসিক এডিটর খুলুন ডেভেলপার থেকে ট্যাব এবং ঢোকান একটি মডিউল কোড উইন্ডোতে।
- তারপর, কোড উইন্ডোতে, নিচের কোডটি কপি করে পেস্ট করুন।
Sub AdvancedFilterBySelection()
Dim iTrgt As String
Dim iRange As Range
Dim iCriteria As Range
Dim iDestination As Range
On Error Resume Next
iTrgt = ActiveWindow.RangeSelection.Address
Set iRange = Application.InputBox("Select Range to Filter", "Excel", iTrgt, , , , , 8)
If iRange Is Nothing Then Exit Sub
Set iCriteria = Application.InputBox("Select Criteria Range", "Excel", "", , , , , 8)
If iCriteria Is Nothing Then Exit Sub
Set iDestination = Application.InputBox("Select Destination Range", "Excel", "", , , , , 8)
If iDestination Is Nothing Then Exit Sub
iRange.AdvancedFilter xlFilterCopy, iCriteria, iDestination, False
iDestination.Worksheet.Activate
iDestination.Worksheet.Columns.AutoFit
End Sub
আপনার কোড এখন চালানোর জন্য প্রস্তুত৷
৷
- এখন, চালান ম্যাক্রো।
- তারপর, একটি পপ-আপ বক্স আসবে। পরিসীমা নির্বাচন করুন যে আপনি ফিল্টার করতে চান (আমাদের ক্ষেত্রে, এটি পরিসীমা B4 থেকে E12 )।
- পরে, ঠিক আছে টিপুন .
- এরপর, আরেকটি পপ-আপ বক্স আসবে। এবার আপনাকে মাপদণ্ডের পরিসর নির্বাচন করতে হবে যা আপনি আপনার ডেটাসেটে সংরক্ষণ করেছেন (মাপদণ্ডের পরিসর সেল G4 থেকে H5 আমাদের ডেটাসেটের জন্য)।
- আবার, ঠিক আছে টিপুন .
- শেষবারের মতো, আরেকটি পপ-আপ বক্স প্রদর্শিত হবে। এবং এখন, আপনাকে গন্তব্য পরিসর নির্বাচন করতে হবে যেখানে আপনি কপি করা ডেটা সঞ্চয় করতে চান . আমাদের ক্ষেত্রে, এটি হল সেল B2 গন্তব্য -এ শীট .
- তারপর, ঠিক আছে টিপুন .
ফলাফল দেখতে নিচের ছবিটি দেখুন।
অবশেষে, শুধুমাত্র সেই ডেটা যেখানে John’s Marks 80 এর কম কপি করা হয়েছে গন্তব্য -এ শীট অরিজিনাল থেকে শীট VBA-এর উন্নত ফিল্টার সহ .
সম্পর্কিত বিষয়বস্তু: এক্সেল অ্যাডভান্সড ফিল্টার কাজ করছে না (2টি কারণ ও সমাধান)
একই রকম পড়া
- উন্নত ফিল্টার কীভাবে ব্যবহার করবেন যদি এক্সেলের মানদণ্ডের পরিসরে পাঠ্য থাকে
- ডাইনামিক অ্যাডভান্সড ফিল্টার এক্সেল (VBA এবং ম্যাক্রো)
- Excel এ মানদণ্ডের পরিসর সহ উন্নত ফিল্টার (18 অ্যাপ্লিকেশন)
- এক্সেলের একাধিক মানদণ্ড সহ উন্নত ফিল্টার (15টি উপযুক্ত উদাহরণ)
- Excel VBA উদাহরণ:মানদণ্ডের সাথে উন্নত ফিল্টার ব্যবহার করুন (6 মানদণ্ড)
3. এক্সেলতে ম্যাক্রো রেকর্ডিং দ্বারা অন্য শীটে ডেটা অনুলিপি করতে VBA ম্যাক্রো প্রয়োগ করুন
এই বিভাগে, আপনি শুধুমাত্র অরিজিনাল থেকে ডেটা বের করার একই সমস্যার সমাধান জানতে পারবেন শীট যখন John's Marks 80 এর কম হয় ফিল্টার করা নামের আরেকটি শীটে ম্যাক্রো রেকর্ডিং দ্বারা VBA এর এক্সেলে।
পদক্ষেপ:
- প্রথমে, একটি নতুন ওয়ার্কশীট খুলুন (আমাদের ক্ষেত্রে, এটি শীট ফিল্টার করা )।
- সেই শীটে, শুধু হেডার সারি সংরক্ষণ করুন মূল ডেটাসেটের।
- এরপর, অরিজিনাল -এ যান শীট . আপনি একটি ছোট ম্যাক্রো চিহ্ন দেখতে পাবেন৷ শীটের নীচে বাম দিকে। চিহ্নটিতে ক্লিক করুন৷ একটি ম্যাক্রো রেকর্ডিং শুরু করতে।
- তারপর, একটি রেকর্ড ম্যাক্রো পপ-আপ উইন্ডো আসবে। একটি ম্যাক্রো নাম প্রদান করুন৷ যে আপনি চান. আমরা অ্যাডভান্সড ফিল্টার সংজ্ঞায়িত করি আমাদের ম্যাক্রো নাম হিসাবে .
- এরপর, আপনি যেখানে ম্যাক্রো সঞ্চয় করতে চান সেটি নির্বাচন করুন . আমরা বিদ্যমান ওয়ার্কবুকে ম্যাক্রো সংরক্ষণ করতে চেয়েছিলাম, তাই আমরা এই ওয়ার্কবুক নির্বাচন করেছি .
- পরে, ঠিক আছে ক্লিক করুন .
- এখন, অরিজিনাল -এ ফিরে যান শীট এবং আপনি লক্ষ্য করবেন যে ম্যাক্রোটি আপনি এইমাত্র শুরু করেছেন তা রেকর্ড করা শুরু হয়েছে৷ ৷
- তারপর, আপনাকে শীট-এ যেতে হবে এটি কপি করা ডেটা ধরে রাখবে (যেমন ফিল্টার করা শীট)।
- একটি সক্রিয় সেল আছে৷ সেই শীটে এবং ডেটা -> অ্যাডভান্সড-এ যান .
- এরপর, একটি উন্নত ফিল্টার পপ-আপ বক্স আসবে।
- প্রথমে, চেক করুন অন্য স্থানে অনুলিপি করুন অ্যাকশন থেকে বিকল্প
- এখন, তালিকা পরিসরের পাশে পাঠ্য বাক্সে , অরিজিনাল -এ যান শীট এবং পরিসীমা নির্বাচন করুন ফিল্টার করতে (আমাদের ডেটাসেটের জন্য, পরিসর হল B4:E12 )।
- তারপর, মাপদণ্ড পরিসর এর পাশে পাঠ্য বাক্সে , মাপদণ্ডের পরিসর নির্বাচন করুন (John's Marks 80 এর কম ) অরিজিনাল -এ সংরক্ষিত শীট (আমাদের ডেটাসেটের জন্য, পরিসর হল G4:H5 )।
- এখন, এতে অনুলিপি করুন এর পাশে পাঠ্য বাক্সে৷ , ফিল্টার করা -এ যান শীট , শীট যেখানে আপনি কপি করা ডেটা সঞ্চয় করতে চান এবং হেডার পরিসর নির্বাচন করুন (আমাদের ডেটাসেটের জন্য, পরিসর হল B4:E4 )।
- শেষে, ঠিক আছে ক্লিক করুন .
এই সম্পূর্ণ পদ্ধতি দ্বারা উত্পাদিত ফলাফল দেখতে, নীচের ছবিটি দেখুন। শুধুমাত্র ডেটা যেখানে জন এর মার্কস 80 এর কম কপি করা হয়েছে ফিল্টার করা -এ শীট অরিজিনাল থেকে শীট ম্যাক্রো রেকর্ডিং সহ .
- এখন, ম্যাক্রো চিহ্নে ক্লিক করুন শীটের নীচে বাম দিকে ম্যাক্রো রেকর্ডিং বন্ধ করতে . আপনার কাছে এখন একটি রেকর্ড করা ম্যাক্রো আছে যা আপনি যতবার চালাবেন ততবার উপরে বর্ণিত প্রক্রিয়াটি সম্পাদন করবে৷
কিন্তু একটি খারাপ আছে এই পদ্ধতির। আপনি যদি অরিজিনাল এ নতুন ডেটা যোগ করেন শীট , ফিল্টার করা শীট ডেটা মানদণ্ড পূরণ করলেও আপডেট করা হবে না।
আমরা আমাদের নতুন ফিল্টার করা চাই শীট যখন আমরা অরিজিনাল -এ নতুন ডেটা যোগ করি তখন কোডটি কার্যকর করার মাধ্যমে স্বয়ংক্রিয়ভাবে আপডেট হতে পারে শীট . এটি করার জন্য, আমাদের কোডটি কিছুটা পরিবর্তন করতে হবে।
আমরা যা চাই তা পাওয়ার সমস্ত পদক্ষেপ নীচে দেখানো হয়েছে৷
৷পদক্ষেপ:
- প্রথমে, ট্যাব থেকে, দেখুন -> ম্যাক্রো -> ম্যাক্রো দেখুন নির্বাচন করুন .
- পরে, একটি ম্যাক্রো পপ-আপ উইন্ডো আসবে। ম্যাক্রো নাম নির্বাচন করুন যে আপনি শুধু রেকর্ডিং করে তৈরি করেছেন (উন্নত ফিল্টার আমাদের ক্ষেত্রে)।
- তারপর, সম্পাদনা এ ক্লিক করুন .
- রেকর্ড করা ম্যাক্রোর পিছনের কোড কোড উইন্ডোতে প্রদর্শিত হবে (নীচের ছবিটি দেখুন)।
- এখন, নীল চিহ্নিত অংশটি মুছুন কোড থেকে (নীচের ছবিতে দেখানো হয়েছে)।
- তারপর, কোড সংশোধন করুন ঠিক যেমনটি নিচের ছবিতে দেখানো হয়েছে।
- এখন, আপডেট করা কোড হবে:
Sub AdvancedFilter()
Sheets("Original").Range("B4").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("Original").Range("G4:H5"), CopyToRange:=Sheets("Filtered").Range("B4:E4"), Unique:=False
End Sub
- সংরক্ষণ করুন৷ এই কোড।
- এখন, অরিজিনাল -এ ফিরে যান শীট এবং নতুন ডেটা যোগ করুন যা মানদণ্ডের আওতায় পড়বে। উদাহরণস্বরূপ, আমরা জন এর আরেকটি সারি যোগ করেছি এর তথ্য যেখানে প্রাপ্ত মার্কস ৭৬ যা 80-এর কম নম্বর-এর মাপকাঠির অধীনে পড়ে৷ .
- তারপর,চালান কোডটি দেখুন এবং ফলাফলের জন্য নিম্নলিখিত চিত্রটি দেখুন।
- একটি নতুন অনুলিপি করা সারি আছে৷ ফিল্টার করা -এ শীট এর জন মার্ক 76 সহ এর তথ্য যা মানদণ্ড পূরণ করে (মার্কস<80 )।
আরো পড়ুন:কিভাবে শুধুমাত্র এক্সেলে অনন্য রেকর্ডের জন্য উন্নত ফিল্টার ব্যবহার করবেন
উপসংহার
উপসংহারে, এই নিবন্ধটি আপনাকে কিভাবে উন্নত ফিল্টার সহ অন্য শীটে ডেটা অনুলিপি করতে হয় সে সম্পর্কে 3টি ভিন্ন মাপকাঠি দেখিয়েছে। VBA ম্যাক্রো সহ Excel-এ . আমি আশা করি এই নিবন্ধটি আপনার জন্য খুব উপকারী হয়েছে. বিষয় সম্পর্কিত যেকোনো প্রশ্ন নির্দ্বিধায় করুন।
সম্পর্কিত প্রবন্ধ
- এক্সেলে ফাঁকা কোষগুলি বাদ দেওয়ার জন্য কীভাবে উন্নত ফিল্টার ব্যবহার করবেন (3টি সহজ কৌশল)
- Excel VBA:একটি পরিসরে একাধিক মানদণ্ড সহ উন্নত ফিল্টার (5টি পদ্ধতি)
- কেবলমাত্র এক্সেলে অনন্য রেকর্ডের জন্য উন্নত ফিল্টার কীভাবে ব্যবহার করবেন
- এক্সেলের অন্য অবস্থানে অনুলিপি করতে উন্নত ফিল্টার প্রয়োগ করুন
- এক্সেল অ্যাডভান্সড ফিল্টার:"ধারণ করে না" (২টি পদ্ধতি) প্রয়োগ করুন
- এক্সেলের এক কলামে একাধিক মানদণ্ডের উপর ভিত্তি করে উন্নত ফিল্টার প্রয়োগ করুন