একজন অফিস কলিগ জানতে চাইলেন একটা এসি’র মান্থলি বিল কেমন আসতে পারে?
বললাম: ওয়াট অনুযায়ী একটা এসি’র জন্য আলাদা এক্সাক্টলি কত আসতে পারে তা বলা কঠিন, কারন এসি’র ব্যবহৃত কারেন্ট অন্যান্য ডিভাইসের ব্যবহৃত কারেন্টের সাথে মিক্সড হয়ে আসবে, আর ব্যবহৃত ইউনিট সংখার উপর নির্ভর করে বিল রেইট পরিবর্তন হয়।
তবে কেবল এসি’ই চলবে ধরে নিয়ে এসি বাবদ কত বিল আসতে পারে তার সাধারন একটা ধারনা পেতে পারি।
সেই ভেবে এক্সেলে একটা হিসাব দাড় কারালাম, পরক্ষনে তিনি এক্সেলে তা যেভাবে করলাম তা জানতেই বেশি আগ্রহী হয়ে উঠলেন!
তাই ওনাকে বোঝাতে গিয়ে ভাবলাম তা আমি আমার ব্লগে শেয়ার করতে পারি! কেউ প্রয়োজন মনে করলে শিখতে পারে।
এই পর্বটি তাদের জন্য যারা এক্সেল একদমই পারেন না বা কখনো চেষ্ট করে দেখা হয়নি তাদের জন্য। যারা বেসিক জানেন তাদের জন্য কাজে নাও লাগতে পারে।
চলুন শুরু করা যাক এক্সেলের অতি সংক্ষিপ্ত ‘মনগড়া’ মাহাত্ন দিয়ে।
(মনগড়া বললাম আমি আমার ভাষায় লিখেছি, গুগল সার্চে ডেফিনেশন অন্যরকম পেতে পারেন)
এক্সেল একটি এপ্লিকেশন সফটওয়্যার যা দিয়ে সহজ থেকে শুরু করে অনেক জটিল হিসাব নিকাশ ডকুমেন্ট আকারে তৈরী করা যায়। যেখানে ক্যালকুলেশনগুলো ভ্যালু চেইঞ্জের সাথে সাথে হয়ে যাবে।
খুব হালকাভাবে এক্সেল উইন্ডোর পরিচিতি। (উইন্ডো পরিচিতি সবটা দেখাবো না, সবটা দেখাতে গেলে আপনার আমার কারওই হয়তো ধৈর্য থাকবে না । তবে ধাপে ধাপে চলে আসবে।)
নিচের ছবিটি খেয়াল করুন।
(ছবি: ১)
ছবিটিতে চিকন ঘর বা গ্রিড। এখানে কিছু ঘরই স্থান পেয়েছে, তবে প্রকৃতপক্ষে এই ঘরের সংখ্যা (এক্সেল ২০১৭ তে) 1,048,576 X 16,384 = 17,179,869,184 টি।
শুধু তাই নয়, একই ফাইলে আপনি এরকম 255 টি Sheet ব্যবহার করতে পারেন, তার মানে উপরে গুন করে প্রাপ্ত ফলাফলকে আপনি 255 দিয়ে গুন করলে পাবেন 4,380,866,641,920। খুব বেশি না, চার লক্ষ আটত্রিশ হাজার কোটি’র চেয়ে কিছু বেশি ঘর।
(ছবি: ২)
লাল বৃত্তের মাঝের (+) চিহ্ন ব্যবহার করে প্রয়োজনে নতুন Sheet নিতে পারেন।
যাই হোক, আমাদের অত ঘর নিয়ে ভাবতে হবে না, আপাতত ঘরের যে অভাব হবে না, ততটুকু নিশ্চিত থাকতে পারি।
এই ঘরগুলোর একটা নাম আছে, যাকে আমরা Cell বলি।
এই ঘরগুলোর প্রত্যেকটার আলাদা পরিচয় বা এড্রেস আছে, তা নিয়ে একটু দেখে আসি।
নিচের ছবিটি দেখুন।
(ছবি: ৩)
এখানে নীল বৃত্তের ভেতর নাম্বারগুলো দেখুন, এগুলোকে বলে Row নাম্বার।
এখানে 1,048,576 টি রো আছে।
এবার কালো বৃত্তের A B C D… এসবের দিকে দেখুন, এগুলোকে বলে Column.
এখানে A থেকে শুরু করে XFD পর্যন্ত সর্বমোট 16,384’টি Column আছে।
এবার লাল বৃত্তের দিকে খেয়াল করুন, তাহলে লজিক্যালি এর এড্রেস কি হতে পারে?
কলামের নাম+রো এর সংখ্যা!
মানে বৃত্তটি যেই সেলকে ইন্ডিকেট করছে, তা B কলামের, এবং একই সাথে তার রো নাম্বার 4।
সুতরং এই সেলটির বা ঘরটির এড্রেস B4!
এবার মেজেন্টা কালারের ঘরটির দিকে দেখুন, আগের যুক্তি অনুসারে এই সেল বা ঘরটির এড্রেস কি হতে পারে? নিজেই ভেবে দেখুন।
.
.
.
D7, ঠিক???
আমরা চাইলে কিছু সেল বা ঘরকে একসাথে করে ফেলতে পারি, যাকে Merge বলে।
সে ক্ষেত্রে ওই ঘরটির এড্রেস হবে তার সর্ব বাম কলাম+উপরের কলামের নাম্বারে।
নিচের ছবিটি দেখুন।
(ছবি: ৪)
এক্ষেত্রে বড় সেল বা ঘরটির এড্রেস হবে B2।
এই প্রত্যেকটা সেলে আমরা যা ইচ্ছা লিখতে পারি।
যেমন: একে৪৭, Jupiter, Earth, 125, 12.2 কিংবা যে কোন কিছু।
(যদি লিখা লেংথে বড় হয়, পরের সেল খালি থাকলে প্রিভিউতে তা পরের সেলের উপর চলে যেতে পারে, তবে প্রকৃতপক্ষে পরের সেলটি খালি’ই থাকবে।}
তবে, সাধারনত যদি আমরা কোন Cell এর লিখা “=” চিহ্ন দিয়ে শুরু করি, তবে তা আর সাধারন থাকবে না (সাধারনত)।
এ বিষয়ে আমরা পরে কাজ করবো।
তার আগে লিখার বিভিন্ন টাইপ নিয়ে কথা বলে নেয়া দরকার, যাকে আমরা Data Type বলতে পারি।
কম্পিউটার প্রোগ্রামিং এ এই Data Type মূলত ৫টি। (ইন্টিজার, বুলিয়ান, ক্যারেক্টার, ফ্লোটিং পয়েন্ট নাম্বারস ও স্ট্রিং)
কিন্তু আমরা সেই জটিলতায় যাবো না।
এক্সেলের সাপেক্ষে সাধারনত আমরা বলতে পারি তা মূলত ২ধরনের।
১। নিউমেরিক বা সংখ্যা। যেমন: ১, ১২.৫, ১০০০০০, ৪১৫২৩৫৬.৫৭ ইত্যাদি।
২। স্ট্রিং বা টেক্সট। যেমন: “এইটা একটা সেম্পল লিখা”, “আম”, “জাম”, “সামু”, “একে৪৭” ইত্যাদি।
এখন উপরের নিউমেরিক সংখ্যাও কিন্তু নিচের স্ট্রিং টাইপের ডেটা হতে পারে। যেমন: “৪৭”।
এখানে যদি ৪৭ নিউমেরিক না হয়ে স্ট্রিং বা টেক্সট হয়, তবে তার উপর ম্যাথমেটিক্যাল অপারেশন চালানো সম্ভব নয়। যেমন তখন আমরা ৪৭+১ করতে পারবো না।
তখন এটা “৪৭+১” অর্থাৎ আরেকটা টেক্সট বা স্ট্রিং আকারেই থাকবে, এটা ৪৮ হবে না।
কিন্তু যদি তা নিউমেরিক হয়, তখন কিন্তু তা ৪৭১=৪৮।
এখন যদি আমরা কোন সেলে আমি লিখি “বাংলাদেশ”, তখন তা স্ট্রিং ডেটা টাইপের হবে।
আবার যদি একই সেলে লিখি ৬৫, তখন তা নাম্বার বা নিউমেরিক হবে।
কিন্তু যদি লিখি “৬৫”, বা ak47, কিংবা 800D, তখন কিন্তু তা আর নিউমেরিক থাকে না, তখন তা স্ট্রিং হয়ে যায়।
নিচের ছবিটি দেখুন।
(ছবি ৫)
এখানে নীল বৃত্তের ভেতরের লিখাগুলো নিউমেরিক, যার উপর ম্যাথমেটিক্যাল অপরেশন চালানো সম্ভব। যেমন 77+59 বা 77÷55 ইত্যাদি।
কিন্তু লাল বৃত্তের ভেতরের লিখাগুলো নিউমেরিক নয়, এদের উপর আমরা ম্যাথমেটিক্যাল অপারেশন চালাতে পারবো না। যেমন: a55÷7D, এক্ষেত্রে তা একটা ভুল, মানে আপনি কোন রেজাল্ট পাবেন না।
প্রোগ্রামিং এ আপনি a55+7D লিখলে পাবেন a557D, অর্থাৎ দুটু শব্দ জোড়া লেগে যাবে। যেমন: “চেয়ার”+”টেবিল” এর রেজাল্টে পাবেন “চেয়ারটেবিল”।
কিন্তু এক্সেলে এই অপারেশন এভাবে যোগ হয় না।
(এক্সেলে =”a55”&”7D” লিখতে পারেন, সে ক্ষেত্রে রেজাল্ট পাবেন a557D)
যাই হোক, চলুন এবার আগে বলে আসা “=” চিহ্নের ব্যপারটা একটু বুঝতে চেষ্টা করি।
কোন Cell এ “=” দিয়ে শুরু করা মানে আপনি এক্সেল ফরমুলা লিখছেন।
অর্থাৎ ওই Cell এর লিখা শেষ হলেই সেই সেলের রেজাল এক্সেল কন্ট্রোল করবে।
যেমন: আপনি যদি লিখেন 45+59, এক্সেল কিছুই করবে না, ওটা কেবলই একটা স্ট্রিং টাইপ সেল হবে, যেহেতু “+” চিহ্নটা নিউমেরিক নয় (সিম্বল)।
কিন্তু আপনি যদি লিখেন: =45+59, সেই সেল থেকে বের হয়ে গেলে তার ভ্যালু হবে 104, অর্থাৎ এক্সেল ক্যালকুলেশনটা করে ফেলবে।
নিচের ছবিটি দেখুন।
(ছবি ৬)
ছবিটিতে আমরা দেখতে পাচ্ছি B3 তে লিখা আছে 77 এবং B4 এ লিখা আছে 59।
এখন আমরা চাই B3 এবং B4 Cell দুটুতো 77 এবং 59 এর বদলে যাই লিখা থাকুক না কেন-
১। B5 এ তাদের যোগফল আসবে।
২। B6 এ তাদের বিয়োগফল আসবে।
৩। B7 এ তাদের ভাগফল আসবে।
৪। এবং B8 সেল এ তাদের গুনফল আসবে।
১। আমরা চাচ্ছি B3 এবং B4 যোগফলটা B5 এ আসবে। সুতরাং আমরা B5 এ লিখবো: =B3+B4 তারপর এন্টার দিবো। সব ঠিক থাকলে B3 এবং B4 এর যোগফল হিসেবে এই সেল এ 104 পাবো।
২। একইভাবে B6 এ লিখবো: =B3-B4, ফলাফল পাবো ওই দুই সংখ্যার বিয়োগফল।
৩। B7 এ লিখবো =B3/B4
৪। এবং B8 এ লিখবো =B3*B4
(ছবি ৭)
আমরা তার ফলাফল দেখতে পাচ্ছি।
এ অবস্থায় আমরা যদি B3 এবং B4 এর ভ্যালু চেইঞ্জ করি, তবে এর ফলাফলগুলোও অটোমেটিক একসাথে চেইঞ্জ হয়ে যাবে, অর্থাৎ নতুন করে কোন কিছু লিখার দরকার পরবে না।
এবার কল্পনা করুন, আমরা অনেক হিসাবের এরকম লজিক্যাল অবস্থা তৈরী করে রাখতে পারি, যেখানে ইনপুট চেইঞ্জ করার সাথে সাথে অনেক রেজাল্ট নিমিশেই পেয়ে যেতে পারি।
এবার একটু জটিলতায় যাই।
উপরে যোগ, বিয়োগ, গুন এবং ভাগে কোন সমস্যা থাকার কথা নয়।
কিন্তু উপরের ওই ক্যালকুলেশনে একটা সমস্যা দেখা দিতে পারে, তা কি খেয়াল করেছেন?
আমি ভাগের কথা বলছি!
আমরা B7 এ লিখেছি =B3/B4।
কিন্তু কি হবে যদি B4 এর ভ্যালু আমরা 0 দেই???
তবে B7 এর রেজাল্ট কি 0 দ্বারা বিভাজ্য করতে চাওয়ার দোষে ভুল কিছু আসবে না?
নিচের ছবিটি খেয়াল করুন।
(ছবি ৮)
এখানে দেখতে পাচ্ছি ভাগের রেজাল্ট টা অপ্রত্যাশিত কিছু। মানে Divide by Zero Error
চলুন দেখা যাক এই সমস্যা থেকে আমরা কিভাবে উত্তরন পেতে পারি।
এই সমস্যা থেকে উত্তরন পেতে B7 এর ক্যালকুলেশনটা আমরা একটা ‘যদি’র ভেতর ফেলবো।
অর্থাৎ যদি কোন একটা ঘটনা সত্য বা মিথ্যা হয়, তবে রেজাল্ট অন্য কিছু হবে।
এক্ষেত্রে আমরা চেক করবো- যদি ভাজ্য বা ভাজক কেউ 0 হয়, তবে যেন রেজাল্ট 0 ই হয়।
তাই B7 এ আমরা লিখবো: =IF(OR(B3=0,B4=0),0, B3/B4)
এখানে IF() একটা ফাংশন, যার গঠন হলো: IF(case, true_value, false_value)।
অর্থাৎ কন্ডিশনের যায়গায় যা লিখা আছে, তা যদি সত্য হয় তবে true_value এর যায়গায় যা লিখা আছে তা হবে ওই সেল এর রেজাল্ট ভ্যালু, আর যদি কন্ডশনটি মিথ্যা হয়, তবে false_value এর যায়গায় যাই লিখা থাকবে তাই হবে ওই সেল এর রেজাল্ট ভ্যালু।
এখানে কেইসের যায়গায় আমি আরেকটি ফাংশন কল করেছি, যা হলো OR() ফাংশন।
এই ফাংশনটির গঠন হলো- OR(case1, case2, case2……)
এই ফাংশনটির ধর্ম হলো এর ভেতরের কোন একটা কেইসও যদি সত্য হয়, তবে সে সত্য রিটার্ন করে।
এখন তার ভেতর লিখেছি OR(B3=0,B4=0), মানে যদি B3 এবং B4 এর কোন একটা 0 হয়, তবে তা সত্য রিটার্ন করবে।
এবার আবার দেখুন =IF( OR(B3=0,B4=0) , 0 , B3/B4) কে।
যদি প্রথম অংশ সত্য হয়, তবে 0 রিটার্ন করবে, আর মিথ্যা হলে B3/B4 এর রেজাল্ট রিটার্ন করবে।
ক্লিয়ার???
না হলেও সমস্যা নাই।
পরের পর্বে আমরা ফাংশন নিয়ে আরও ডিটেইলস জানার চেষ্টা করবো।
আজকে এ পর্যন্তই থাক।
আমি যে এক্সেল ফাইলটি নিয়ে এসব দেখিয়েছি, দেয়া লিংক থেকে ফাইলটি ডাউনলোড করে দেখতে পারেন।
ফাইলটি ডাউনলোড করতে এখানে ক্লিক করুন।
B3 এবং B4 এর ভ্যালু চেইঞ্জ করে এন্টার দিয়ে দেখতে পারে কি ঘটে।
B5, B6, B7, B8 এর ফরমুলা কি লিখা আছে তা ই সেলের উপর ডাবল ক্লিক করে দেখতে পারেন।
এছাড়াও ওই সেলগুলোর উপর সিঙ্গেল ক্লিক করলে উপরে ফর্মুলা বারে তা দেখতে পারেন।
(ছবি ৯)
এসি’র বিল ক্যালকুলেশন এক্সেলটা আমরা পরের পর্বেই করে ফেলবো ইনশাল্লাহ্।