আমি যেমন আপনার প্রশ্নটি বুঝতে পারি, আপনার কাছে একটি কার্যপত্রক রয়েছে যা প্রথম কলামে আপনার ডেটা সারিগুলি নির্ধারিত মানগুলি অন্তর্ভুক্ত করে। আপনি সেই মানগুলির প্রত্যেকের জন্য নির্ধারিত সারিগুলি আলাদা করতে এবং প্রতিটি মানের জন্য সারিগুলি পৃথক ওয়ার্কশিটে সংরক্ষণ করতে চান। আমি ধরে নিচ্ছি যে আপনি যে পুনর্বিবেচনার উল্লেখ করেছেন তার সংখ্যার দিক দিয়ে আপনি নিজে হাতে এটি করা এড়াতে চান।
নিম্নলিখিত ভিবিএ কোড আপনার প্রয়োজন অনুসারে করতে পারে। এটি এমন একটি প্রক্রিয়া অন্তর্ভুক্ত করে যা এক্সেল টেবিলের জন্য ফিল্টার মান প্রয়োগ করে এবং পৃথক ওয়ার্কবুকগুলিতে ফলাফলগুলি সংরক্ষণ করে, পাশাপাশি একটি ইউটিলিটি ফাংশন যা ফিল্টার করা দরকার সেই অনন্য মানগুলি সনাক্ত করে।
বিকল্প স্পষ্ট
সাব ফিল্টার টেবিলঅ্যান্ডসেভ ()
'প্রথমটিতে মানগুলিতে একটি ডেটা পরিসীমা ফিল্টার করে
'পরিসীমাটির কলাম এবং ফিল্টারটি সংরক্ষণ করে
পৃথক ওয়ার্কশিটগুলির মান। তথ্য পরিসীমা
'ধরে নেওয়া হয় এটি A1 কক্ষে শুরু হবে এবং আছে
'ব্যাপ্তির 1 সারি কলামের শিরোনামের নাম।
'
'ওয়ার্কবুকগুলি নাম দিয়ে সংরক্ষণ করা হয় যা দিয়ে শুরু হয়
'একটি নির্দিষ্ট উপসর্গ এবং ফিল্টার মান দিয়ে শেষ,
'যেমন, "ফাইল ফাইল কর্পোরেশন"। ডিরেক্টরি যা
'ফাইলগুলি সংরক্ষিত হয় এবং ফাইলের উপসর্গটি নির্দিষ্ট করতে হবে
' নিচে.
ডাব্লু ডাব্লু ওয়ার্কবুক হিসাবে
ওয়ার্কশিট হিসাবে ডিম ডাব্লুএস, ওয়ার্কশিট হিসাবে নতুন ডাব্লু
ধাপ সারণীরেঞ্জ রেঞ্জ হিসাবে, ফিল্টারভ্যালুআরঞ্জ রেঞ্জ হিসাবে, শেষ সীমা রেঞ্জ হিসাবে
স্ট্রিং হিসাবে ডিমে সেভডির, সেভপ্যাথএন্ডনাম স্ট্রিং হিসাবে
স্ট্রিং হিসাবে ডিমে ইমেজ রিসপন্স, স্ট্রিং হিসাবে সেমনেমপ্রফিক্স
ডিমে ইনপুটআর () ভেরিয়েন্ট হিসাবে, ফলাফলআর () ভেরিয়েন্ট হিসাবে
ধীর ফলাফল
ত্রুটিতে GoTo ExitErr এ
অ্যাপ্লিকেশন সহ
.ScreenUpdating = মিথ্যা
.EnableEvents = মিথ্যা
শেষ করা
'*********************************************
'সংরক্ষণের ডিরেক্টরিটি সেট করুন এবং ফাইলটি এখানে পছন্দসই করুন
'*********************************************
সেভডির = "ই: \"
saveNamePrefix = "ফাইল"
'*********************************************
Ws = এই ওয়ার্কবুক. ওয়ার্কশিটস ("পত্রক 1") সেট করুন
লাস্টसेल = সেলগুলি সেট করুন ind ফাইন্ড (কী: = "*", এর পরে: = [এ 1], _
SearchDirection: = xlPrevious)
টেবিলআরঙ্গ = রেঞ্জ সেট করুন ("$ এ $ 1:" এবং লাস্টসেল। ঠিকানা)
ফিল্টারভ্যালুআরজি = রেঞ্জ সেট করুন ("$ এ $ 2: $ এ $" এবং লাস্টসেল। রো)
ডাব্লুএস সহ
ত্রুটিতে পুনরায় সূচনা করার সময় 'ডেটা সীমাটি টেবিলের কাছে রূপান্তর করুন
.ListObjects.Add (উত্স টাইপ: = xlSrcRange, উত্স: = টেবিলআরঙ্গ, _
XLListObjectHasHeeda: = xlYes)। নাম = "প্রধান"
ত্রুটিতে GoTo ExitErr এ
শেষ করা
ইনপুটআর = ফিল্টারভ্যালুআরঙ্গ 'অ্যারেতে ফিল্টার কলাম বরাদ্দ করুন
ফলাফলআরআর = getDistinctE উপাদান (ইনপুটআর)
রেজাল্ট ইন্ডেক্স = এলবাউন্ড (রেজাল্টআর) থেকে ইউবাউন্ড (রেজাল্টআর) এর জন্য ফিল্টার মানগুলির মধ্য দিয়ে লুপ করুন
ডাব্লুএস সহ
ত্রুটি পুনরায় শুরু করার পরে
.ShowAllData
ত্রুটিতে GoTo ExitErr এ
.লিস্টঅবজেক্টস ("প্রধান")। রেঞ্জ.আউটফিল্টার _
ক্ষেত্র: = 1, মানদণ্ড 1: = "=" & ফলাফলআরআর (রেজাল্ট ইনডেক্স) 'বর্তমান ফিল্টার মান সেট করুন
.লিস্টঅবজেক্টস ("প্রধান")। রেঞ্জ.কপি 'ফিল্টার করা সারিগুলিকে অনুলিপি করুন
শেষ করা
NewWs = ওয়ার্কবুকস সেট করুন। যুক্ত করুন (xlWBATWorksheet) or ওয়ার্কশিট (1) 'নতুন ওয়ার্কবুক তৈরি করুন এবং
ত্রুটি পুনরায় শুরু করার সময় 'এতে ফিল্টার করা সারিগুলি পেস্ট করুন
NewWs.Range ("A1") সহ
.পস্টস্পেশিয়াল xlPasteColumnWidths
.পাস্টস্পেশিয়াল xlPasteValuesAndNumberFor format
.Select
অ্যাপ্লিকেশন.কুটকপিমোড = মিথ্যা
শেষ করা
ত্রুটিতে GoTo ExitErr এ
ডাব্লুবিবি = অ্যাকটিভ ওয়ার্কবুকের ফাইল সংরক্ষণের রুটিন সেট করুন
savePathAndName = saveDir & saveNamePrefix & _
রেজাল্টআর (রেজাল্ট ইনডেক্স) এবং ".xlsx"
যদি দির (savePathAndName) = "" তবে
wb.SaveAs savePathAndName
wb.Close
অন্য 'বিদ্যমান ফাইলগুলির সাথে ডিল করুন, যদি থাকে তবে
msgResponse = MsgBox ("ফাইল" & saveNamePrefix & _
রেজাল্টআর (রেজাল্ট ইনডেক্স) & _
".xlsx ইতিমধ্যে বিদ্যমান" " & vbCrLf & _
"বিদ্যমান ফাইলটি প্রতিস্থাপন করবেন?", _
vbYesNoCancel)
যদি msgResponse = vbYes তারপর
অ্যাপ্লিকেশন.ডিসপ্লে অ্যালার্টস = মিথ্যা
wb.SaveAs savePathAndName
wb.Close
অ্যাপ্লিকেশন.ডিসপ্লে অ্যালার্টস = সত্য
আর
অ্যাপ্লিকেশন.ডিসপ্লে অ্যালার্টস = মিথ্যা
wb.Close
অ্যাপ্লিকেশন.ডিসপ্লে অ্যালার্টস = মিথ্যা
যদি শেষ
যদি শেষ
পরবর্তী রেজাল্ট ইনডেক্স
ws.SowowAllData 'ডেটা টেবিলটিকে ব্যাপ্তিতে ফিরিয়ে আনুন
ডাব্লু.লিস্টঅবজেক্টস ("প্রধান")। তালিকাভুক্ত করা এবং বিন্যাস অপসারণ
টেবিলআরং সহ
.বার্ডার (xlEdgeLeft) .লাইনস্টাইল = xlNone
.বার্ডার (xlEdgeTop) .লাইনস্টাইল = এক্সএলনোন
.বার্ডার (xlEdgeB নীট) .লাইনস্টাইল = এক্সএলনোন
.বার্ডার (xlEdgeRight) .লাইনস্টাইল = xlNone
.বার্ডার (xlInsideVerical) .লাইনস্টাইল = এক্সএলনোন
.বার্ডার (xlInsideHorizontal) .লাইনস্টাইল = এক্সএলনোন
.ফন্ট.বোল্ড = মিথ্যা
সাথে .আন্তরের
.প্যাটার্ন = xlNone
.TintAndShade = 0
.প্যাটার্টিন্টএন্ডশ্যাড = 0
শেষ করা
শেষ করা
ws.Range ( "ক 1")। নির্বাচন
প্রস্থান করুন
ExitErr:
অ্যাপ্লিকেশন সহ
.ScreenUpdating = সত্য
.EnableEvents = সত্য
.DisplayAlerts = সত্য
শেষ করা
সেট ws = কিছুই না
NewWs = কিছুই সেট করুন
এমএসজিবক্স "ত্রুটি" এবং এরার নাম্বার & ":" এবং এরর বিবরণ, vbOKOnly, "ত্রুটি"
শেষ সাব
ফাংশন গেটডিন্টিনেক্ট এলিমেন্টস (বাইরেফ ইনপুটআর)
'এন-বাই -2 থেকে অনন্য আইটেমগুলির 1-ডি অ্যারে প্রদান করে
ডুপ্লিকেট সহ ডেটা আইটেমগুলির ইনপুট অ্যারে।
'ইনপুট অ্যারে সাধারণত উত্পন্ন হত
'একটি একক-কলামের কার্যপত্রক সীমা নির্ধারণ করা
'একটি ভেরিয়েন্ট অ্যারে।
ডিম অব ডজ অজ অবজেক্ট
দিম আমি লং
সেট ডিক = ক্রিয়েটওবজেক্ট ("স্ক্রিপ্টিং.ডায়াররিজ")
আই = এলবাউন্ডের (ইনপুটআর) থেকে ইউবাউন্ডের (ইনপুটআর)
ডিক (ইনপুটআর (আই, 1)) = 1
পরবর্তী i
গেটডিস্টিনেক্টএলিমেন্টস = ডিক্ট.কি ()
ফাংশন শেষ