সরাসরি পর্বে যান
পর্ব ১১ · ৫৫-এর মধ্যে · মডিউল ২

Excel গভীরে — XLOOKUP, pivot table, chart আর data validation

Advanced Excel — XLOOKUP, Pivot Tables, Charts & Data Validation

Taught in Bangla, this lesson moves from cell-by-cell sums to querying whole tables. It covers structuring data as an Excel Table, lookups with VLOOKUP, XLOOKUP and INDEX/MATCH, SUMIFS and COUNTIFS, workday calculations with Bangladesh's Friday-Saturday weekend, text cleaning, dynamic arrays, Pivot Tables, choosing charts, conditional formatting, data validation and protection, Goal Seek, Power Query, spreadsheet limits and verifying AI-written formulas.

এই পর্বে যা শিখবেন

  • ডেটাকে সঠিক টেবিল আকারে সাজানো, Excel Table আর structured reference
  • VLOOKUP, XLOOKUP আর INDEX/MATCH দিয়ে দাম, নম্বর বা নাম খুঁজে আনা — আর কোন Excel-এ কোনটি পাওয়া যায়
  • SUMIFS/COUNTIFS, তারিখের হিসাব (বাংলাদেশের শুক্র-শনি ছুটি ধরে কর্মদিবস), লেখা পরিষ্কার করা আর dynamic array
  • Pivot Table, সঠিক chart বাছাই, conditional formatting আর data validation দিয়ে নির্ভরযোগ্য শিট বানানো
  • Goal Seek, Power Query, Google Sheets-এর বিকল্প, স্প্রেডশিটের সীমা — আর AI-এর লেখা সূত্র যাচাইয়ের নিয়ম

১ · হিসাব থেকে প্রশ্নে — ডেটা বড় হলে যা বদলায়

পর্ব ১০-এ আপনি সেল, সূত্র, relative আর absolute reference, আর SUM, IF, COUNTIF শিখেছেন। কয়েক ডজন সারির হিসাবের জন্য ওটুকুই যথেষ্ট। কিন্তু এবার একটি বাস্তব দৃশ্য ভাবুন।

মিরপুরের একটি মুদি-পাইকারি দোকান। মালিক জামাল সাহেব তিন মাস ধরে প্রতিটি বিক্রি Excel-এ লিখেছেন — তারিখ, জেলা (কোন জেলার দোকানে মাল গেল), পণ্যের কোড, পরিমাণ, টাকা। এখন সারি ৫০০টি। তিনি জানতে চান:

  • P103 কোডের পণ্যের দাম কত? (খুঁজে আনা)
  • খুলনায় মার্চ মাসে মোট কত টাকার বিক্রি হলো? (শর্তসাপেক্ষ সারাংশ)
  • কোন জেলায় কোন মাসে বিক্রি কেমন — এক নজরে একটি টেবিল? (Pivot Table)
  • বিক্রি বাড়ছে না কমছে? (chart)
  • কর্মচারী যেন “Dhaka”-র বদলে “Dahka” না লেখেন — তা কীভাবে নিশ্চিত করা যায়? (data validation)

এই প্রশ্নগুলোর কোনোটিই সেল ধরে ধরে হিসাব করে উত্তর দেওয়া বাস্তবসম্মত নয়। এখানে দৃষ্টিভঙ্গিটাই বদলাতে হয়: আপনি আর ক্যালকুলেটর চালাচ্ছেন না, পুরো টেবিলকে প্রশ্ন করছেন. অফিসের চাকরি, ব্যাংক, NGO-র মাঠপর্যায়ের রিপোর্ট, আর ফ্রিল্যান্সিংয়ের “data entry / Excel expert” কাজ — সবখানে এই স্তরটাই প্রত্যাশিত।

পরীক্ষার খাতা দেখা শেষে প্রধান শিক্ষকের কাছে ৫০০ ছাত্রের নম্বরের একটি তালিকা আছে। তিনি প্রতিটি খাতা আবার খুলে দেখেন না। তিনি প্রশ্ন করেন — “রোল ১০৩-এর গণিতে কত?”, “নবম শ্রেণির ক শাখায় কতজন ফেল?”, “কোন শাখার গড় সবচেয়ে ভালো?” তালিকাটি যদি পরিষ্কারভাবে সাজানো থাকে, প্রতিটি উত্তর এক মিনিটে আসে। এলোমেলো হলে, এক দিনেও আসে না। স্প্রেডশিটের উন্নত ফাংশনগুলো এই প্রশ্ন করার যন্ত্র — আর সাজানো টেবিল তার পূর্বশর্ত।

আগে টেবিল ঠিক করুন — চারটি নিয়ম

১. একটিই শিরোনাম-সারি

প্রথম সারিতে প্রতিটি কলামের নাম — Date, District, Code, Qty, Amount. ওপরে বড় করে দোকানের নাম লিখতে চাইলে আলাদা শিটে বা শিরোনামের ওপরে ফাঁকা সারি রেখে।

নাম ছোট, স্পষ্ট, একবারই

২. এক সারি = এক রেকর্ড

প্রতিটি বিক্রি একটি সারিতে। “জানুয়ারি”, “ফেব্রুয়ারি” আলাদা আলাদা কলাম বা শিটে নয় — মাস একটি কলামের মান।

লম্বা টেবিল, চওড়া নয়

৩. merge করা সেল নয়

দেখতে সুন্দর লাগলেও merge করা সেল সাজানো (sort), ফিল্টার আর Pivot Table ভেঙে দেয়। মাঝখানে বসাতে চাইলে Format Cells → Alignment → Center Across Selection.

ফাঁকা সারি-কলামও নয়

৪. এক কলামে এক ধরনের ডেটা

Amount কলামে শুধু সংখ্যা — “৫০০ টাকা” বা “বাকি” লেখা নয়। তারিখ আসল তারিখ হিসেবে, লেখা হিসেবে নয়। মন্তব্য দরকার হলে আলাদা Note কলাম।

সংখ্যা ডান দিকে সরে বসলে বুঝবেন সংখ্যা

Excel Table — Ctrl+T

টেবিলের যেকোনো সেলে ক্লিক করে Ctrl+T চাপুন (বা Insert → Table), “My table has headers”-এ টিক আছে কি না দেখে OK দিন। সাধারণ সেলের একটি এলাকা তখন হয়ে যায় Excel Table — একটি নামযুক্ত, নিজে নিজে বড় হওয়া টেবিল। Table Design ট্যাবে বাঁ দিকে এর নাম দিন, যেমন Sales.

  • নিজে নিজে বাড়ে: নিচে নতুন সারি লিখলেই সেটি টেবিলের অংশ হয়ে যায়; ওপরের সারির সূত্রও নিচে চলে আসে। যে chart বা Pivot Table এই টেবিল থেকে তৈরি, তারাও নতুন সারি দেখতে পায় (Pivot Table-এ শুধু Refresh লাগে)।
  • নামে ঠিকানা: =SUM(D2:D501)-এর বদলে লেখা যায় =SUM(Sales[Amount]). একে বলে structured reference. ৫০১ নম্বর সারির পর নতুন বিক্রি এলেও সূত্র বদলাতে হয় না — পর্ব ১০-এর “range ঠিক জায়গায় শেষ হলো কি না” দুশ্চিন্তাটাই চলে যায়।
  • একই সারির সেল: টেবিলের ভেতরে নতুন কলামে =[@Qty]*[@Price] লিখলে মানে দাঁড়ায় “এই সারির Qty গুণ এই সারির Price” — পড়তেও বোঝা যায়।
  • বিনা খরচে বাড়তি: শিরোনামে ফিল্টারের বোতাম, এক সারি পরপর রং, আর Table Design → Total Row দিলে শেষে যোগফলের সারি।

Google Sheets-এ একই ধারণা আছে: Format → Convert to table (২০২৪ সালে যুক্ত হয়েছে)। পুরোনো ফাইলে মানুষ সাধারণত পুরো কলাম ধরে লেখেন, যেমন A2:A.

২ · খুঁজে আনা — VLOOKUP, XLOOKUP আর INDEX/MATCH

দোকানের একটি শিটে পণ্যের তালিকা (Product, Code, Price), আরেকটি শিটে প্রতিদিনের বিক্রি — সেখানে শুধু কোড লেখা হয়। প্রতিটি বিক্রির সারিতে দামটা হাতে খুঁজে বসানো মানে ৫০০ বার চোখ বোলানো, আর ৫০০ বার ভুলের সুযোগ। এই কাজের নাম lookup — একটি চেনা মান (কোড, রোল, NID নম্বর) দিয়ে অন্য টেবিল থেকে মিলিয়ে তথ্য আনা। ট্রেনের টিকিটে PNR নম্বর দিলে যেমন যাত্রীর নাম আর আসন বেরিয়ে আসে, ঠিক তেমন।

তিনটি ফাংশনের গঠন

ফাংশনগঠনমনে রাখার কথা
VLOOKUP=VLOOKUP(কী খুঁজব, টেবিল, কত নম্বর কলাম, FALSE)খোঁজে টেবিলের প্রথম কলামে; ফল আনে ডানের কোনো কলাম থেকে। শেষে FALSE = হুবহু মিল।
XLOOKUP=XLOOKUP(কী খুঁজব, কোথায় খুঁজব, কোথা থেকে আনব, না পেলে কী)খোঁজার কলাম আর ফলের কলাম আলাদা করে দেন; ডিফল্টেই হুবহু মিল।
INDEX/MATCH=INDEX(ফলের কলাম, MATCH(কী খুঁজব, খোঁজার কলাম, 0))MATCH বের করে কত নম্বর সারিতে, INDEX সেই সারি থেকে মান আনে। প্রায় সব Excel-এ চলে।

একই প্রশ্ন — “P103-এর দাম কত?” — VLOOKUP আর XLOOKUP দিয়ে পাশাপাশি দেখুন। “পরে” চাপুন (দামগুলো কাল্পনিক):

Products শিটপ্রশ্ন: P103-এর দাম?
     A                 B       C
 1   Product           Code    Price
 2   Rice 5kg          P101    380
 3   Lentil 1kg        P102    135
 4   Soybean oil 1L    P103    190
 5   Sugar 1kg         P104    125
 6   Tea 400g          P105    210
VLOOKUPকলাম গুনতে হয়
=VLOOKUP("P103", B2:C6, 2, FALSE)

 টেবিল B2:C6 →  B = ১ নম্বর কলাম,  C = ২ নম্বর কলাম
 B কলামে খোঁজা: P101, P102, P103 ✔
 সেই সারির ২ নম্বর কলাম → 190
FALSE ভুলে গেলেনীরব ভুল
=VLOOKUP("P107", B2:C6, 2)      ← শেষের FALSE নেই

 P107 নামে কোনো পণ্যই নেই!
 তবু ফল আসে: 210   (P105-এর দাম)

=VLOOKUP("P107", B2:C6, 2, FALSE)  → #N/A  (সঠিক: পাওয়া যায়নি)
বাঁ দিকে খোঁজাকোড দিয়ে পণ্যের নাম
চাই: P103-এর Product (A কলাম — Code-এর বাঁয়ে)

=VLOOKUP("P103", B2:A6 ? ...)   ← সম্ভব নয়

=XLOOKUP("P103", B2:B6, A2:A6)
         খুঁজি B-তে → আনি A থেকে → Soybean oil 1L
XLOOKUPকলাম যোগ হলেও ঠিক থাকে
B আর C-র মাঝে নতুন কলাম "Unit" ঢোকানো হলো →
 Price এখন D কলামে

VLOOKUP("P103", B2:D6, 2, FALSE) → "bottle"  (ভুল কলাম!)
XLOOKUP("P103", B2:B6, D2:D6)     → 190  (Excel নিজে ঠিকানা বদলেছে)
XLOOKUP("P109", B2:B6, D2:D6, "পাওয়া যায়নি") → পাওয়া যায়নি
  1. প্রশ্ন। পণ্যের তালিকায় তিনটি কলাম। কোড জানা আছে — P103. আমাদের দরকার তার দাম, যা আছে C কলামে। লক্ষ করুন, কোডগুলো ছোট থেকে বড় ক্রমে সাজানো।
  2. VLOOKUP-এর পথ। টেবিল হিসেবে দিতে হয় এমন এলাকা, যার প্রথম কলামেই কোড আছে — তাই B2:C6 (A বাদ)। তারপর গুনতে হয়: ওই এলাকায় Price কত নম্বর কলাম? B = ১, C = ২. শেষে FALSE — হুবহু মিল চাই। ফল 190.
  3. সবচেয়ে বিপজ্জনক ভুল। শেষের FALSE বাদ দিলে VLOOKUP ধরে নেয় “কাছাকাছি মিল” (approximate match) — খোঁজে এমন সবচেয়ে বড় মান, যা চাওয়া মানের সমান বা ছোট। P107 নেই, তবু সে P105-এর দাম 210 ফেরত দেয় — কোনো ত্রুটির চিহ্ন ছাড়াই। কোড এলোমেলো ক্রমে থাকলে ফল আরও অনিশ্চিত। হুবহু মিলে না পেলে আসে #N/A — যা আসলে ভালো খবর, কারণ ভুলটা চোখে পড়ে।
  4. বাঁ দিকে খোঁজা। এবার কোড দিয়ে পণ্যের নাম চাই — কিন্তু নাম আছে কোডের বাঁ দিকে। VLOOKUP শুধু ডানে তাকাতে পারে; আগে কলাম সরাতে হতো। XLOOKUP-এ খোঁজার কলাম (B) আর ফলের কলাম (A) আলাদা করে বলা হয়, তাই দিক কোনো ব্যাপার না।
  5. কলাম ঢোকালে। কেউ মাঝে “Unit” কলাম ঢোকালেন। VLOOKUP-এর 2 একটি লেখা সংখ্যা — Excel সেটা বদলায় না, তাই এখন সে নতুন Unit কলাম থেকে মান আনছে। XLOOKUP-এর ফলের ঠিকানা একটি আসল range, তাই Excel নিজেই C থেকে D করে দেয়। চতুর্থ argument-এ “না পেলে কী দেখাব” বলে দেওয়া যায় — #N/A-এর বদলে পরিষ্কার বার্তা।

কোন Excel-এ কোনটি পাওয়া যায়

ফাংশনExcel 2016 / 2019Excel 2021, 2024, Microsoft 365, Excel for the webGoogle Sheets
VLOOKUP, INDEX/MATCHআছেআছেআছে
XLOOKUPনেই — #NAME? দেখাবেআছেআছে (২০২২ থেকে)
IFERROR / IFNAআছেআছেআছে

বাংলাদেশের অনেক অফিসে এখনো পুরোনো Excel চলে। আপনার ফাইল অন্যের কম্পিউটারে খুলবে কি না নিশ্চিত না হলে INDEX/MATCH নিরাপদ: =INDEX(C2:C6, MATCH("P103", B2:B6, 0)) — এখানেও ফলের কলাম আলাদা, তাই বাঁ দিকে খোঁজা আর কলাম ঢোকানোর সমস্যা নেই। MATCH-এর শেষের 0 মানে হুবহু মিল — VLOOKUP-এর FALSE-এর মতোই জরুরি।

ত্রুটি সামলানো — IFERROR আর IFNA

খুঁজে না পেলে #N/A আসে। রিপোর্টে সেটা কুৎসিত দেখায়, আর তার ওপর SUM করলে যোগফলও #N/A হয়ে যায়। IFERROR বলে দেয় ত্রুটি হলে কী দেখাবে: =IFERROR(VLOOKUP(F2, B2:C6, 2, FALSE), "নেই"). তবে সাবধান — IFERROR সব ত্রুটি ঢেকে দেয়, এমনকি সূত্রের টাইপিং ভুলও। শুধু “পাওয়া যায়নি” ঢাকতে চাইলে IFNA ভালো, কারণ অন্য ভুলগুলো তখনো চোখে পড়ে। ত্রুটি লুকানো আর ত্রুটি ঠিক করা এক জিনিস নয়।

বাস্তব উদাহরণ — ফল প্রক্রিয়াকরণ

একটি কোচিং সেন্টারে প্রতিটি বিষয়ের শিক্ষক আলাদা শিটে নম্বর দেন — Math শিটে Roll আর Marks, English শিটে একই রকম, কিন্তু রোলের ক্রম এলোমেলো, কেউ কেউ অনুপস্থিত। মূল Result শিটে প্রতিটি রোলের পাশে লিখুন:

C2:  =XLOOKUP($A2, Math!$A:$A, Math!$B:$B, "অনুপস্থিত")
D2:  =XLOOKUP($A2, English!$A:$A, English!$B:$B, "অনুপস্থিত")
E2:  =IF(COUNTIF(C2:D2, "<33") > 0, "Fail", "Pass")

ডলার চিহ্নগুলো লক্ষ করুন: $A2 মানে নিচে কপি করলে সারি বদলাবে কিন্তু কলাম A-ই থাকবে, আর খোঁজার কলামগুলো পুরো স্থির — পর্ব ১০-এর absolute reference এখানেই কাজে লাগে। সূত্রটি একবার লিখে নিচে টেনে দিলে ৫০০ ছাত্রের ফল তৈরি।

৩ · শর্তসাপেক্ষ সারাংশ, তারিখ, লেখা পরিষ্কার আর dynamic array

একাধিক শর্তে যোগ, গণনা আর গড়

পর্ব ১০-এর COUNTIF একটি শর্ত নেয়। বাস্তবে প্রশ্নে প্রায়ই একাধিক শর্ত থাকে — “খুলনায় এবং মার্চে”। তার জন্য SUMIFS পরিবার:

প্রশ্নসূত্র
খুলনায় মার্চে মোট বিক্রি=SUMIFS(Sales[Amount], Sales[District], "Khulna", Sales[Month], "Mar")
ঢাকায় ১০,০০০ টাকার বেশি বিক্রি কতবার=COUNTIFS(Sales[District], "Dhaka", Sales[Amount], ">10000")
রাজশাহীর গড় বিক্রি=AVERAGEIFS(Sales[Amount], Sales[District], "Rajshahi")
শর্তটা সেল থেকে নেওয়া (G1-এ জেলার নাম)=SUMIFS(Sales[Amount], Sales[District], G1)
তারিখের সীমা (H1 থেকে H2)=SUMIFS(Sales[Amount], Sales[Date], ">="&H1, Sales[Date], "<="&H2)

argument-এর ক্রমের ফাঁদ: পুরোনো SUMIF-এ যোগ করার কলাম থাকে শেষে — =SUMIF(শর্তের কলাম, শর্ত, যোগের কলাম). কিন্তু SUMIFS-এ যোগের কলাম প্রথমে. দুটো মিশিয়ে ফেলা খুব সাধারণ ভুল। আর সব range-এর দৈর্ঘ্য সমান হতে হবে — একটি D2:D500, আরেকটি B2:B499 হলে #VALUE!. Excel Table ব্যবহার করলে এই ঝামেলা নিজে থেকেই চলে যায়।

তারিখ — মাসের শেষ দিন আর কর্মদিবস

Excel-এর কাছে তারিখ আসলে একটি সংখ্যা — ১ জানুয়ারি ১৯০০ থেকে কত দিন পার হলো। এজন্য দুটি তারিখ বিয়োগ করলে দিনের সংখ্যা পাওয়া যায়। কয়েকটি দরকারি ফাংশন:

  • =EOMONTH(A2, 0) — A2-র মাসের শেষ দিন। ১০ ফেব্রুয়ারি ২০২৬ দিলে আসে ২৮ ফেব্রুয়ারি ২০২৬. 1 দিলে পরের মাসের শেষ দিন — বিলের শেষ তারিখ বা কিস্তির হিসাবে কাজের।
  • =NETWORKDAYS(শুরু, শেষ, ছুটির তালিকা) — দুই তারিখের মাঝে কর্মদিবস। কিন্তু এটি ধরে নেয় সাপ্তাহিক ছুটি শনি-রবি — পশ্চিমা দেশের নিয়ম।
  • =NETWORKDAYS.INTL(শুরু, শেষ, weekend, ছুটির তালিকা) — সাপ্তাহিক ছুটি নিজে ঠিক করা যায়। বাংলাদেশের সরকারি অফিস আর ব্যাংকে শুক্র-শনি ছুটি; এর জন্য weekend কোড 7. বিকল্প হিসেবে সাত অক্ষরের লেখাও দেওয়া যায় — সোমবার থেকে রবিবার, ছুটির দিনে 1: "0000110". যে প্রতিষ্ঠানে শুধু শুক্রবার ছুটি, সেখানে কোড 16.

HR-এর উপস্থিতি শিট — একটি উদাহরণ: ডিসেম্বর ২০২৬-এ একজন কর্মীর কতটি কর্মদিবস? Holidays নামের একটি ছোট তালিকায় সরকারি ছুটিগুলো রাখুন (এখানে ১৬ ডিসেম্বর বুধবার, ২৫ ডিসেম্বর শুক্রবার)।

=NETWORKDAYS.INTL(DATE(2026,12,1), DATE(2026,12,31), 7, Holidays)   → 22
=NETWORKDAYS(DATE(2026,12,1), DATE(2026,12,31), Holidays)          → 21  (ভুল নিয়ম)

দ্বিতীয়টি শনি-রবিকে ছুটি ধরে, আর ২৫ ডিসেম্বরকে (শুক্রবার) আলাদা ছুটি হিসেবে বাদ দেয় — ফলে এক দিন কম। বেতন বা ছুটি-ভাতার হিসাবে এক দিনের ভুল মানে টাকার ভুল। উপস্থিতির দিন গুনে (COUNTIF দিয়ে “P”) কর্মদিবস দিয়ে ভাগ করলেই উপস্থিতির হার।

লেখা পরিষ্কার করা

অন্য সফটওয়্যার, অনলাইন ফর্ম বা কারও হাতে টাইপ করা ডেটায় প্রায়ই অদৃশ্য সমস্যা থাকে — নামের শেষে বাড়তি স্পেস (“Dhaka ”), কেউ লিখেছেন “DHAKA”, কেউ “dhaka”. মানুষের চোখে তিনটি একই, কিন্তু lookup আর SUMIFS-এর কাছে তিনটি আলাদা জিনিস।

ফাংশন বা টুলকাজউদাহরণ
TRIMশুরু-শেষের বাড়তি স্পেস মোছে, মাঝের একাধিক স্পেসকে একটি করে" Dhaka " → "Dhaka"
PROPER / UPPER / LOWERপ্রতি শব্দের প্রথম অক্ষর বড় / সব বড় / সব ছোট"md rahim" → "Md Rahim"
TEXTJOINকয়েকটি সেল জুড়ে দেয়, মাঝে চিহ্ন বসিয়ে (Excel 2019 থেকে)=TEXTJOIN(", ", TRUE, A2:C2)
TEXTSPLITএকটি লেখা ভেঙে কয়েক সেলে ছড়ায় — শুধু Microsoft 365 আর Excel 2024; Google Sheets-এ SPLIT=TEXTSPLIT("Dhaka-1207", "-")
Flash Fill (Ctrl+E)দু-একটি উদাহরণ দেখিয়ে দিলে Excel বাকিগুলো একই ধাঁচে ভরে দেয়পূর্ণ নাম থেকে শুধু প্রথম অংশ

Flash Fill সূত্র নয় — এটি একবারের জন্য মান লিখে দেয়। মূল ডেটা বদলালে ফল আপনা থেকে বদলায় না। আর অদ্ভুত ধাঁচের ডেটায় এটি ভুল অনুমানও করতে পারে, তাই কয়েকটি সারি মিলিয়ে নিন।

Dynamic array — এক সূত্রে পুরো তালিকা

Excel 2021 আর Microsoft 365-এ (এবং অনেক আগে থেকেই Google Sheets-এ) একটি সূত্র একাধিক সেলে ফল “ছড়িয়ে” দিতে পারে — একে বলে dynamic array বা spill:

  • =UNIQUE(Sales[District]) — ৫০০ সারি থেকে জেলার নামগুলো একবার করে।
  • =SORT(UNIQUE(Sales[District])) — সেগুলো বর্ণানুক্রমে।
  • =FILTER(Sales, Sales[Amount] > 10000, "কিছু নেই") — শুধু বড় বিক্রিগুলোর সারি, পুরোটা।

ফল যতগুলো সেল দখল করবে, তার পথে কোনো লেখা থাকলে আসে #SPILL! — পথ ফাঁকা করে দিলেই ঠিক। পুরোনো Excel-এ এই ফাংশনগুলো নেই।

৪ · Pivot Table — ৫০০ সারির সারাংশ কয়েক ক্লিকে

“কোন জেলায় কোন মাসে কত বিক্রি” — SUMIFS দিয়েও করা যায়: প্রতিটি জেলা আর মাসের জোড়ার জন্য একটি করে সূত্র। ৮টি জেলা আর ১২ মাস হলে ৯৬টি সূত্র। Pivot Table একই কাজ করে মাউস টেনে, একটিও সূত্র না লিখে — আর মত বদলালে (মাসের বদলে পণ্য অনুযায়ী) কয়েক সেকেন্ডে পুরো টেবিল ঘুরিয়ে (pivot) দেয়। নামটা এসেছে সেখান থেকেই।

Pivot Table-এর চারটি ঘর আছে: Rows (বাঁ দিকে নিচে নিচে কী থাকবে), Columns (ওপরে পাশাপাশি কী থাকবে), Values (ভেতরের ঘরগুলোতে কোন সংখ্যা, কীভাবে — যোগ, গণনা, গড়) আর Filters (পুরো টেবিলটাকে কোনো শর্তে ছাঁকা)। ধাপে ধাপে বানান:

কাঁচা ডেটা (Sales টেবিল)Insert → PivotTable
  Date        District   Month  Amount
  03-Jan-26   Dhaka      Jan    120
  05-Jan-26   Khulna     Jan     45
  02-Feb-26   Dhaka      Feb     90
  07-Jan-26   Rajshahi   Jan     60
  ...         ...        ...    ...
  (মোট ১৫টি সারি — আসল দোকানে ৫০০, নিয়ম একই)
District → Rowsপ্রতিটি জেলা একবার
  Row Labels
  Dhaka
  Khulna
  Rajshahi
  Grand Total
Month → Columnsঘর তৈরি, এখনো খালি
  Row Labels   Jan    Feb    Mar   Grand Total
  Dhaka
  Khulna
  Rajshahi
  Grand Total
Amount → ValuesSum of Amount
  Row Labels   Jan    Feb    Mar   Grand Total
  Dhaka        200    150    190   540
  Khulna        75     95     55   225
  Rajshahi      80     40     75   195
  Grand Total  355    285    320   960
Show Values As% of Grand Total
  Row Labels   Grand Total
  Dhaka        56.25%
  Khulna       23.44%
  Rajshahi     20.31%
  Grand Total  100.00%
  নতুন সারি যোগ হলে: PivotTable Analyze → Refresh
  1. ডেটা বাছাই। Sales টেবিলের যেকোনো সেলে ক্লিক করে Insert → PivotTable → From Table/Range → New Worksheet → OK. নতুন শিটে একটি খালি জায়গা আর ডান পাশে PivotTable Fields প্যানেল আসে — ওপরে কলামের নামগুলো, নিচে চারটি ঘর।
  2. District-কে টেনে Rows-এ। ১৫টি (বা ৫০০টি) সারিতে জেলার নাম যতবারই থাকুক, Pivot Table প্রতিটি নাম একবার করে বসায় — যেন UNIQUE নিজে থেকেই হয়ে গেল।
  3. Month-কে টেনে Columns-এ। এখন জেলা আর মাসের একটি জাল তৈরি — প্রতিটি ঘর একটি প্রশ্ন: “এই জেলায়, এই মাসে?” ঘরগুলো এখনো খালি, কারণ কী গুনব তা বলা হয়নি। (আসল তারিখের কলাম টানলে নতুন Excel নিজেই মাস আর বছর অনুযায়ী দলে ভাগ করে দেয়।)
  4. Amount-কে টেনে Values-এ। সংখ্যার কলাম হলে Excel ধরে নেয় Sum. ঢাকার জানুয়ারির দুটি বিক্রি 120 + 80 = 200 যোগ হয়ে একটি ঘরে বসল। চাইলে Value Field Settings থেকে Count বা Average. ডান দিকে আর নিচে মোট — নিজে থেকেই।
  5. শতাংশে দেখা আর Refresh. Values-এর কোনো সংখ্যায় ডান-ক্লিক → Show Values As → % of Grand Total: ঢাকা একাই মোট বিক্রির অর্ধেকের বেশি। মনে রাখুন — Pivot Table মূল ডেটার একটি ছবি; মূল টেবিলে নতুন সারি এলে নিজে বদলায় না, Refresh (Alt+F5) দিতে হয়। এটি সবচেয়ে সাধারণ ভুলগুলোর একটি।

Filters ঘরে “Product” রাখলে ওপরে একটি ড্রপডাউন আসে — একটি পণ্য বাছলেই পুরো টেবিল শুধু সেই পণ্যের হিসাব দেখায়। Rows-এ দুটি ফিল্ড রাখা যায় (জেলা, তার ভেতরে পণ্য)। Pivot Table-এর কোনো সংখ্যায় ডাবল-ক্লিক করলে Excel নতুন শিটে সেই সংখ্যার পেছনের সব সারি বের করে দেখায় — “এই 200 কোথা থেকে এলো?” প্রশ্নের উত্তর। Google Sheets-এ: Insert → Pivot table, একই চারটি ঘর।

নিজে চালিয়ে দেখুন — একটি ছোট্ট Pivot সিমুলেটর

Pivot Table ভেতরে আসলে কী করে? প্রতিটি সারি পড়ে, (জেলা, মাস) জোড়া অনুযায়ী একটি “বাক্সে” টাকা যোগ করে, শেষে বাক্সগুলো সাজিয়ে টেবিল আকারে দেখায়। নিচের প্রোগ্রামটি ঠিক এটাই করে, ওপরের ১৫টি সারি দিয়ে। “চালান” চাপুন; চাইলে একটি সারি বদলে আবার চালান।

const sales = [                        // [জেলা, মাস, বিক্রি (হাজার টাকা)]
  ["Dhaka", "Jan", 120], ["Khulna", "Jan", 45], ["Dhaka", "Feb", 90],
  ["Rajshahi", "Jan", 60], ["Khulna", "Feb", 70], ["Dhaka", "Mar", 150],
  ["Rajshahi", "Feb", 40], ["Dhaka", "Jan", 80], ["Khulna", "Mar", 55],
  ["Rajshahi", "Mar", 75], ["Dhaka", "Feb", 60], ["Khulna", "Jan", 30],
  ["Rajshahi", "Jan", 20], ["Dhaka", "Mar", 40], ["Khulna", "Feb", 25]
];
const months = ["Jan", "Feb", "Mar"];   // Columns
const pivot = {};                       // pivot[জেলা][মাস] = মোট
for (const [district, month, amount] of sales) {
  pivot[district] = pivot[district] || {};
  pivot[district][month] = (pivot[district][month] || 0) + amount;
}
const cell = (v, w) => String(v).padStart(w);
console.log("District".padEnd(10) + months.map(m => cell(m, 6)).join("") + cell("Total", 7));
for (const district of Object.keys(pivot).sort()) {   // Rows
  const vals = months.map(m => pivot[district][m] || 0);
  const total = vals.reduce((a, b) => a + b, 0);       // Values = Sum
  console.log(district.padEnd(10) + vals.map(v => cell(v, 6)).join("") + cell(total, 7));
}

আউটপুট আসে: Dhaka 200 150 190 540, Khulna 75 95 55 225, Rajshahi 80 40 75 195, তিন জেলার Total মিলিয়ে 960 — ঠিক ধাপে-ধাপে ডায়াগ্রামের চতুর্থ ধাপের সংখ্যা। pivot অবজেক্টটি হলো বাক্সের তাক: প্রথম চাবি জেলা (Rows), দ্বিতীয় চাবি মাস (Columns), আর ভেতরে যোগফল (Values = Sum). কোনো বাক্স খালি থাকলে || 0 সেখানে শূন্য বসায় — Pivot Table-এ যেমন ফাঁকা ঘর দেখা যায়। sort() জেলাগুলোকে বর্ণানুক্রমে সাজায়, Excel-এর ডিফল্টের মতো। Excel এই কাজটাই করে লাখ লাখ সারিতে, অনেক দ্রুত আর মেমরি বাঁচিয়ে।

৫ · Chart — সংখ্যাকে ঠিক ছবিতে বলা

Pivot Table উত্তর দেয়, কিন্তু টেবিলের সংখ্যা পড়ে প্রবণতা বোঝা কঠিন। একটি chart একই তথ্য এক নজরে দেখায় — যদি সঠিক ধরনটি বাছেন। ডেটা বাছাই করে Insert → Recommended Charts, বা দ্রুত Alt+F1. Pivot Table থেকে বানালে হয় PivotChart — Pivot বদলালে chart-ও বদলায়।

Chartকোন প্রশ্নের জন্যউদাহরণএড়িয়ে চলুন
Column / Barকয়েকটি দলের তুলনাজেলা অনুযায়ী মোট বিক্রিদলের নাম লম্বা হলে আড়াআড়ি Bar ভালো
Lineসময়ের সাথে পরিবর্তন, প্রবণতা১২ মাসের বিক্রি, প্রতিদিনের তাপমাত্রাসময় নয় এমন দলে (জেলা) Line টানা
Pieএকটি সম্পূর্ণের ভাগ — অল্প কয়েকটিমোট বিক্রিতে ৩টি জেলার অংশ৫-৬টির বেশি টুকরো, বা প্রায় সমান টুকরো
Scatterদুটি সংখ্যার সম্পর্কপড়ার ঘণ্টা বনাম নম্বরশুধু একটি সংখ্যা থাকলে

খারাপ chart চেনা

📉 কাটা অক্ষ

Column chart-এর খাড়া অক্ষ ০ থেকে শুরু না হয়ে ৯০ থেকে শুরু হলে ৯২ আর ৯৫-এর পার্থক্য তিনগুণ মনে হয়। Column আর Bar-এ অক্ষ সবসময় ০ থেকে। (Line chart-এ ক্ষেত্রবিশেষে ০ ছাড়া শুরু চলে, তবে পাঠককে জানিয়ে।)

বিজ্ঞাপন আর রাজনৈতিক প্রচারে প্রায়ই দেখা যায়

🥧 ১২ টুকরোর 3D pie

3D কাত করা pie-তে সামনের টুকরো বড় দেখায়, পেছনেরটা ছোট — একই মান হলেও। আর ১২টি টুকরোর রং আলাদা করে মনে রাখা অসম্ভব। সমাধান: সাজানো Bar chart.

3D প্রায় কখনোই দরকার নেই

🎨 অতিরিক্ত সাজ

গাঢ় গ্রিডলাইন, ছায়া, ঝলমলে পটভূমি, প্রতিটি কলামে আলাদা রং — চোখ আসল তথ্য খুঁজে পায় না। একটি রং, একটি স্পষ্ট শিরোনাম (“ঢাকায় বিক্রি সবচেয়ে বেশি”), আর অক্ষের নাম ও একক যথেষ্ট।

কম কালি, বেশি তথ্য

Sparkline: একটি সেলের ভেতরে ছোট্ট লাইন-chart — প্রতিটি জেলার সারির শেষে ১২ মাসের প্রবণতা। Insert → Sparklines → Line. Google Sheets-এ একটি ফাংশন: =SPARKLINE(B2:M2). ড্যাশবোর্ডে অনেকগুলো সারির প্রবণতা পাশাপাশি দেখাতে চমৎকার।

৬ · Conditional formatting — নিয়ম অনুযায়ী রং

৫০০ ছাত্রের তালিকায় কে কে ফেল করেছে, চোখ বুলিয়ে খোঁজা কঠিন। Conditional formatting প্রতিটি সেলকে একটি নিয়ম দিয়ে যাচাই করে, আর নিয়ম সত্য হলে রং বা চিহ্ন বসায়। মান বদলালে রংও সঙ্গে সঙ্গে বদলায় — কারণ এটি একবারের রং করা নয়, একটি জীবন্ত নিয়ম। নিচে পাস নম্বর ৩৩ ধরে দেখুন Excel কীভাবে কলামের প্রতিটি সেল একটি একটি করে যাচাই করে:

1Roll  Name    C: Marks2101   Rahim       783102   Karim       294103   Sumi        335104   Joy         45 (পরে 30)6105   Mitu        12
নিয়ম: মান < 33 হলে লাল
সেল
মান
মান < 33?
ফরম্যাট
  1. নিয়ম তৈরি। C2:C6 বাছাই করে Home → Conditional Formatting → Highlight Cells Rules → Less Than → 33 → Light Red Fill. একটি নিয়ম, কিন্তু Excel এটি প্রতিটি সেলে আলাদাভাবে চালাবে — পর্ব ১০-এর relative reference-এর মতো।
  2. C2 = 78. 78 < 33? না — FALSE. সেল যেমন ছিল তেমনই থাকে।
  3. C3 = 29. 29 < 33? হ্যাঁ — TRUE. সেল লাল হয়। করিম পাস নম্বর পায়নি।
  4. C4 = 33 — সীমানার মান। 33 < 33? না! ৩৩ পেলে পাস, তাই নিয়ম ঠিক আছে। কিন্তু কেউ যদি ভুল করে “Less Than or Equal” দিতেন, সুমি অকারণে ফেলের তালিকায় যেত। নিয়ম বানানোর পর সবসময় সীমানার মান দিয়ে পরীক্ষা করুন।
  5. C5 = 45. FALSE — সাধারণ। (এই সারিটি শেষ ধাপে আবার দেখব।)
  6. C6 = 12. TRUE — লাল। এখন দুটি লাল সেল। ৫০০ সারিতেও Excel এই কাজ চোখের পলকে করে।
  7. মান বদলালে। পুনর্নিরীক্ষণে জয়ের নম্বর ভুল ধরা পড়ল — 45 নয়, 30. C5-এ 30 লিখতেই নিয়ম আবার চলে আর সেলটি নিজে নিজে লাল হয়। হাতে রং করলে এই বদল কেউ খেয়াল করত না — conditional formatting-এর আসল শক্তি এখানেই।

আরও কয়েকটি কাজের নিয়ম

  • Color Scales: সবচেয়ে কম মান লাল, মাঝারি হলুদ, বেশি সবুজ — Pivot Table-এর জেলা × মাস জালে লাগালে “হিটম্যাপ” হয়, কোথায় বিক্রি জোরালো এক নজরে বোঝা যায়।
  • Top/Bottom Rules → Top 10 Items: সেরা দশজন বিক্রেতা বা শীর্ষ দশ নম্বর। সংখ্যাটা ১০ না হয়ে ৩ বা ৫-ও দেওয়া যায়।
  • Duplicate Values: একই রোল বা একই মোবাইল নম্বর দুবার লেখা হয়েছে কি না — ডেটা পরিষ্কারের প্রথম কাজ।
  • সূত্র দিয়ে নিয়ম (New Rule → Use a formula): পুরো সারি রং করতে, যেমন =$E2="Fail" — ডলার চিহ্নটি কলাম E-কে আটকে রাখে, যাতে সারির সব সেল E কলাম দেখেই সিদ্ধান্ত নেয়।

৭ · Data validation আর protection — ভুল ঢোকার আগেই আটকানো

এ পর্যন্ত যত সূত্র শিখলেন, সবগুলোর ফল নির্ভর করে ডেটা ঠিক আছে কি না তার ওপর। কম্পিউটারের পুরোনো কথা — “garbage in, garbage out” (পর্ব ০১-এ দেখেছেন, GIGO). “Dahka” লেখা একটি সারি SUMIFS-এর ঢাকার যোগফল থেকে নীরবে বাদ পড়ে যায়। পরে খুঁজে ঠিক করার চেয়ে ঢোকার মুখেই আটকানো অনেক সহজ — এই কাজটির নাম data validation.

  1. নিয়মAllow: Listজেলার তালিকা
  2. Input messageসেলে ক্লিকআগেই নির্দেশনা
  3. ভুল এন্ট্রিDahkaStop — বাতিল
  4. ড্রপডাউনDhakaগৃহীত
  1. নিয়ম বসানো। একটি আলাদা শিটে জেলার নামের তালিকা রাখুন (সবচেয়ে ভালো একটি ছোট Excel Table, যাতে নতুন জেলা যোগ করলে তালিকাও বাড়ে)। এবার অর্ডারের District কলাম বাছাই করে Data → Data Validation → Settings → Allow: List → Source-এ সেই তালিকার range. “In-cell dropdown”-এ টিক থাকুক।
  2. আগে থেকে জানানো। একই ডায়ালগের Input Message ট্যাবে লিখুন: “তালিকা থেকে জেলা বাছুন”. এখন কেউ সেলে ক্লিক করলেই ছোট একটি হলুদ নোট দেখায় — ভুল হওয়ার আগেই নির্দেশনা। পাশে ছোট্ট তীরচিহ্ন, ক্লিক করলে তালিকা।
  3. ভুল লিখলে। তাড়াহুড়োয় কেউ টাইপ করলেন “Dahka”. Error Alert ট্যাবে Style যদি Stop হয়, Excel এন্ট্রি নেয়ই না — বার্তা দেখায় (যেমন “তালিকার বাইরের জেলা গ্রহণযোগ্য নয়”), আর Retry বা Cancel. Warning দিলে জিজ্ঞেস করে “তবুও রাখবেন?”, আর Information শুধু জানায় — এই দুটিতে ভুল ঢুকে যেতে পারে।
  4. ড্রপডাউন থেকে বাছাই। তালিকা থেকে “Dhaka” বাছলে এন্ট্রি গৃহীত — বানান নিশ্চিতভাবে ঠিক, শেষে বাড়তি স্পেসও নেই। তবে মনে রাখুন: নিয়ম বসানোর আগের পুরোনো ভুলগুলো থেকে যায়; সেগুলো খুঁজতে Data Validation-এর পাশের তীর → Circle Invalid Data. আর কেউ অন্য জায়গা থেকে কপি করে পেস্ট করলে validation এড়িয়ে যেতে পারে — এটি পাহারাদার, দুর্গ নয়।

আরও কয়েকটি validation নিয়ম

Allowনিয়মকোথায় কাজে লাগে
Whole numberbetween 0 and 100পরীক্ষার নম্বর — ১১০ বা −৫ ঢুকবে না
Decimalgreater than 0দাম, ওজন
Datebetween 01-Jan-2026 and 31-Dec-2026এই বছরের ভাউচার; ভুল বছরের তারিখ আটকায়
Text lengthequal to 11বাংলাদেশের মোবাইল নম্বর (০১ দিয়ে শুরু, ১১ অঙ্ক) — কলামটি Text ফরম্যাটে রাখুন, নইলে শুরুর 0 মুছে যায়
Custom=COUNTIF($A:$A, A2)=1একই রোল বা NID দুবার ঢোকানো আটকায়

একটি ড্রপডাউন-ভিত্তিক অর্ডার ফর্ম: সব মিলিয়ে একটি ছোট্ট ব্যবস্থা দাঁড়ায় — Product কলামে ড্রপডাউন (পণ্যের তালিকা থেকে), পাশের Price কলামে =XLOOKUP(B2, Products[Product], Products[Price], ""), Qty-তে “১ থেকে ১০০০-এর মধ্যে পূর্ণসংখ্যা” নিয়ম, আর Total-এ =C2*D2. বিক্রয়কর্মী শুধু বাছাই করেন আর পরিমাণ লেখেন; দাম আর হিসাব আসে স্বয়ংক্রিয়ভাবে, ভুলের সুযোগ প্রায় থাকে না। Google Sheets-এ: Insert → Dropdown, বা Data → Data validation.

Protection — সূত্র যেন ভুলে মুছে না যায়

অর্ডার ফর্মে বিক্রয়কর্মীর শুধু Product আর Qty লেখার কথা; Price আর Total-এর সূত্রে হাত দেওয়ার কথা নয়। Excel-এ প্রতিটি সেল ডিফল্টভাবে “Locked” চিহ্নিত থাকে, কিন্তু সেই চিহ্ন কাজ করে শুধু শিট protect করলে। তাই নিয়ম দুই ধাপের:

  1. যেসব সেলে লেখা যাবে (Product, Qty) সেগুলো বাছাই করে Ctrl+1 → Protection → Locked-এর টিক তুলে দিন।
  2. Review → Protect Sheet → চাইলে একটি পাসওয়ার্ড। এখন বাকি সব সেল বদলানো যায় না।

এটি নিরাপত্তা নয়, ভুল-প্রতিরোধ। Protect Sheet-এর পাসওয়ার্ড দুর্বল; ইন্টারনেটে এটি ভাঙার কৌশল সহজলভ্য, আর লুকানো কলামের ডেটাও কপি করে বের করা যায়। গোপন তথ্য (বেতন, গ্রাহকের NID, ব্যাংক হিসাব) রক্ষা করতে চাইলে File → Info → Protect Workbook → Encrypt with Password — এটি পুরো ফাইল এনক্রিপ্ট করে, পাসওয়ার্ড ছাড়া খোলাই যায় না (পাসওয়ার্ড হারালে আপনিও খুলতে পারবেন না)। আরও ভালো: যার দেখার দরকার নেই, তাকে ফাইলটি পাঠাবেনই না। এনক্রিপশনের ভেতরের কথা পর্ব ৪৪-এ।

৮ · What-if, Power Query, Google Sheets — আর স্প্রেডশিটের সীমা

Goal Seek — উত্তর জানা, প্রশ্ন খোঁজা

সাধারণ সূত্র চলে সামনের দিকে: মাসিক সঞ্চয় দিলে দুই বছর পরে কত হবে। Goal Seek চলে উল্টো দিকে: “দুই বছরে ১,০০,০০০ টাকা চাই — মাসে কত জমাতে হবে?”

B1: মাসিক সঞ্চয়        1000            (যেকোনো আন্দাজ)
B2: বার্ষিক মুনাফা       6%              (উদাহরণ; আসল হার প্রতিষ্ঠানভেদে আলাদা)
B3: মাস                24
B4: শেষে মোট            =FV(B2/12, B3, -B1)

Data → What-If Analysis → Goal Seek
  Set cell: B4    To value: 100000    By changing cell: B1
  → B1 হয় প্রায় 3932

Excel বারবার আন্দাজ বদলে দেখে, কোন মানে লক্ষ্য মেলে। একই মেনুর Scenario Manager দিয়ে কয়েকটি “যদি” পাশাপাশি রাখা যায় — মুনাফা ৫%, ৬%, ৭% হলে কী দাঁড়ায় — আর Data Table একসাথে অনেকগুলো মানের ফল একটি টেবিলে দেখায়। ব্যবসার বাজেট আর ঋণের কিস্তির পরিকল্পনায় এগুলো খুব চলে।

Power Query — প্রতি মাসের একই পরিষ্কারের কাজ একবারে

ধরুন প্রতি মাসে ব্যাংক বা সফটওয়্যার থেকে একই ধাঁচের একটি CSV রিপোর্ট আসে, আর প্রতিবার আপনি একই কাজ করেন: ওপরের তিনটি অপ্রয়োজনীয় সারি মোছা, একটি কলাম ভাগ করা, তারিখ ঠিক করা, স্পেস ছাঁটা। Data → Get Data (Get & Transform) দিয়ে খোলা Power Query এই ধাপগুলো রেকর্ড করে রাখে। পরের মাসে নতুন ফাইল ফোল্ডারে রেখে শুধু Refresh — সব ধাপ নিজে থেকে আবার চলে। এটি একটি পুরো আলাদা দক্ষতা; এখানে শুধু নামটা চিনে রাখুন — বারবার একই পরিষ্কারের কাজ করতে হলে এটাই পথ।

Google Sheets-এ যা আলাদা

  • QUERY ফাংশন: SQL-এর মতো ভাষায় টেবিলকে প্রশ্ন — =QUERY(A1:D500, "select B, sum(D) group by B", 1) জেলা অনুযায়ী যোগফল দেয়, অনেকটা Pivot Table-এর মতো। SQL পর্ব ৪২-এ শিখলে এটি আরও পরিচিত লাগবে।
  • IMPORTRANGE: অন্য একটি Google Sheet-এর অংশ টেনে আনে — =IMPORTRANGE("শিটের লিংক", "Sheet1!A1:D100"). প্রথমবার “Allow access” চাইবে। সাবধান: একবার অনুমতি দিলে আপনার শিটে যার সম্পাদনার অধিকার আছে, সে ওই উৎস-শিটের ডেটাও টেনে আনতে পারে। বেতনের শিট বা গ্রাহকের তালিকার মতো গোপন ফাইল এভাবে জুড়বেন না; শেয়ারিংয়ের নিয়ম পর্ব ১৪-এ।
  • একসাথে কাজ: কয়েকজন একই সময়ে একই শিটে লিখতে পারেন, আর File → Version history থেকে আগের যেকোনো অবস্থায় ফেরা যায়।

কখন স্প্রেডশিট আর যথেষ্ট নয়

স্প্রেডশিট অসাধারণ — কিন্তু সব কাজের জন্য নয়। এই লক্ষণগুলো দেখলে বুঝবেন ডেটাবেস-এর দিকে যাওয়ার সময় হয়েছে:

  • সারি লাখ ছাড়িয়েছে, ফাইল খুলতে-সেভ করতে মিনিট লাগে। (একটি Excel শিটে সর্বোচ্চ ১০,৪৮,৫৭৬টি সারি থাকতে পারে — কিন্তু ধীর হয়ে যায় অনেক আগেই।)
  • অনেকে একসাথে লিখছেন আর “কে কোনটা বদলাল” নিয়ে ঝগড়া হচ্ছে; একই ফাইলের final-v3-rahim.xlsx ধরনের দশটি কপি ঘুরছে।
  • একই তথ্য (গ্রাহকের ঠিকানা) অনেক শিটে বারবার লেখা, আর একটায় বদলালে অন্যগুলো পুরোনো থেকে যায়।
  • একটি ওয়েবসাইট বা মোবাইল অ্যাপকে ডেটা পড়তে-লিখতে হবে।

ডেটাবেসে টেবিল, key আর relation কীভাবে এই সমস্যাগুলো সমাধান করে, তা পর্ব ৪১-এ দেখবেন; আর পর্ব ৪২-এ SQL দিয়ে ঠিক আজকের প্রশ্নগুলোই (“জেলা অনুযায়ী মোট বিক্রি”) করবেন। মাঝামাঝি একটি পথও আছে — Microsoft Access বা Airtable-এর মতো টুল, যা দেখতে স্প্রেডশিটের মতো কিন্তু ভেতরে ডেটাবেসের নিয়ম মানে।

আরও গভীরে: Pivot Table আর SUMIFS যে কাজ করে, ডেটা অ্যানালিস্টরা সেটাকে বলেন “group by আর aggregation” — SQL, Python-এর pandas বা Power BI-তে একই ধারণা, শুধু অনেক বড় ডেটায় আর পুনরাবৃত্তিযোগ্যভাবে। Excel থেকে পরের ধাপে যেতে চাইলে দেখুন ABCL TECH-এর Data Science কোর্স — SQL-এর aggregation থেকে বর্ণনামূলক পরিসংখ্যান পর্যন্ত। আর ডেটাবেস নিজে গভীরে শিখতে DBMS ও SQL কোর্স.

পরীক্ষা ও ইন্টারভিউতে: অফিস সহকারী, ব্যাংক আর বিভিন্ন চাকরির কম্পিউটার অংশে, এমনকি ব্যবহারিক পরীক্ষাতেও এ ধরনের প্রশ্ন প্রায়ই আসে —

  • VLOOKUP-এর চারটি argument কী? — lookup_value, table_array, col_index_num, range_lookup (হুবহু মিলের জন্য FALSE বা 0).
  • Pivot Table কেন ব্যবহার করা হয়? — সূত্র না লিখে বড় ডেটাকে দল অনুযায়ী সংক্ষেপ (যোগ, গণনা, গড়) করতে।
  • Data validation কী? — সেলে কী ধরনের ডেটা ঢোকানো যাবে তার নিয়ম, যেমন ড্রপডাউন তালিকা বা সংখ্যার সীমা।
  • $A$1 আর A1-এর পার্থক্য? — প্রথমটি absolute reference, কপি করলে বদলায় না; দ্বিতীয়টি relative, কপি করলে বদলায়।
  • সময়ের সাথে প্রবণতা দেখাতে কোন chart? — Line chart.

৯ · AI-এর যুগে — জটিল সূত্র লেখায় AI, যাচাইয়ে আপনি

Excel-এর Copilot, ChatGPT, Gemini বা Claude-এর মতো চ্যাটবটকে বাংলায় বললেই — “জেলা আর মাস দুটো মিলিয়ে বিক্রির যোগফল দাও” — কয়েক সেকেন্ডে একটি সূত্র লিখে দেয়। একসময় যে nested IF লিখতে আধা ঘণ্টা লাগত, এখন লাগে এক মিনিট। কিন্তু AI-এর লেখা সূত্রের ভুলগুলো সাধারণত এমন যে #N/A বা #VALUE! দেখায় না — নীরবে ভুল সংখ্যা দেয়:

AI-এর ভুলকেন বিপজ্জনকআপনি যা করবেন
Excel 2016-এ XLOOKUP, TEXTSPLIT বা FILTER দেয়অন্যের কম্পিউটারে #NAME?প্রশ্নে নিজের Excel version জানান (File → Account)
VLOOKUP-এ শেষের FALSE বাদ দেয়, বা ভুল কলাম নম্বরত্রুটি ছাড়াই ভুল দামএমন একটি কোড দিয়ে পরীক্ষা করুন, যা তালিকায় নেই
শনি-রবি ছুটি ধরে NETWORKDAYS দেয়বাংলাদেশের কর্মদিবস ভুলশুক্র-শনির কথা বলুন; একটি মাস হাতে গুনে মেলান
range-এর শেষ সারি ভুল (D2:D100, অথচ ডেটা ৫০০ পর্যন্ত)যোগফল কম আসেExcel Table ব্যবহার করুন; মোট সারির সংখ্যা মিলিয়ে নিন

ভালো প্রশ্নে থাকে: Excel-এর version, টেবিলের কলামের নাম ও উদাহরণ সারি (আসল গোপন ডেটা নয়), আপনি কী চান, আর পরীক্ষার জন্য একটি জানা উত্তর:

আমি Excel 2019 ব্যবহার করি (XLOOKUP নেই)। আমার "Sales" শিটে কলাম: A = Date, B = District, C = Product, D = Amount, সারি 2 থেকে 501 পর্যন্ত। নিচে বানানো ৫টি উদাহরণ সারি দিচ্ছি (আসল গ্রাহকের তথ্য নয়): ______ ১. G1-এ জেলা আর G2-এ মাস লিখলে ওই জেলার ওই মাসের মোট বিক্রি বের করার সূত্র দাও। ২. সূত্রের প্রতিটি অংশ এক লাইনে ব্যাখ্যা করো। ৩. এমন ৩টি পরীক্ষা-মান বলো, যার উত্তর আমি হাতে গুনে মেলাতে পারি — এর একটি যেন তালিকায় নেই এমন জেলা। ৪. যে ফাংশন Excel 2019-এ নেই, সেটা ব্যবহার করো না; নিশ্চিত না হলে বলো।

AI-এর সূত্র শিটে বসানোর আগে — চেকলিস্ট

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন — তারপর “→ উত্তর” চাপুন। স্প্রেডশিটের পেছনে চার দশকের ইতিহাস, ব্যবসার বড় বড় ভুল আর নকশার দর্শন লুকিয়ে আছে।

প্র ০১প্রায় তিন দশক VLOOKUP কেন অফিসের সবচেয়ে পরিচিত “উন্নত” ফাংশন ছিল — আর ২০১৯ সালে XLOOKUP এনে Microsoft কেন তাকে বদলাতে চাইল?

খোঁজার ধারণা স্প্রেডশিটের প্রায় জন্ম থেকেই আছে। ১৯৭৯ সালে Dan Bricklin আর Bob Frankston-এর তৈরি প্রথম জনপ্রিয় স্প্রেডশিট VisiCalc-এ @LOOKUP ছিল; ১৯৮৩ সালের Lotus 1-2-3-এ এলো @VLOOKUP আর @HLOOKUP. Excel (Mac-এ ১৯৮৫, Windows-এ ১৯৮৭) এই নাম আর গঠন রেখে দেয়, যাতে Lotus-এর ব্যবহারকারীরা সহজে চলে আসতে পারেন। ফলে VLOOKUP হয়ে ওঠে একটি প্রজন্মের অফিসকর্মীর “পরের ধাপ” — SUM আর IF-এর পর প্রথম যে ফাংশন শিখলে মানুষ নিজেকে “Excel জানি” বলতে পারতেন। চাকরির বিজ্ঞাপন আর ইন্টারভিউতে “VLOOKUP জানেন?” প্রশ্নটি প্রায় দক্ষতার মাপকাঠি হয়ে দাঁড়ায়।

কিন্তু এর নকশায় চারটি দুর্বলতা ছিল, যা আগের যুগের সীমাবদ্ধতা থেকে এসেছিল। এক, শেষ argument না দিলে ডিফল্ট “কাছাকাছি মিল” — সাজানো সংখ্যার পরিসরে (যেমন কর-হার বা গ্রেডের সীমা) খোঁজার জন্য এটি কাজের, কিন্তু কোড বা নাম খোঁজার সময় এটি নীরবে ভুল ফল দেয়, আর বেশিরভাগ মানুষ খোঁজেন কোড বা নামই। দুই, কলাম নম্বর একটি লেখা সংখ্যা — মাঝে কলাম ঢোকালে সূত্র ভাঙে। তিন, শুধু ডান দিকে তাকায়। চার, বড় এলাকা নির্দেশ করতে হয়, যার অপ্রয়োজনীয় কলামও হিসাবের অংশ হয়ে যায়।

অভিজ্ঞ ব্যবহারকারীরা বহু বছর ধরে INDEX/MATCH দিয়ে এগুলো এড়াতেন, কিন্তু দুটি ফাংশন জোড়া দেওয়া নতুনদের কাছে কঠিন লাগত। ২০১৯ সালের আগস্টে Microsoft-এর Excel দল XLOOKUP ঘোষণা করে, প্রথমে Office 365-এর পরীক্ষামূলক ব্যবহারকারীদের জন্য; পরে এটি Microsoft 365 আর Excel 2021-এর অংশ হয়, আর ২০২২ সালে Google Sheets-ও এটি যোগ করে। XLOOKUP-এ ডিফল্ট হুবহু মিল, খোঁজার আর ফলের range আলাদা, “না পেলে কী” বলে দেওয়া যায়, আর নিচ থেকে ওপরে খোঁজাও যায় (সবশেষ এন্ট্রি খুঁজতে)।

তবু VLOOKUP মুছে ফেলা হয়নি, হবেও না — লক্ষ লক্ষ পুরোনো ফাইল এর ওপর চলে, আর Microsoft পুরোনো ফাইল ভাঙতে চায় না। তাই দুটোই চেনা দরকার: পুরোনো ফাইল পড়তে আর পুরোনো Excel-এ কাজ করতে VLOOKUP, নতুন কাজে XLOOKUP.

মূল উপলব্ধি: একটি টুলের ডিফল্ট আচরণ কোটি মানুষের ভুলের ধরন ঠিক করে দেয়। ভালো নকশা মানে নিরাপদ বিকল্পটিকেই ডিফল্ট করা — আর পুরোনো ব্যবহারকারীদের না ভেঙে নতুন পথ খুলে দেওয়া।

প্র ০২Pivot Table-এর ধারণা কোথা থেকে এলো? Lotus Improv থেকে Excel-এর PivotTable পর্যন্ত গল্পটা কী?

VisiCalc আর Lotus 1-2-3-এর স্প্রেডশিট ছিল সেলের একটি সমতল জাল — সারি আর কলামের কোনো “অর্থ” স্প্রেডশিট জানত না; সেটা শুধু ব্যবহারকারীর মাথায় থাকত। আশির দশকের শেষে Lotus কোম্পানিতে Pito Salas-এর নেতৃত্বে একটি দল প্রশ্ন তোলে: ব্যবসার ডেটায় আসলে কিছু মাত্রা থাকে — অঞ্চল, পণ্য, সময় — আর সংখ্যাগুলো সেই মাত্রাগুলোর ছেদবিন্দুতে বসে। স্প্রেডশিট যদি এই মাত্রাগুলো চেনে, তাহলে “অঞ্চল সারিতে, সময় কলামে” থেকে “পণ্য সারিতে, অঞ্চল কলামে” করতে সূত্র বা কপি-পেস্ট লাগবে না — শুধু মাত্রাটা টেনে অন্য জায়গায় নিলেই চলবে।

এই চিন্তা থেকে ১৯৯১ সালে বাজারে আসে Lotus Improv, প্রথমে NeXT কম্পিউটারের জন্য (পরে Windows-এও)। এতে ডেটা আর তার উপস্থাপনা আলাদা ছিল, আর সূত্র লেখা হতো সেলের ঠিকানায় নয়, নামে (“Profit = Revenue − Cost”). অনেক সমালোচক একে বিপ্লবী বললেও এটি বাণিজ্যিকভাবে সফল হয়নি — NeXT কম্পিউটার খুব কম বিক্রি হতো, আর প্রচলিত স্প্রেডশিটে অভ্যস্ত মানুষের কাছে ধারণাটি নতুন ছিল।

কিন্তু ধারণাটি টিকে যায়। Microsoft ১৯৯৩ সালে Excel 5-এ “PivotTable” যোগ করে — Improv-এর মতো পুরো স্প্রেডশিটকে বদলে না দিয়ে, সাধারণ শিটের ভেতরে একটি টুল হিসেবে। এটাই ছিল সফলতার চাবি: মানুষকে পুরোনো অভ্যাস ছাড়তে হয়নি, শুধু দরকারের সময় একটি নতুন ক্ষমতা পেয়েছেন। পরের দশকগুলোতে Excel 2000-এ PivotChart, পরে Excel 2013-এ Data Model আর Power Pivot এসে Pivot Table কয়েক লক্ষ সারির ওপরেও কাজ করতে শুরু করে।

এর পেছনের ধারণা — বহুমাত্রিক ডেটা, যাকে ডেটাবেসের জগতে বলে OLAP cube — আজকের Power BI, Tableau আর বড় ব্যবসায়িক ড্যাশবোর্ডের মূল ভিত্তি। SQL-এর GROUP BY-ও মূলত একই প্রশ্নের উত্তর দেয়।

মূল উপলব্ধি: প্রথম উদ্ভাবকই সবসময় বাজার জেতে না। একটি শক্তিশালী ধারণা জনপ্রিয় হয় তখন, যখন সেটা মানুষের বিদ্যমান অভ্যাসের ভেতরে ঢুকে পড়ে — পুরোনোকে ভেঙে নয়, পাশে বসে।

প্র ০৩“Excel hell” কী? ২০২০ সালে যুক্তরাজ্যে কোভিড পরীক্ষার ফল হারানোর ঘটনায় স্প্রেডশিটের সারি-সীমা কীভাবে দায়ী ছিল?

বহু প্রতিষ্ঠানে গুরুত্বপূর্ণ হিসাব চলে এমন স্প্রেডশিটে, যা একজন মানুষ কয়েক বছর আগে বানিয়েছিলেন, কোনো নথিপত্র নেই, সূত্রের ভেতরে সূত্র, আর ফাইলের নাম final_v7_new.xlsx. কেউ জানে না কোন সেল কোথা থেকে মান নেয়; একটি সারি মুছলে দূরের কোনো হিসাব নীরবে বদলে যায়। ব্যবসার জগতে একে মজা করে বলা হয় “Excel hell”. গবেষকেরা বড় প্রতিষ্ঠানের স্প্রেডশিট পরীক্ষা করে বারবার দেখেছেন — উল্লেখযোগ্য অংশে অন্তত একটি ত্রুটি থাকে।

সবচেয়ে আলোচিত উদাহরণগুলোর একটি ঘটে ২০২০ সালের সেপ্টেম্বর-অক্টোবরে, যুক্তরাজ্যে। পরীক্ষাগারগুলো কোভিড পরীক্ষার ফল CSV ফাইলে পাঠাত, আর Public Health England-এর একটি স্বয়ংক্রিয় প্রক্রিয়া সেগুলো Excel টেমপ্লেটে তুলত। টেমপ্লেটটি ছিল পুরোনো .xls ফরম্যাটে — Excel 97–2003-এর ফরম্যাট, যেখানে একটি শিটে সর্বোচ্চ ৬৫,৫৩৬টি সারি থাকতে পারে (২-এর ১৬ ঘাত — পর্ব ১৬-এর বাইনারি এখানেও!)। প্রতিটি পরীক্ষার ফল কয়েকটি সারি নিত, তাই ফাইল সীমায় পৌঁছানোর পরের ফলগুলো কোনো সতর্কবার্তা ছাড়াই কেটে বাদ পড়ে যায়। প্রায় এক সপ্তাহে প্রায় ১৬ হাজার পজিটিভ রোগীর তথ্য দেরিতে যুক্ত হয়, ফলে তাঁদের সংস্পর্শে আসা মানুষদের খুঁজে বের করার কাজ পিছিয়ে যায়। অথচ Excel 2007 থেকেই নতুন .xlsx ফরম্যাটে সীমা ১০,৪৮,৫৭৬ সারি।

আরও কিছু পরিচিত ঘটনা: ২০১৩ সালে অর্থনীতিবিদ Reinhart আর Rogoff-এর একটি প্রভাবশালী গবেষণাপত্রের স্প্রেডশিটে এক ছাত্র (Thomas Herndon) একটি range-এর ভুল খুঁজে পান, যাতে কয়েকটি দেশ গড় থেকে বাদ পড়েছিল। জিনবিজ্ঞানীদের ডেটায় Excel “SEPT1”, “MARCH1” নামের জিনকে নিজে থেকে তারিখ বানিয়ে ফেলত — এত বেশি ঘটত যে ২০২০ সালে কয়েকটি জিনের আনুষ্ঠানিক নামই বদলানো হয়।

শিক্ষা হলো — স্প্রেডশিট দোষী নয়; দোষ হলো স্প্রেডশিটকে এমন কাজে লাগানো, যার জন্য তা তৈরি নয়, কোনো পরীক্ষা বা পর্যালোচনা ছাড়া। প্রতিরোধের উপায়: ইনপুট আর হিসাব আলাদা শিটে, data validation, মোট সারির সংখ্যা মিলিয়ে দেখার “control total”, দ্বিতীয় একজনের পর্যালোচনা, আর বড় বা জীবন-গুরুত্বপূর্ণ ডেটার জন্য ডেটাবেস।

মূল উপলব্ধি: সবচেয়ে বিপজ্জনক ত্রুটি সেটা, যা কোনো ত্রুটি-বার্তা দেখায় না। প্রতিটি গুরুত্বপূর্ণ শিটে এমন একটি পরীক্ষা রাখুন, যা জানায় “যত সারি ঢুকেছে, তত সারিই হিসাবে এসেছে কি না”।

প্র ০৪একটি ভালো chart কেমন হয়? Edward Tufte-এর “data-ink” ধারণা আর বিভ্রান্তিকর অক্ষের কৌশল কী শেখায়?

মার্কিন পরিসংখ্যানবিদ Edward Tufte ১৯৮৩ সালে The Visual Display of Quantitative Information নামে একটি বই প্রকাশ করেন, যা তথ্য-চিত্রায়ণের (data visualisation) সবচেয়ে প্রভাবশালী বইগুলোর একটি। তাঁর কেন্দ্রীয় ধারণা data-ink ratio: chart-এ যত কালি খরচ হয়েছে, তার কতটুকু আসলে ডেটা দেখাচ্ছে? গাঢ় গ্রিডলাইন, ছায়া, 3D প্রভাব, অপ্রয়োজনীয় পটভূমি — এগুলো কালি খায় কিন্তু তথ্য দেয় না। Tufte এদের নাম দেন “chartjunk”. তাঁর পরামর্শ: যা মুছলে তথ্য হারায় না, তা মুছে ফেলুন।

দ্বিতীয় ধারণা — chart যেন সত্য বলে। Tufte একটি মাপ প্রস্তাব করেন, যাকে বলেন “Lie Factor”: ছবিতে পরিবর্তন যত বড় দেখায়, আর ডেটায় আসলে যত বড় — দুটির অনুপাত। সবচেয়ে পরিচিত কৌশল হলো কাটা অক্ষ: কলাম chart-এর অক্ষ ০ থেকে না শুরু করে ৯০ থেকে শুরু করলে ৯২ আর ৯৫-এর কলামের উচ্চতার পার্থক্য আসল পার্থক্যের চেয়ে অনেক বড় দেখায়। কলামের দৈর্ঘ্য দিয়েই আমরা মান তুলনা করি, তাই সেখানে অক্ষ ০ থেকে শুরু হওয়া জরুরি। আরেকটি কৌশল — দুই পাশে দুটি ভিন্ন অক্ষ রেখে দুটি অসম্পর্কিত রেখাকে “একসাথে ওঠানামা” করানো, যাতে কার্যকারণ সম্পর্ক মনে হয়।

গবেষণাও এর পক্ষে কথা বলে। ১৯৮৪ সালে William Cleveland আর Robert McGill দেখান, মানুষ একই রেখার ওপর দৈর্ঘ্য বা অবস্থান খুব নিখুঁতভাবে তুলনা করতে পারে, কিন্তু কোণ, ক্ষেত্রফল আর রঙের গাঢ়ত্ব তুলনায় অনেক দুর্বল। এজন্যই pie chart-এর প্রায় সমান টুকরোগুলোর মধ্যে কোনটা বড় বোঝা কঠিন, অথচ সাজানো bar chart-এ সঙ্গে সঙ্গে বোঝা যায়।

তবে Tufte-কে অন্ধভাবে মানাও ঠিক নয়। কিছু গবেষণায় দেখা গেছে, একটু সাজসজ্জা থাকলে মানুষ chart বেশিদিন মনে রাখে। উপস্থাপনার উদ্দেশ্য — বিশ্লেষণ, না গল্প বলা — অনুযায়ী ভারসাম্য বদলায়।

মূল উপলব্ধি: chart একটি যুক্তি — সেটা পাঠকের চোখকে কোথায় নিয়ে যাচ্ছে, আর সেটা ন্যায্য কি না, প্রতিবার জিজ্ঞেস করুন। অন্যের chart দেখলে প্রথমেই অক্ষের শুরু আর একক দেখে নিন।

প্র ০৫স্প্রেডশিট আর ডেটাবেসের সীমারেখা কোথায়? Access বা Airtable-এর মতো মাঝামাঝি টুল কেন আছে, আর কখন পুরো ডেটাবেসে যেতে হয়?

স্প্রেডশিটের শক্তি হলো নমনীয়তা: যেকোনো সেলে যেকোনো কিছু লেখা যায়, হিসাব আর উপস্থাপনা একই জায়গায়, আর প্রোগ্রামিং না জেনেও কাজ চলে। ঠিক এই নমনীয়তাই বড় হলে দুর্বলতা হয়ে দাঁড়ায়। ডেটাবেস উল্টো দর্শনে চলে — আগে কাঠামো (schema) ঠিক হয়: কোন কলামে কী ধরনের ডেটা, কোনটা বাধ্যতামূলক, কোনটা অনন্য (key). নিয়মের বাইরে কিছু ঢোকানোই যায় না — data validation নয়, বাধ্যতামূলক আইন।

দ্বিতীয় পার্থক্য সম্পর্ক. স্প্রেডশিটে গ্রাহকের ঠিকানা প্রতিটি অর্ডারের সারিতে আবার লেখা হয়; ঠিকানা বদলালে শত সারি বদলাতে হয়, আর একটা বাদ পড়লেই অসঙ্গতি। ডেটাবেসে গ্রাহক একটি টেবিলে একবার থাকেন, অর্ডারের টেবিলে শুধু তাঁর ID — এটাই relation, আর অপ্রয়োজনীয় পুনরাবৃত্তি সরানোর নিয়মের নাম normalization (পর্ব ৪১)। XLOOKUP দিয়ে আমরা আসলে হাতে হাতে এই সম্পর্কই জুড়ছিলাম।

তৃতীয় পার্থক্য একসাথে অনেক ব্যবহারকারী আর লেনদেনের নিরাপত্তা. bKash বা একটি ব্যাংকের প্রতি সেকেন্ডে হাজার হাজার লেনদেন হয়; দুজন একই মুহূর্তে একই হিসাব বদলালেও ডেটাবেস নিশ্চিত করে যে কোনো টাকা হারাবে না বা দুবার কাটবে না। স্প্রেডশিট এর জন্য তৈরিই নয়।

মাঝখানে আছে এমন টুল, যা দুই দুনিয়া জোড়ে। Microsoft Access (১৯৯২ সাল থেকে) ছোট অফিসকে ফর্ম, রিপোর্ট আর relation-সহ একটি ডেস্কটপ ডেটাবেস দেয়। এখনকার Airtable, Notion-এর ডেটাবেস বা Google-এর AppSheet দেখতে স্প্রেডশিটের মতো, কিন্তু ভেতরে কলামের ধরন, টেবিলের মধ্যে লিংক আর অনুমতির নিয়ম আছে — প্রোগ্রামিং ছাড়াই। এদের বলা হয় “low-code” টুল।

কখন কোনটি? একজন বা কয়েকজনের বিশ্লেষণ, একবারের রিপোর্ট, পরিকল্পনা আর what-if — স্প্রেডশিট। কয়েকজনের নিয়মিত তথ্য-সংগ্রহ, একটি ছোট দোকানের স্টক — low-code টুল বা Access. অনেক ব্যবহারকারী, অ্যাপ বা ওয়েবসাইটের সাথে সংযোগ, টাকা-পয়সা বা সংবেদনশীল ব্যক্তিগত তথ্য — পুরো ডেটাবেস (MySQL, PostgreSQL ইত্যাদি)। বাস্তবে প্রায়ই দুটোই থাকে: ডেটা থাকে ডেটাবেসে, আর বিশ্লেষণের জন্য সেখান থেকে Excel-এ টেনে আনা হয় — Power Query ঠিক এই সেতুর কাজ করে।

মূল উপলব্ধি: প্রশ্নটা “কোন টুল ভালো” নয়, “এই ডেটার জন্য কতটা নিয়ম আর কতটা নমনীয়তা দরকার”। যখন ভুলের দাম নমনীয়তার সুবিধার চেয়ে বেশি হয়ে যায়, তখনই ডেটাবেসে যাওয়ার সময়।

অনুশীলন

Excel বা Google Sheets খুলে হাতে-কলমে করুন। ডেটা নিজে বানিয়ে নিন — ১০-১৫ সারিই যথেষ্ট।

  1. দামের তালিকা আর lookup: একটি শিটে ৫টি পণ্যের Product, Code, Price লিখুন। আরেক শিটে একটি কোড লিখে তার দাম আনুন — একবার VLOOKUP, একবার XLOOKUP (না থাকলে INDEX/MATCH) দিয়ে। এবার এমন একটি কোড লিখুন যা তালিকায় নেই, আর VLOOKUP-এর শেষের FALSE মুছে দেখুন কী হয়।

    যেমন =VLOOKUP(A2, Products!B2:C6, 2, FALSE) আর =XLOOKUP(A2, Products!B2:B6, Products!C2:C6, "নেই") — দুটো একই দাম দেবে। না-থাকা কোডে প্রথমটি দেবে #N/A, দ্বিতীয়টি “নেই”. FALSE মুছলে আর কোডগুলো ছোট থেকে বড় ক্রমে সাজানো থাকলে, না-থাকা কোডে VLOOKUP তার ঠিক আগের কোডের দাম দেখাবে — কোনো ত্রুটি ছাড়া। এটাই সেই নীরব ভুল। অভ্যাস করুন: VLOOKUP লিখলেই শেষে FALSE.

  2. Pivot Table: Date, District, Product, Amount কলাম দিয়ে ১৫টি বিক্রির সারি বানান (৩টি জেলা, ২-৩টি পণ্য)। Ctrl+T দিয়ে Table করুন, তারপর একটি Pivot Table বানান — District সারিতে, Product কলামে, Amount যোগফলে। এবার মূল টেবিলে একটি নতুন সারি যোগ করুন। Pivot Table কী দেখায়, Refresh-এর পর কী দেখায়?

    নতুন সারি যোগ করার পর Pivot Table-এর সংখ্যা বদলাবে না — সে মূল ডেটার পুরোনো একটি ছবি রেখেছে। PivotTable Analyze → Refresh (Alt+F5) দিলে নতুন সারি যুক্ত হবে। মূল ডেটা Excel Table হওয়ায় range বদলাতে হলো না — সাধারণ range হলে নতুন সারিটি range-এর বাইরে পড়ত, আর Refresh-এর পরেও আসত না (Change Data Source লাগত)। যেকোনো সংখ্যায় ডাবল-ক্লিক করে দেখুন — তার পেছনের সারিগুলো নতুন শিটে চলে আসবে।

  3. কর্মদিবস গোনা: আপনার নিজের অফিস বা প্রতিষ্ঠানের নিয়ম ধরে চলতি মাসের কর্মদিবস বের করুন — একবার NETWORKDAYS, একবার NETWORKDAYS.INTL (weekend কোড 7) দিয়ে, দুটি সরকারি ছুটির তারিখ একটি তালিকায় রেখে। তারপর ক্যালেন্ডার দেখে হাতে গুনে মিলিয়ে নিন।

    সূত্র: =NETWORKDAYS.INTL(DATE(2026,12,1), EOMONTH(DATE(2026,12,1),0), 7, H2:H3) — EOMONTH মাসের শেষ দিন নিজে বের করে দেয়। দুই সূত্রের ফল সাধারণত আলাদা হয়, কারণ সাধারণ NETWORKDAYS শুক্রবারকে কর্মদিবস আর রবিবারকে ছুটি ধরে। ছুটির তালিকার কোনো তারিখ যদি শুক্র বা শনিবারে পড়ে, INTL সংস্করণে সেটা আলাদা করে আর বাদ যায় না (আগেই ছুটি)। হাতে গোনার সাথে না মিললে খেয়াল করুন — শুরু আর শেষের দুটি দিনই হিসাবে ধরা হয়।

  4. ভুল-প্রতিরোধী নম্বর-শিট: Roll, Name, Marks কলামে একটি শিট বানান। Marks-এ data validation দিন (০ থেকে ১০০-এর পূর্ণসংখ্যা, Stop alert, একটি input message), আর conditional formatting দিন (৩৩-এর কম লাল)। তারপর ১২০, −৫, ৩৩ আর ৩২ লিখে পরীক্ষা করুন।

    Data → Data Validation → Allow: Whole number → between 0 and 100 → Error Alert-এ Style: Stop. ১২০ আর −৫ লিখলে Excel গ্রহণ করবে না। Home → Conditional Formatting → Highlight Cells Rules → Less Than → 33. ৩৩ লাল হবে না (৩৩ < ৩৩ মিথ্যা), ৩২ লাল হবে — সীমানার দুটি মান দিয়ে পরীক্ষা করাই নিয়ম ঠিক আছে কি না বোঝার সবচেয়ে ভালো উপায়। বাড়তি পরীক্ষা: অন্য কোথাও ১৫০ লিখে কপি করে Marks কলামে পেস্ট করুন — দেখবেন validation এটা আটকায় না; তখন Data Validation → Circle Invalid Data দিয়ে খুঁজে বের করুন।

নিজেকে যাচাই করুন

ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।

ক্রমExcel-এ জেলা ও মাস অনুযায়ী বিক্রির একটি Pivot Table বানানোর ধাপগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)

  1. 🧹 ডেটা সাজানো — একটি শিরোনাম-সারি, merge করা সেল নেই
  2. 📋 Ctrl+T দিয়ে Excel Table বানানো
  3. ➕ Insert → PivotTable → New Worksheet
  4. ↕️ District-কে Rows-এ, Month-কে Columns-এ টানা
  5. 🔢 Amount-কে Values-এ টানা (Sum)
  6. 🔄 নতুন ডেটা এলে Refresh

সূত্র =VLOOKUP("P107", B2:C6, 2)-এ শেষের FALSE নেই, আর P107 কোডটি তালিকায় নেই (কোডগুলো ছোট থেকে বড় ক্রমে সাজানো)। কী হওয়ার সম্ভাবনা সবচেয়ে বেশি?

  • সবসময় #N/A দেখাবে
  • সূত্রটি লেখাই যাবে না, Excel ত্রুটি দেবে
  • কোনো ত্রুটি ছাড়াই অন্য একটি পণ্যের দাম দেখাবে
  • ০ দেখাবে

পণ্যের তালিকায় নাম A কলামে আর কোড B কলামে। কোড দিয়ে নাম বের করতে কোনটি সরাসরি কাজ করবে?

  • =VLOOKUP(F2, A2:B6, 1, FALSE)
  • =XLOOKUP(F2, B2:B6, A2:A6)
  • =SUMIFS(A2:A6, B2:B6, F2)
  • =COUNTIF(B2:B6, F2)

বাংলাদেশের একটি অফিসে সাপ্তাহিক ছুটি শুক্র ও শনিবার। দুই তারিখের মাঝে কর্মদিবস গুনতে কোন সূত্র সঠিক?

  • =NETWORKDAYS(A2, B2, Holidays)
  • =B2-A2
  • =NETWORKDAYS.INTL(A2, B2, 1, Holidays)
  • =NETWORKDAYS.INTL(A2, B2, 7, Holidays)

৫০০ সারির বিক্রির ডেটা থেকে কোনো সূত্র না লিখে “জেলা অনুযায়ী মাসে মাসে মোট বিক্রি” টেবিল বানাতে Excel-এর কোন টুল সবচেয়ে উপযুক্ত?

  • Pivot Table
  • Data Validation
  • Goal Seek
  • Flash Fill

একটি অর্ডার শিটে কর্মচারীরা জেলার নাম ভুল বানানে লিখছেন (“Dahka”, “Dhaka ”). ভুল ঢোকা আগেই আটকানোর সবচেয়ে কার্যকর উপায় কোনটি?

  • Conditional formatting দিয়ে ভুল নাম লাল করা
  • শিটটি Protect Sheet করে দেওয়া
  • Data validation দিয়ে জেলার তালিকা থেকে ড্রপডাউন, Stop alert-সহ
  • প্রতি মাসে TRIM দিয়ে কলাম পরিষ্কার করা

১২ মাসে একটি দোকানের বিক্রি কীভাবে বেড়েছে বা কমেছে, তা দেখানোর জন্য কোন chart সবচেয়ে উপযুক্ত?

  • Pie chart
  • Line chart
  • Scatter chart
  • 3D pie chart

শব্দকোষ

লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন — অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:

মনে রাখুন

  1. বড় ডেটায় সেল ধরে হিসাব নয় — পুরো টেবিলকে প্রশ্ন; আর তার পূর্বশর্ত একটি পরিষ্কার টেবিল (Ctrl+T).
  2. XLOOKUP (Excel 2021/365, Google Sheets) বা পুরোনো Excel-এ INDEX/MATCH; VLOOKUP লিখলে শেষে সবসময় FALSE.
  3. একাধিক শর্তে SUMIFS/COUNTIFS; বাংলাদেশের কর্মদিবসে NETWORKDAYS.INTL(…, 7, …).
  4. Pivot Table = Rows, Columns, Values, Filters — আর নতুন ডেটায় Refresh; সময়ের প্রবণতায় Line, তুলনায় Column, অক্ষ ০ থেকে।
  5. Data validation ভুল ঢোকা আটকায়, conditional formatting চোখে ধরায়, Protect Sheet শুধু ভুল-প্রতিরোধ — আর AI-এর সূত্র পরীক্ষা-মান দিয়ে যাচাই করে তবেই ব্যবহার।

পরের পর্বে: হিসাব হলো, chart হলো — এবার সেটা মানুষের সামনে তুলে ধরার পালা। PowerPoint আর Google Slides দিয়ে কীভাবে এমন উপস্থাপনা বানাবেন, যা শ্রোতা মনে রাখে — স্লাইডে কম লেখা, স্পষ্ট chart আর একটি গল্প।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

এই পর্বটি শেয়ার করুন:
এই পর্বে ভুল পেয়েছেন? জানান