VBA বহু বছর ধরে মাইক্রোসফট অফিস স্যুটের অংশ। যদিও এটিতে একটি সম্পূর্ণ VB অ্যাপ্লিকেশনের সম্পূর্ণ কার্যকারিতা এবং ক্ষমতা নেই, VBA অফিস ব্যবহারকারীদের অফিস পণ্যগুলিকে একীভূত করার নমনীয়তা প্রদান করে এবং সেগুলিতে আপনি যে কাজগুলি করেন তা স্বয়ংক্রিয়ভাবে পরিচালনা করে৷
ভিবিএ-তে উপলব্ধ সবচেয়ে শক্তিশালী টুলগুলির মধ্যে একটি হল একটি অ্যারে নামক একটি একক ভেরিয়েবলে একটি সম্পূর্ণ পরিসীমা ডেটা লোড করার ক্ষমতা। এইভাবে ডেটা লোড করার মাধ্যমে, আপনি বিভিন্ন উপায়ে ডেটার সেই পরিসরে গণনা করতে বা সম্পাদন করতে পারেন৷
তাই একটি VBA অ্যারে কি? এই নিবন্ধে আমরা সেই প্রশ্নের উত্তর দেব, এবং আপনাকে দেখাব কিভাবে আপনার নিজের VBA স্ক্রিপ্টে একটি ব্যবহার করতে হয়।
VBA অ্যারে কি?
এক্সেলে একটি VBA অ্যারে ব্যবহার করা খুবই সহজ, কিন্তু অ্যারের ধারণা বোঝা একটু জটিল হতে পারে যদি আপনি এটি ব্যবহার না করেন।
এটির ভিতরে বিভাগ সহ একটি বাক্সের মতো একটি অ্যারের কথা ভাবুন। একটি এক-মাত্রিক অ্যারে হল একটি বাক্স যার এক লাইন বিভাগ রয়েছে। একটি দ্বি-মাত্রিক অ্যারে হল একটি বাক্স যার দুটি লাইন বিভাগ রয়েছে৷
আপনি এই “বক্স”-এর প্রতিটি বিভাগে আপনার পছন্দ অনুযায়ী ডেটা রাখতে পারেন।
আপনার VBA স্ক্রিপ্টের শুরুতে, আপনাকে আপনার VBA অ্যারে সংজ্ঞায়িত করে এই "বক্স" সংজ্ঞায়িত করতে হবে। তাই এমন একটি অ্যারে তৈরি করতে যা এক সেট ডেটা (এক-মাত্রা অ্যারে) ধরে রাখতে পারে, আপনি নিম্নলিখিত লাইনটি লিখবেন৷
Dim arrMyArray(1 To 6) As String
পরে আপনার প্রোগ্রামে, আপনি বন্ধনীর ভিতরের অংশটি উল্লেখ করে এই অ্যারের যেকোনো বিভাগে ডেটা স্থাপন করতে পারেন।
arrMyArray(1) = "Ryan Dube"
আপনি নিম্নলিখিত লাইনটি ব্যবহার করে একটি দ্বি-মাত্রিক অ্যারে তৈরি করতে পারেন।
Dim arrMyArray(1 To 6,1 to 2) As Integer
প্রথম সংখ্যা সারি প্রতিনিধিত্ব করে, এবং দ্বিতীয়টি কলাম। সুতরাং উপরের অ্যারেটি 6টি সারি এবং 2টি কলাম সহ একটি পরিসীমা ধারণ করতে পারে৷
আপনি নিম্নরূপ ডেটা সহ এই অ্যারের যেকোনো উপাদান লোড করতে পারেন।
arrMyArray(1,2) = 3
এটি সেল B1-এ একটি 3 লোড করবে।
একটি অ্যারে নিয়মিত ভেরিয়েবল হিসাবে যেকোনো ধরনের ডেটা ধারণ করতে পারে, যেমন স্ট্রিং, বুলিয়ান, ইন্টিজার, ফ্লোট এবং আরও অনেক কিছু।
বন্ধনীর ভিতরের সংখ্যাটিও একটি পরিবর্তনশীল হতে পারে। প্রোগ্রামাররা সাধারণত একটি ফর লুপ ব্যবহার করে একটি অ্যারের সমস্ত বিভাগের মাধ্যমে গণনা করে এবং অ্যারেতে স্প্রেডশীটে ডেটা সেল লোড করে। আপনি এই নিবন্ধে পরে এটি কিভাবে করবেন তা দেখতে পাবেন।
এক্সেল এ কিভাবে একটি VBA অ্যারে প্রোগ্রাম করবেন
আসুন একটি সাধারণ প্রোগ্রামের দিকে নজর দেওয়া যাক যেখানে আপনি একটি স্প্রেডশীট থেকে একটি বহুমাত্রিক অ্যারেতে তথ্য লোড করতে চাইতে পারেন৷
একটি উদাহরণ হিসাবে, আসুন একটি পণ্য বিক্রয় স্প্রেডশীট দেখি, যেখানে আপনি স্প্রেডশীট থেকে বিক্রয় প্রতিনিধির নাম, আইটেম এবং মোট বিক্রয় টানতে চান৷
মনে রাখবেন যে VBA-তে আপনি যখন সারি বা কলাম উল্লেখ করেন, আপনি উপরের বাম দিক থেকে শুরু করে 1 থেকে সারি এবং কলাম গণনা করেন। সুতরাং প্রতিনিধি কলামটি 3, আইটেম কলামটি 4 এবং মোট কলামটি 7।
সমস্ত 11টি সারিতে এই তিনটি কলাম লোড করতে, আপনাকে নিম্নলিখিত স্ক্রিপ্টটি লিখতে হবে৷
Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i
আপনি লক্ষ্য করবেন যে হেডার সারিটি এড়িয়ে যাওয়ার জন্য, প্রথম ফর লুকের সারি নম্বরটি 1 এর পরিবর্তে 2 থেকে শুরু হওয়া দরকার। এর মানে আপনি যখন সেল মান লোড করছেন তখন আপনাকে অ্যারের সারি মানের জন্য 1 বিয়োগ করতে হবে সেল(i, j) ব্যবহার করে অ্যারের মধ্যে।
আপনার VBA অ্যারে স্ক্রিপ্ট কোথায় ঢোকাবেন
এক্সেলে একটি VBA স্ক্রিপ্ট প্রোগ্রাম স্থাপন করতে, আপনাকে VBA সম্পাদক ব্যবহার করতে হবে। আপনি ডেভেলপার নির্বাচন করে এটি অ্যাক্সেস করতে পারেন৷ মেনু এবং কোড দেখুন নির্বাচন করা রিবনের নিয়ন্ত্রণ বিভাগে।
আপনি যদি মেনুতে বিকাশকারী দেখতে না পান তবে আপনাকে এটি যোগ করতে হবে। এটি করতে, ফাইল নির্বাচন করুন৷ এবং বিকল্প এক্সেল অপশন উইন্ডো খুলতে।
ড্রপডাউন থেকে সমস্ত কমান্ড এ চয়ন কমান্ড পরিবর্তন করুন . বিকাশকারী নির্বাচন করুন৷ বাম মেনু থেকে এবং যোগ করুন নির্বাচন করুন৷ ডানদিকে ফলকে সরানোর জন্য বোতাম। এটি সক্রিয় করতে চেকবক্স নির্বাচন করুন এবং ঠিক আছে নির্বাচন করুন৷ শেষ করতে।
যখন কোড এডিটর উইন্ডো খোলে, নিশ্চিত করুন যে শীটটিতে আপনার ডেটা রয়েছে তা বাম ফলকে নির্বাচিত হয়েছে। ওয়ার্কশীট নির্বাচন করুন বাম ড্রপডাউনে এবং সক্রিয় করুন সঠিক ভাবে. এটি Worksheet_Activate() নামে একটি নতুন সাবরুটিন তৈরি করবে।
যখনই স্প্রেডশীট ফাইলটি খোলা হবে তখনই এই ফাংশনটি চলবে। এই সাবরুটিনের ভিতরের স্ক্রিপ্ট ফলকে কোডটি আটকান৷
৷এই স্ক্রিপ্টটি 12টি সারির মাধ্যমে কাজ করবে এবং কলাম 3 থেকে প্রতিনিধির নাম, কলাম 4 থেকে আইটেমটি এবং কলাম 7 থেকে মোট বিক্রয় লোড করবে৷
একবার উভয়ের জন্য লুপ শেষ হয়ে গেলে, দ্বিমাত্রিক অ্যারে arrMyArray-এ মূল শীট থেকে আপনার নির্দিষ্ট করা সমস্ত ডেটা থাকে।
এক্সেল VBA-তে অ্যারে ম্যানিপুলেট করা
ধরা যাক আপনি সমস্ত চূড়ান্ত বিক্রয় মূল্যে 5% বিক্রয় কর প্রয়োগ করতে চান এবং তারপরে সমস্ত ডেটা একটি নতুন শীটে লিখতে চান৷
আপনি একটি নতুন শীটে ফলাফল লিখতে কমান্ড সহ প্রথমটির পরে অন্য একটি লুপ যোগ করে এটি করতে পারেন৷
For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k
এটি করের পরিমাণের জন্য মোট 5% দ্বারা গুণিত একটি অতিরিক্ত সারি সহ পত্রক2-এ সমগ্র অ্যারেটিকে "আনলোড" করবে৷
ফলস্বরূপ শীট এই মত দেখাবে.
আপনি দেখতে পাচ্ছেন, এক্সেলের ভিবিএ অ্যারেগুলি অন্য যে কোনও এক্সেল কৌশলের মতোই অত্যন্ত দরকারী এবং বহুমুখী।
উপরের উদাহরণটি একটি অ্যারের জন্য একটি খুব সহজ ব্যবহার। আপনি অনেক বড় অ্যারে তৈরি করতে পারেন এবং আপনার সঞ্চয় করা ডেটার বিপরীতে বাছাই, গড় বা অন্যান্য অনেক ফাংশন সম্পাদন করতে পারেন৷
আপনি যদি সত্যিকারের সৃজনশীল হতে চান, তাহলে আপনি দুটি অ্যারে তৈরি করতে পারেন যেখানে দুটি ভিন্ন শীট থেকে সেলের একটি পরিসীমা রয়েছে এবং প্রতিটি অ্যারের উপাদানগুলির মধ্যে গণনা সম্পাদন করতে পারেন৷
অ্যাপ্লিকেশনগুলি শুধুমাত্র আপনার কল্পনা দ্বারা সীমাবদ্ধ৷
৷