समझिए
1. डेटा (resources/sales)
| फ़ाइल | रो | कॉलम |
|---|---|---|
sales_data.csv |
50,000 | OrderID, OrderDate, FY, StoreName, City, Region, Product, Category, Salesperson, Qty, UnitPrice, Discount, Revenue, Cost |
sales_targets.csv |
48 | Month, Region, Target (FY2025-26) |
दोनों को Power Query (या From Text/CSV) से RAW शीट पर Tables tblSales और tblTargets के रूप में लोड करें। शीट: README | DASH | CALC | RAW_Sales | RAW_Targets।
2. Inputs (CALC)
| नाम | सेल में क्या |
|---|---|
lst_FY |
=SORT(UNIQUE(tblSales[FY]),,-1) |
lst_Regions |
=VSTACK("All", SORT(UNIQUE(tblSales[Region]))) |
inp_FY |
Data Validation लिस्ट =lst_FY → FY2025-26 |
inp_Region |
Data Validation लिस्ट =lst_Regions → All |
inp_ShowLY |
checkbox link (TRUE) |
k_Reg |
=IF(inp_Region="All","*",inp_Region) ("All" वाली तरकीब) |
inp_LYFY |
="FY"&(LEFT(RIGHT(inp_FY,7),4)-1)&"-"&RIGHT(LEFT(RIGHT(inp_FY,7),4),2) → FY2024-25 |
3. KPI ब्लॉक (CALC)
kpi_Rev =SUMIFS(tblSales[Revenue], tblSales[FY], inp_FY, tblSales[Region], k_Reg)
kpi_RevLY =SUMIFS(tblSales[Revenue], tblSales[FY], inp_LYFY, tblSales[Region], k_Reg)
kpi_YoY =IFERROR(kpi_Rev/kpi_RevLY-1, "")
kpi_Margin =IFERROR(1 - SUMIFS(tblSales[Cost], tblSales[FY], inp_FY, tblSales[Region], k_Reg)/kpi_Rev, "")
kpi_Orders =COUNTIFS(tblSales[FY], inp_FY, tblSales[Region], k_Reg)
kpi_Target =SUMIFS(tblTargets[Target], tblTargets[Region], k_Reg, tblTargets[Month], ">="&DATE(VALUE(MID(inp_FY,3,4)),4,1), tblTargets[Month], "<"&DATE(VALUE(MID(inp_FY,3,4))+1,4,1))
kpi_Ach =IF(kpi_Target=0, "", kpi_Rev/kpi_Target)
(tblTargets में सिर्फ़ FY2025-26 है; कई साल के targets के लिए FY शर्त जोड़ें।)
DASH पर कार्ड (मॉड्यूल 3 लेसन 1): Revenue ₹29.50 cr ▲ 11.0% · Margin 16.5% · Orders 26,309 ▲ 11.1% · Target 96.6%।
tblTargets[Month] को real date बनाएँ। FY2024-25 के targets नहीं हैं: “Target उपलब्ध नहीं” लिखें, achievement blank रखें और gauge छिपाएँ। Blank achievement में Filled helper 0 रहे; बाकी स्थिति में उसे 0 और 1.2 के बीच रखें। Blank को 0% न दिखाएँ। Heatmap selected FY में सभी regions की तुलना है: “सभी regions — FY comparison” label दें; Region selector बाकी sales visuals बदलता है।
4. Visual 1 — Revenue trend (CY बनाम LY)
CALC!B20 में महीनों की शुरुआत, C20 में CY, D20 में LY — बिल्कुल मॉड्यूल 4 लेसन 3 वाले फ़ॉर्मूले, k_Reg के साथ। नाम ch_Months, ch_CY, ch_LY से line चार्ट; CY accent में, LY ग्रे में; सिर्फ़ आख़िरी पॉइंट पर लेबल।
FY2025-26 (₹ लाख): Apr 191.9 · May 204.7 · Jun 216.5 · Jul 175.5 · Aug 232.2 · Sep 247.5 · Oct 360.1 · Nov 364.8 · Dec 267.0 · Jan 221.8 · Feb 207.4 · Mar 260.7। जुलाई को छोड़कर (175.5 बनाम 183.6) हर महीना पिछले साल से आगे — डैशबोर्ड पर इसका नोट देने लायक है।
5. Visual 2 — Top 5 प्रोडक्ट
k_Reg और N = 5 के साथ Top-N LET फ़ॉर्मूला (मॉड्यूल 4 लेसन 3)। सॉर्ट bar चार्ट, वैल्यू ₹ लाख में।
सारे रीजन: Laptop 991.0 · Smartphone 754.8 · Smartwatch 210.8 · Earbuds 178.6 · Study Table 160.4। (सिर्फ़ West: Laptop 240.2 · Smartphone 189.7 · Smartwatch 56.7 · Earbuds 46.9 · Study Table 41.5।)
6. Visual 3 — Region × Month heatmap
रीजन नीचे (A40 =SORT(UNIQUE(tblSales[Region]))), महीने आड़े (B39 =TOROW(B20#)), एक फ़ॉर्मूला 4 × 12 ग्रिड भरता है:
=SUMIFS(tblSales[Revenue], tblSales[Region], A40#, tblSales[OrderDate], ">="&B39#, tblSales[OrderDate], "<"&EDATE(B39#,1)) / 10^5
इसे DASH पर linked picture (मॉड्यूल 4 लेसन 4) या रेफ़रेंस सेल से दिखाएँ; सफ़ेद → accent 2-colour scale, 0 दशमलव, छोटा फ़ॉन्ट। सबसे गर्म सेल: North Oct 118.9 और Nov 118.8; सबसे ठंडा: East Jul 29.3।
7. Visual 4 — Salesperson leaderboard
=LET(sp, UNIQUE(tblSales[Salesperson]),
rev, SUMIFS(tblSales[Revenue], tblSales[Salesperson], sp, tblSales[FY], inp_FY, tblSales[Region], k_Reg),
ord, COUNTIFS(tblSales[Salesperson], sp, tblSales[FY], inp_FY, tblSales[Region], k_Reg),
st, XLOOKUP(sp, tblSales[Salesperson], tblSales[StoreName]),
t, FILTER(HSTACK(sp, st, ROUND(rev/10^5,1), ord), rev>0),
SORTBY(t, CHOOSECOLS(t,3), -1))
रैंक (SEQUENCE) और revenue पर data bars के साथ top 5 और bottom 3 (TAKE(x,5), TAKE(x,-3)) दिखाएँ।
सारे रीजन top 5 (₹ लाख): Amit (Karol Bagh) 251.8 · Pooja (Karol Bagh) 241.9 · Rohit (Connaught Place) 228.1 · Sneha (Connaught Place) 220.9 · Anjali (Andheri) 193.8। सबसे नीचे: Ritika (Salt Lake) 120.1।
8. Visual 5 — Target बनाम actual gauge
आधा-donut "progress gauge":
| Helper | फ़ॉर्मूला |
|---|---|
| Filled | =IF(kpi_Ach="",0,MAX(0,MIN(kpi_Ach,1.2))) |
| Empty | =1.2 - Filled |
| Hidden half | =1.2 |
इन तीनों का Doughnut चार्ट → Format Series → Angle of first slice 270°, hole size 65% → Hidden half: No fill → Filled: accent (या ≥ 100% पर हरा, दो series से), Empty: हल्का ग्रे। बीच में =TEXT(kpi_Ach,"0.0%") से जुड़ा टेक्स्ट बॉक्स → 96.6%, और subtitle "₹29.50 cr of ₹30.55 cr target"।
कई रीजन चाहिए तो bullet chart (मॉड्यूल 3 लेसन 2) बेहतर — gauge एक नंबर के लिए बहुत जगह लेता है। कई डैशबोर्ड कुल target के लिए एक gauge और रीजन के लिए bullets दिखाते हैं।
9. लेआउट और इंटरैक्टिविटी
┌ Title (dynamic) · Data as of 31-Mar-2026 [FY ▼] [Region ▼] [☑ LY] ┐
│ [Revenue] [Margin] [Orders] [Target gauge] │
│ [Revenue trend CY vs LY — line] │ [Top 5 products — bar] │
│ [Region × Month heatmap] │ [Leaderboard top 5 / bottom 3] │
└────────────────────────────────────────────────────────────────────────────┘
Dynamic टाइटल: ="Sales Dashboard — "&inp_FY&" | "&IF(inp_Region="All","All regions",inp_Region)। Insight लाइन: =IF(kpi_YoY="","No prior-year data","Revenue "&IF(kpi_YoY>=0,"up ","down ")&TEXT(ABS(kpi_YoY),"0.0%")&" vs LY")&" · "&IF(kpi_Ach="","Target not available",TEXT(kpi_Ach,"0.0%")&" of target")।
10. जाँच की चेकलिस्ट (answer key)
| चुनाव | Revenue | YoY | Achievement |
|---|---|---|---|
| FY2025-26, All | ₹29.50 cr | +11.0% | 96.6% |
| FY2025-26, West | ₹7.48 cr | +6.3% | 92.4% |
| FY2025-26, South | ₹7.14 cr | +15.1% | 100.1% |
| FY2024-25, All | ₹26.57 cr | (खाली — पहले का डेटा नहीं) | (targets सिर्फ़ FY25-26 के) |
यह भी जाँचें: Region बदलने पर region-scoped visuals अपडेट हों; labelled all-region heatmap स्थिर रहे; LY टिक हटाने पर ग्रे लाइन छिपती है; कहीं #N/A या #SPILL! नहीं; एक landscape पेज पर प्रिंट होता है।
आम गलतियाँ
inp_FY की जगह फ़ॉर्मूलों के अंदर "FY2025-26" फ़िक्स लिखना। जब कोई सेल्सपर्सन दो स्टोर में काम करे तब XLOOKUP से स्टोर लेना (यहाँ हर एक एक ही स्टोर में है — भरोसा करने से पहले COUNTIFS से जाँचें)। Gauge में असली नंबर न लिखा होना। बहुत सारे visuals — इस ब्रीफ़ को ठीक पाँच चाहिए।