কম্পিউটার টিউটোরিয়াল

এক্সেলে VBA অ্যারে কী এবং কীভাবে প্রোগ্রাম করবেন

VBA অনেক বছর ধরে মাইক্রোসফট অফিস স্যুটের অংশ। এটি পূর্ণ VB অ্যাপ্লিকেশনের সমস্ত কার্যকারিতা এবং শক্তি না থাকলেও, VBA অফিস ব্যবহারকারীদের অফিস প্রোডাক্টগুলোর ইন্টিগ্রেশন এবং সেগুলোতে আপনি যা কাজ করেন সেটি অটোমেট করার নমনীয়তা দেয়।

VBA-এ উপলব্ধ সবচেয়ে শক্তিশালী টুলগুলোর মধ্যে একটি হলো ডেটার একটি পুরো রেঞ্জকে একটি একক ভেরিয়েবলে লোড করার ক্ষমতা যাকে অ্যারে বলা হয়। এইভাবে ডেটা লোড করলে, আপনি সেই ডেটা রেঞ্জটিকে নানাবিধভাবে ম্যানিপুলেট বা ক্যালকুলেশন করতে পারেন।

তো VBA অ্যারে কী? এই আর্টিকেলে আমরা সেই প্রশ্নের উত্তর দিব, এবং আপনার নিজস্ব VBA স্ক্রিপ্টে এর ব্যবহার দেখাব।

VBA অ্যারে কী?

এক্সেলে VBA অ্যারে ব্যবহার করা খুব সহজ, কিন্তু অ্যারে কনসেপ্ট বুঝতে কিছুটা জটিল হতে পারে আপনি যদি কখনো ব্যবহার না করে থাকেন।

অ্যারেটিকে একটি বক্স হিসেবে চিন্তা করুন যার ভিতরে সেকশন আছে। একটি এক-মাত্রিক (one-dimensional) অ্যারে হলো এক লাইনের সেকশনযুক্ত একটি বক্স। একটি দ্বি-মাত্রিক (two-dimensional) অ্যারে হলো দুটি লাইনের সেকশনযুক্ত একটি বক্স।

আপনি এই "বক্স"-এর প্রতিটি সেকশনে আপনার পছন্দমত ক্রমে ডেটা রাখতে পারেন।

আপনার VBA স্ক্রিপ্টের শুরুতে, আপনাকে এই "বক্স"-কে ডিফাইন করে আপনার VBA অ্যারে ডিফাইন করতে হবে। তাই একটি সেট ডেটা ধারণ করতে পারে এমন অ্যারে (এক-মাত্রিক অ্যারে) তৈরি করতে, আপনি নিচের লাইনটি লিখবেন।

Dim arrMyArray(1 To 6) As String

বादে আপনার প্রোগ্রামে, আপনি প্যারেনথেসিসের ভিতরে সেকশন রেফারেন্স করে এই অ্যারেকের যেকোনো সেকশনে ডেটা রাখতে পারেন।

arrMyArray(1) = "Ryan Dube"

আপনি নিচের লাইন ব্যবহার করে একটি দ্বি-মাত্রিক অ্যারে তৈরি করতে পারেন।

Dim arrMyArray(1 To 6, 1 To 2) As Integer

প্রথম নম্বরটি রিপ্রেজেন্ট করে রো, এবং দ্বিতীয়টি কলাম। তাই উপরের অ্যারে ৬ রো এবং ২ কলামের একটি রেঞ্জ ধারণ করতে পারে।

আপনি এই অ্যারেকের যেকোনো এলিমেন্টে নিচের মতো ডেটা লোড করতে পারেন।

arrMyArray(1,2) = 3

এটি সেল B1-এ ৩ লোড করবে।

একটি অ্যারে যেকোনো ধরনের ডেটা ধারণ করতে পারে যেন একটি রেগুলার ভেরিয়েবল, যেমন স্ট্রিং, বুলিয়ান, ইন্টিজার, ফ্লোট এবং আরও অনেক কিছু।

প্যারেনথেসিসের ভিতরের নম্বরটিও একটি ভেরিয়েবল হতে পারে। প্রোগ্রামাররা সাধারণত একটি For Loop ব্যবহার করে অ্যারেকের সব সেকশন গণনা করে এবং স্প্রেডশীটের ডেটা সেলগুলো অ্যারেতে লোড করে। আপনি এটি এই আর্টিকেলে পরে দেখবেন।

এক্সেলে VBA অ্যারে কীভাবে প্রোগ্রাম করবেন

আসুন একটি সহজ প্রোগ্রাম দেখি যেখানে আপনি একটি স্প্রেডশীট থেকে ইনফরমেশন একটি মাল্টিডাইমেনশনাল অ্যারেতে লোড করতে চাইতে পারেন।

উদাহরণস্বরূপ, একটি প্রোডাক্ট সেলস স্প্রেডশীট দেখি, যেখানে আপনি সেলস রেপের নাম, আইটেম, এবং টোটাল সেল স্প্রেডশীট থেকে বের করতে চান।

লক্ষ্য করুন যে VBA-এ রো বা কলাম রেফারেন্স করার সময়, আপনি উপরের বাম কোণ থেকে ১ দিয়ে গণনা শুরু করেন। তাই রেপ কলামটি ৩, আইটেম কলামটি ৪, এবং টোটাল কলামটি ৭।

সর্বোচ্চ ১১ রোতে এই তিনটি কলাম লোড করতে, আপনাকে নিচের স্ক্রিপ্ট লিখতে হবে।

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

আপনি লক্ষ্য করবেন যে হেডার রো স্কিপ করার জন্য, প্রথম For লুপে রো নম্বর ২ থেকে শুরু করতে হবে ১-এর বদলে। এর মানে আপনাকে ১ বিয়োগ করতে হবে অ্যারে রো ভ্যালুতে যখন আপনি Cells(i, j).Value ব্যবহার করে সেল ভ্যালু অ্যারেতে লোড করছেন।

আপনার VBA অ্যারে স্ক্রিপ্ট কোথায় ইনসার্ট করবেন

এক্সেলে একটি VBA স্ক্রিপ্ট প্রোগ্রাম করতে, আপনাকে VBA এডিটর ব্যবহার করতে হবে। আপনি এটি এক্সেস করতে পারেন Developer মেনু নির্বাচন করে এবং রিবনের Controls সেকশনে View Code নির্বাচন করে।

যদি আপনি মেনুতে Developer না দেখেন, তবে আপনাকে এটি যোগ করতে হবে। এটি করতে, File এবং Options নির্বাচন করুন এক্সেল অপশনস উইন্ডো খুলতে।

Choose commands from ড্রপডাউনকে All Commands-এ পরিবর্তন করুন। বাম মেনু থেকে Developer নির্বাচন করুন এবং Add বাটন চাপুন ডান প্যানে মুভ করতে। চেকবক্স সিলেক্ট করুন এটি ইনেবল করতে এবং OK নির্বাচন করুন ফিনিশ করতে।

যখন কোড এডিটর উইন্ডো খুলবে, নিশ্চিত করুন যে বাম প্যানে আপনার ডেটা থাকা শিটটি নির্বাচিত আছে। বাম ড্রপডাউনে Worksheet এবং ডানে Activate নির্বাচন করুন। এটি একটি নতুন সাবরুটিন তৈরি করবে যেটি Worksheet_Activate() নামে।

এই ফাংশনটি যখনই স্প্রেডশীট ফাইলটি খোলা হবে তখনই চলবে। এই সাবরুটিনের ভিতরে স্ক্রিপ্ট পেনে কোডটি পেস্ট করুন।

এই স্ক্রিপ্ট ১২ রো দিয়ে কাজ করবে এবং রেপের নাম কলাম ৩ থেকে, আইটেম কলাম ৪ থেকে, এবং টোটাল সেল কলাম ৭ থেকে লোড করবে।

দুটো For লুপ ফিনিশ হলে, দ্বি-মাত্রিক অ্যারে arrMyArray মূল শিট থেকে আপনার নির্দিষ্ট করা সব ডেটা ধারণ করবে।

এক্সেল VBA-এ অ্যারে ম্যানিপুলেট করা

ধরুন, আপনি সকল ফাইনাল সেল প্রাইসে ৫% সেলস ট্যাক্স অ্যাপ্লাই করতে চান, এবং তারপর সকল ডেটা একটি নতুন শিটে লিখতে চান।

আপনি এটি করতে পারেন প্রথম লুপের পর আরেকটি For Loop যোগ করে, নতুন শিটে রেজাল্ট লিখার কমান্ড দিয়ে।

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

এটি পুরো অ্যারেকে Sheet2-এ "আনলোড" করবে, ট্যাক্স পরিমাণের জন্য টোটালকে ৫% দিয়ে গুণ করে একটি অতিরিক্ত রো সহ।

আপনি দেখতে পাচ্ছেন, এক্সেলে VBA অ্যারে অত্যন্ত উপকারী এবং যেকোনো অন্য এক্সেল ট্রিকের মতো বহুমুখী।

উপরের উদাহরণটি অ্যারের খুব সহজ একটি ব্যবহার। আপনি অনেক বড় অ্যারে তৈরি করতে পারেন এবং সেগুলোতে সংরক্ষিত ডেটার ওপর সর্টিং, অ্যাভেরেজিং, বা আরও অনেক ফাংশন পারফর্ম করতে পারেন।

আপনি যদি বাস্তবে সৃজনশীল হতে চান, তবে আপনি দুটি অ্যারে তৈরি করতে পারেন যাতে দুটি ভিন্ন শিট থেকে সেলের একটি রেঞ্জ থাকে, এবং দুটি অ্যারেকের এলিমেন্টগুলোর মধ্যে ক্যালকুলেশন পারফর্ম করতে পারেন।

অনুষঙ্গিক.APPLICATIONS কেবল আপনার কল্পনার দ্বারা সীমাবদ্ধ।

  1. ম্যাকওএস-এ কিলগার (Keyloggers): সেগুলো কী, কীভাবে খুঁজে বের করবেন ও নিরাপদে মুছে ফেলবেন

  2. এক্সেলে ডেটা রেঞ্জ ক্যালকুলেট করার কুইক গাইড

  3. BIOS কী এবং কেন আপডেট করবেন: পিসি ফার্মওয়্যার আপডেটের সম্পূর্ণ গাইড

  4. এক্সেল ভিবিএ মাস্টার করুন: সেল লক ও আনলক করুন দক্ষতার সাথে ডেটা নিরাপত্তার জন্য