স্কুলের ক্লাস রুটিন তৈরি করা যে কতটা ধৈর্যের কাজ, তা কেবল একজন শিক্ষকই জানেন। বিশেষ করে যখন স্কুল বড় হয় এবং অনেকগুলো সেকশন বা ইউনিট (যেমন: V A+B, V C+D) থাকে, তখন একই সময়ে শিক্ষক মিলে যাওয়া বা কার কয়টি ক্লাস হলো তা হিসাব রাখা অসম্ভব হয়ে দাঁড়ায়।
আপনার এই কঠিন কাজটিকে সহজ করতে আজ আমি একটি স্মার্ট এক্সেল অটোমেশন টিউটোরিয়াল শেয়ার করছি। এটি অনুসরণ করলে এক্সেল নিজেই আপনাকে বলে দেবে কোন টিচারের ক্লাস বাকি আছে আর কোথায় ভুল হচ্ছে।
পোস্ট টাইটেল: বড় স্কুলের নির্ভুল ক্লাস রুটিন তৈরি করুন সহজেই: একটি কমপ্লিট এক্সেল গাইড
রুটিন তৈরির সময় আমাদের প্রধান চ্যালেঞ্জ দুটি: ১. একজন শিক্ষক সপ্তাহে তার বরাদ্দকৃত ক্লাসের (যেমন ১৬ বা ২১টি) বেশি নিচ্ছেন কি না। ২. একই পিরিয়ডে একজন শিক্ষক ভুল করে দুটি আলাদা ক্লাসে পড়ে যাচ্ছেন কি না।
নিচে ধাপে ধাপে এর সমাধান দেওয়া হলো:
ধাপ ১: "Teacher_List" বা মাস্টার ডাটাবেজ তৈরি
প্রথমে একটি আলাদা শিটে সব শিক্ষকদের নামের তালিকা তৈরি করুন। এটি হবে আপনার কন্ট্রোল প্যানেল। এখানে নিচের কলামগুলো রাখুন:
Teacher Name: শিক্ষকদের নাম。
Max Load: সপ্তাহে তিনি সর্বোচ্চ কয়টি ক্লাস নেবেন (যেমন: ২১)。
Classes Done: এখানে আমরা মাস্টার ফর্মুলা ব্যবহার করব যা সব দিনের শিট থেকে ক্লাস গুনে আনবে。
মাস্টার ফর্মুলা (D2 সেলে বসান):
সোমবার থেকে শনিবার পর্যন্ত ৬ দিনের হিসাব রাখার জন্য এই শক্তিশালী ফর্মুলাটি ব্যবহার করুন:
=IFERROR(COUNTIF(Monday!$B$2:$Z$500, B2), 0) + IFERROR(COUNTIF(Tuesday!$B$2:$Z$500, B2), 0) + IFERROR(COUNTIF(Wednesday!$B$2:$Z$500, B2), 0) + IFERROR(COUNTIF(Thursday!$B$2:$Z$500, B2), 0) + IFERROR(COUNTIF(Friday!$B$2:$Z$500, B2), 0) + IFERROR(COUNTIF(Saturday!$B$2:$Z$500, B2), 0)。
কেন এই ফর্মুলা?
IFERRORব্যবহারের ফলে কোনো নির্দিষ্ট দিনের শিট খালি থাকলেও আপনার টোটাল হিসাবে কোনো ভুল (Error) দেখাবে না。
ধাপ ২: রুটিন শিট সাজানো (Day-wise Sheets)
প্রতিটি দিনের জন্য আলাদা ট্যাব বা শিট তৈরি করুন (Monday, Tuesday ইত্যাদি)。
ড্রপ-ডাউন মেনু: রুটিনে টিচারের নাম হাতে টাইপ করবেন না। এতে বানান ভুল হলে ফর্মুলা কাজ করবে না。 Data > Data Validation থেকে টিচারদের নামের লিস্ট সিলেক্ট করে ড্রপ-ডাউন তৈরি করে নিন。 এতে শুধু ক্লিক করেই নাম বসানো যাবে。
ইউনিট ম্যানেজমেন্ট: আপনার স্কুলের ইউনিট অনুযায়ী (যেমন: VII A+B) রো (Row) তৈরি করুন এবং পিরিয়ড অনুযায়ী কলাম সাজান。
ধাপ ৩: ভুল ধরার "স্মার্ট" উপায় (Error Prevention)
মানুষ হিসেবে আমাদের ভুল হওয়া স্বাভাবিক, কিন্তু এক্সেল সেই ভুলগুলো ধরে ফেলবে:
১. ডাবল বুকিং চেক: রুটিন শিটের যেকোনো একটি পিরিয়ডের কলাম সিলেক্ট করুন। এবার Conditional Formatting > Highlight Cells Rules > Duplicate Values সিলেক্ট করুন。 এখন একই সময়ে একজন শিক্ষককে দুটি ক্লাসে দিলে নাম লাল হয়ে যাবে。
২. ক্লাস লিমিট এলার্ট: Teacher_List শিটে গিয়ে 'Remaining' কলামে Conditional Formatting ব্যবহার করে Less Than 0 নিয়ম সেট করুন。 কোনো শিক্ষককে তার ক্ষমতার বেশি ক্লাস দিলে সাথে সাথে ঘরটি লাল হয়ে সতর্ক করবে。
Substitution Table
একজন শিক্ষক হঠাৎ অনুপস্থিত থাকলে দ্রুত বিকল্প শিক্ষক খুঁজে বের করার জন্য একটি Substitution Table বা বিকল্প শিক্ষক তালিকা অত্যন্ত জরুরি। নিচে এর গঠন এবং সেটআপ করার নিয়ম দেওয়া হলো:১. Substitution Table-এর ছক (Dashboard)
আপনার রুটিন শিটগুলোর পাশে বা নতুন একটি শিটে নিচের মতো একটি টেবিল তৈরি করুন। এটি সোমবার থেকে শনিবার যেকোনো দিনের জন্যই কাজ করবে।
|
Teacher Name (A) |
1st Period (B) |
2nd Period (C) |
3rd Period (D) |
4th Period (E) |
Status |
|
রহিম সাহেব |
=IF(COUNTIF(Monday!$B$2:$B$100, $A2)>0, "BUSY",
"FREE") |
=IF(COUNTIF(Monday!$C$2:$C$100, $A2)>0, "BUSY",
"FREE") |
... |
... |
8 Classes Left |
|
করিম সাহেব |
(টেনে নিচে নামিয়ে দিন) |
(টেনে নিচে নামিয়ে দিন) |
... |
... |
2 Classes Left |
২. ফর্মুলা ব্যবহারের নিয়ম
এই টেবিলটি মূলত আপনার রুটিন শিট থেকে তথ্য নিয়ে রিয়েল-টাইমে আপডেট হবে।
- 1st Period (B2 সেলে): =IF(COUNTIF(Monday!$B$2:$B$100, $A2)>0, "BUSY", "FREE")
এটি দেখবে সোমবারের ১ম পিরিয়ডে (B কলাম) ওই শিক্ষকের নাম আছে কি না। থাকলে "BUSY", না থাকলে "FREE"।
- 2nd Period (C2 সেলে): =IF(COUNTIF(Monday!$C$2:$C$100, $A2)>0, "BUSY", "FREE")
এখানে শুধু পিরিয়ডের কলামটি (C) পরিবর্তন হবে।
Status (F2 সেলে): এখানে আপনি আগের Teacher_List শিট থেকে 'Remaining Classes' এর লিঙ্ক দিয়ে দিতে পারেন। যাতে আপনি ফ্রি শিক্ষকদের মধ্যে থেকে তাকেই বেছে নেন যার ক্লাস এখনো অনেক বাকি আছে।
৩. কন্ডিশনাল ফরম্যাটিং (দৃষ্টি নন্দন করার জন্য)
আপনার টেবিলটি যাতে এক পলকেই পড়া যায়, সেজন্য এটি করুন: ১. পুরো টেবিলটি সিলেক্ট করুন। ২. Home > Conditional Formatting > Highlight Cells Rules > Text that Contains-এ যান। ৩. "FREE" লিখে সবুজ (Green) রঙ সিলেক্ট করুন। ৪. আবার একই ভাবে "BUSY" লিখে লাল (Red) রঙ সিলেক্ট করুন।
ফলাফল: এখন আপনার চোখের সামনে একটি রঙিন ড্যাশবোর্ড থাকবে যেখানে সবুজ ঘরগুলো মানেই হলো ওই শিক্ষক ওই সময়েSubstitution দেওয়ার জন্য এভেইলেবল।
৪. Substitution-এর জন্য বিশেষ টিপস
বিষয় ভিত্তিক ফিল্টার: আপনি চাইলে এই টেবিলের পাশে শিক্ষকের 'বিষয়' (Subject) কলামটিও রাখতে পারেন। এতে গণিত শিক্ষক না আসলে আপনি অন্য একজন 'ফ্রি' গণিত শিক্ষককেই ক্লাসে পাঠাতে পারবেন।
Daily Toggle: আপনি যদি চান এক টেবিল দিয়েই সব দিন দেখতে, তবে "Monday" লেখার জায়গায় একটি নির্দিষ্ট সেল রেফারেন্স দিতে পারেন (এটি কিছুটা অ্যাডভান্সড, প্রয়োজন হলে বলবেন আমি শিখিয়ে দেব)।
একটি প্রো-টিপ (Filter Function):
আপনার কাছে যদি লেটেস্ট এক্সেল থাকে, তবে নির্দিষ্ট একটি সেলে শুধু নিচের এই ফর্মুলাটি লিখলে ওই পিরিয়ডের সব ফ্রি টিচারের নাম একবারে চলে আসবে:
=FILTER(Teacher_List!A2:A50, COUNTIF(Monday!$B$2:$B$100, Teacher_List!A2:A50)=0)
এক টেবিল দিয়ে সপ্তাহের সব দিনের ফ্রি শিক্ষকদের তালিকা দেখার বিষয়টি খুবই চমৎকার একটি আইডিয়া। এর ফলে আপনাকে প্রতিদিনের জন্য আলাদা টেবিল তৈরি করতে হবে না; শুধু দিনের নাম পরিবর্তন করলেই পুরো তালিকা আপডেট হয়ে যাবে।
নিচে এটি করার পদ্ধতি ধাপে ধাপে দেওয়া হলো:
ধাপ ১: একটি 'ড্রপ-ডাউন' বা সিলেক্টর সেল তৈরি করুন
প্রথমে আপনার Substitution_Table শিটের যেকোনো একটি ফাঁকা সেলে (ধরা যাক H1 সেলে) সপ্তাহের দিনগুলোর একটি ড্রপ-ডাউন লিস্ট তৈরি করুন।
H1 সেলটি সিলেক্ট করুন।
Data > Data Validation > List-এ গিয়ে
Monday, Tuesday, Wednesday, Thursday, Friday, Saturdayলিখে দিন।এখন H1 সেলে ক্লিক করলে আপনি দিন সিলেক্ট করতে পারবেন।
ধাপ ২: 'INDIRECT' ফর্মুলা ব্যবহার করা
যেহেতু আমাদের শিটগুলোর নাম "Monday", "Tuesday" ইত্যাদি, তাই এক্সেলকে বোঝাতে হবে যে H1 সেলে যা লেখা আছে, সেই নামের শিট থেকেই ডাটা আনতে হবে। এর জন্য আমরা INDIRECT ফাংশন ব্যবহার করব।
আপনার Substitution টেবিলের ১ম পিরিয়ডের ঘরে (B2) এই ফর্মুলাটি লিখুন:
=IF(COUNTIF(INDIRECT($H$1&"!$B$2:$B$100"), $A2)>0, "BUSY", "FREE")
ফর্মুলাটির ব্যাখ্যা:
INDIRECT($H$1&"!$B$2:$B$100"): এটি অটোমেটিকভাবে আপনার সিলেক্ট করা দিনের শিটের (যেমন Monday) B কলামের রেঞ্জ তৈরি করে নেবে।$H$1: এটি সেই সেল যেখানে আপনি দিনের নাম সিলেক্ট করছেন। (ডলার সাইন ব্যবহার করা হয়েছে যাতে ফর্মুলা কপি করলেও এই সেলটি পরিবর্তন না হয়)।
ধাপ ৩: পিরিয়ড অনুযায়ী ফর্মুলা সেট করা
একইভাবে ২য় পিরিয়ডের জন্য (C2 সেলে) রেঞ্জটি পরিবর্তন করে দিন:
=IF(COUNTIF(INDIRECT($H$1&"!$C$2:$C$100"), $A2)>0, "BUSY", "FREE")
(এখানে শুধু কলামের নাম C হবে)
ধাপ ৪: সুবিধাগুলো কী কী?
১. এক ক্লিকে আপডেট: আপনি যখন H1 সেলে 'Tuesday' সিলেক্ট করবেন, পুরো টেবিলটি সাথে সাথে মঙ্গলবারের ফ্রি শিক্ষকদের তালিকা দেখাবে। ২. সময় সাশ্রয়: আপনাকে ৬ দিনের জন্য ৬টি আলাদা টেবিল ম্যানেজ করতে হবে না। ৩. ডাইনামিক কালার: আগের মতো Conditional Formatting ব্যবহার করলে দিনের নাম পরিবর্তনের সাথে সাথে লাল-সবুজ রঙগুলোও অটোমেটিক বদলে যাবে।
প্রো-টিপ (স্মার্ট সাবস্টিটিউশন):
টেবিলের একদম শেষে একটি "Classes Left" কলাম রাখতে পারেন যা সরাসরি Teacher_List শিট থেকে তথ্য আনবে:
=VLOOKUP(A2, Teacher_List!A:E, 5, FALSE)
উপকারিতা: যখন পিরিয়ড ২-এ দেখবেন ৩ জন শিক্ষক "FREE" আছেন, তখন আপনি তাকেই বেছে নিতে পারবেন যার "Classes Left" সংখ্যা বেশি। এতে কোনো শিক্ষকের ওপর বেশি চাপ পড়বে না।
বোনাস প্রো-টিপ (সবগুলোর জন্য ১টি ফর্মুলা):
আপনি যদি চান বারবার কলাম পরিবর্তন না করে একটি ফর্মুলাই টেনে সব ঘরে বসাতে, তবে নিচের এই "অ্যাডভান্সড" ফর্মুলাটি ব্যবহার করতে পারেন। এটি অটোমেটিকভাবে পিরিয়ড বুঝে কলাম পরিবর্তন করে নেবে:
=IF(COUNTIF(OFFSET(INDIRECT($H$1&"!$B$2:$B$100"), 0, COLUMN(A1)-1), $A2)>0, "BUSY", "FREE")
এই ফর্মুলাটির সুবিধা: আপনি এটি ১ম পিরিয়ডের ঘরে বসিয়ে ডানে এবং নিচে টেনে দিলেই সব পিরিয়ডের জন্য কাজ করবে। আপনাকে আর কষ্ট করে B, C, D পরিবর্তন করতে হবে না।
Download
শেষ কথা
এই সিস্টেমটি একবার সেট করে নিলে আপনার ঘণ্টার পর ঘণ্টা সময় বেঁচে যাবে। এটি বড় স্কুলের জটিল রুটিনকেও অনেক সহজ এবং স্বচ্ছ করে তোলে।


0 Comments