Appearance
🧠 Case Study Buổi 4: Excel Dashboard & Sales Analysis
Bài học thực tế từ các doanh nghiệp hàng đầu và startup Việt Nam
Tổng quan
Trong buổi học này, chúng ta đã tìm hiểu về hàm tra cứu (VLOOKUP/XLOOKUP, INDEX/MATCH), thiết kế Excel Dashboard, Slicer, charting best practices và phân tích bán hàng (Revenue, Growth Rate, Pareto 80/20). Lý thuyết cho thấy dashboard không phải biểu đồ đẹp — mà là công cụ ra quyết định. Nhưng chỉ khi nhìn vào thực tế, bạn mới thấy được sức mạnh thực sự của một dashboard được thiết kế đúng cách.
Ba case study dưới đây minh họa cách Excel Dashboard và Sales Analysis được áp dụng ở 3 bối cảnh khác nhau — từ chuỗi bán lẻ lớn nhất Việt Nam (Thế Giới Di Động), tập đoàn FMCG toàn cầu (Unilever), đến startup Việt Nam giai đoạn đầu chưa có BI tool. Mỗi case study sẽ trả lời 3 câu hỏi cốt lõi: (1) Dữ liệu gì được sử dụng? (2) Phân tích bằng công cụ và phương pháp nào? (3) Quyết định kinh doanh nào đã thay đổi nhờ dashboard?
| # | Công ty | Vấn đề | Kỹ thuật chính |
|---|---|---|---|
| 1 | Thế Giới Di Động | Dashboard theo dõi KPI 5,000+ cửa hàng | VLOOKUP/XLOOKUP, Slicer, Dashboard design, Revenue analysis |
| 2 | Unilever | Sales analysis Excel cho hệ thống distributor | Pareto 80/20, SUMIFS/COUNTIFS, Growth Rate MoM/YoY, Charting |
| 3 | Startup VN | Tự build sales dashboard khi chưa có BI tool | INDEX/MATCH, IF/IFS, Dynamic Chart, Dashboard từ zero |
Case Study 1: Thế Giới Di Động — Dashboard theo dõi KPI 5,000+ cửa hàng
🏷️ Thông tin
| Tiêu chí | Chi tiết |
|---|---|
| Công ty | Công ty Cổ phần Đầu tư Thế Giới Di Động (Mobile World Investment Corporation — MWG) |
| Ngành | Retail — Bán lẻ điện tử, điện máy, tạp hóa |
| Quy mô | 5,000+ cửa hàng (Thế Giới Di Động, Điện Máy Xanh, Bách Hóa Xanh), ~80,000 nhân viên, revenue ~120,000 tỷ VNĐ (2024) |
| Thị trường | Việt Nam, Campuchia |
| Chủ đề DA liên quan | VLOOKUP/XLOOKUP, Dashboard design, Slicer, Revenue KPI tracking, Charting best practices |
📋 Bối cảnh
Thế Giới Di Động (MWG) là chuỗi bán lẻ lớn nhất Việt Nam với hơn 5,000 cửa hàng trải dài 63 tỉnh thành, vận hành 3 chuỗi chính: Thế Giới Di Động (điện thoại, laptop), Điện Máy Xanh (điện máy gia dụng), và Bách Hóa Xanh (tạp hóa hiện đại). Mỗi ngày, hệ thống xử lý hàng trăm nghìn giao dịch — từ bán hàng, trả hàng, đến chuyển kho.
Ban điều hành MWG cần giám sát hiệu suất kinh doanh theo thời gian thực trên nhiều chiều: theo chuỗi, theo vùng miền, theo cửa hàng, theo nhóm sản phẩm, theo nhân viên bán hàng. Trước giai đoạn triển khai hệ thống BI quy mô lớn (2019–2021), phần lớn các báo cáo cấp vùng (Regional Manager) và cấp cửa hàng (Store Manager) vẫn dựa trên Excel Dashboard — vì đây là công cụ mọi nhân viên đều biết dùng, triển khai nhanh, và không cần đầu tư hạ tầng IT.
Bộ phận Business Analysis phải xây dựng hệ thống dashboard Excel để hàng tuần gửi báo cáo hiệu suất cho ~200 Regional Managers và ~5,000 Store Managers — mỗi người nhìn dữ liệu khác nhau tùy vùng và cửa hàng.
⚡ Thách thức
- Quy mô dữ liệu khổng lồ cho Excel: Mỗi tháng có ~15 triệu dòng giao dịch từ 5,000+ cửa hàng. Một file daily sales report có ~500,000 dòng × 20 cột. Excel giới hạn ~1 triệu dòng — phải chia nhỏ và liên kết dữ liệu bằng lookup functions.
- Liên kết dữ liệu đa bảng: Dữ liệu bán hàng (Sales), dữ liệu sản phẩm (Product Master), dữ liệu cửa hàng (Store Master), dữ liệu nhân viên (Employee Master) nằm ở 4 sheet/file khác nhau → cần VLOOKUP/XLOOKUP để ghép.
- Khác biệt KPI theo chuỗi: Thế Giới Di Động đo KPI bằng Revenue per employee, Điện Máy Xanh đo bằng Revenue per sqm, Bách Hóa Xanh đo bằng Basket size — dashboard phải linh hoạt hiển thị KPI đúng theo từng chuỗi.
- 5,000 báo cáo khác nhau từ 1 template: Mỗi Store Manager chỉ cần thấy dữ liệu cửa hàng mình → cần Slicer hoặc cơ chế lọc dynamic thay vì tạo 5,000 file riêng.
- Tốc độ ra quyết định: Ban điều hành cần biết cửa hàng nào underperform trong ngày, không phải cuối tháng. Dashboard phải cập nhật nhanh, dễ đọc, highlight anomaly tự động.
🛠️ Giải pháp
Dữ liệu gì?
- Sales Transaction: transaction_id, store_id, date, product_id, quantity, unit_price, total_amount, employee_id, payment_method — ~500,000 dòng/ngày
- Product Master: product_id, product_name, category, subcategory, brand, cost_price, retail_price — ~50,000 SKUs
- Store Master: store_id, store_name, chain (TGDD/DMX/BHX), region, province, city, area_sqm, open_date, store_manager_id — ~5,000 records
- Employee Master: employee_id, employee_name, role, store_id, hire_date — ~80,000 records
- Target (KPI mục tiêu): store_id, month, revenue_target, traffic_target, conversion_target
Phân tích bằng gì?
Bước 1: Liên kết dữ liệu bằng VLOOKUP/XLOOKUP
Bảng Sales Transaction chỉ chứa mã (store_id, product_id, employee_id). Để phân tích, cần tra cứu thông tin bổ sung:
// Tra cứu tên cửa hàng từ Store Master
=VLOOKUP(B2, StoreMaster!$A:$D, 2, FALSE)
// Tra cứu chuỗi (TGDD/DMX/BHX) — XLOOKUP linh hoạt hơn
=XLOOKUP(B2, StoreMaster!$A:$A, StoreMaster!$D:$D, "Unknown")
// Tra cứu nhóm sản phẩm
=XLOOKUP(D2, ProductMaster!$A:$A, ProductMaster!$C:$C, "Uncategorized")
// Tra cứu vùng miền
=INDEX(StoreMaster!$E:$E, MATCH(B2, StoreMaster!$A:$A, 0))Kết hợp thêm cột tính toán:
// Doanh thu = Quantity × Unit Price
=F2 * G2
// Lợi nhuận gộp = Doanh thu - (Quantity × Cost Price từ Product Master)
=H2 - F2 * XLOOKUP(D2, ProductMaster!$A:$A, ProductMaster!$F:$F, 0)
// Phân hạng cửa hàng dựa trên doanh thu
=IFS(H2 >= 500000000, "Tier A", H2 >= 200000000, "Tier B", H2 >= 50000000, "Tier C", TRUE, "Tier D")Bước 2: Tính KPI bằng SUMIFS/COUNTIFS/AVERAGEIFS
| KPI | Công thức | Ý nghĩa |
|---|---|---|
| Revenue by Store by Month | =SUMIFS(Sales!$H:$H, Sales!$B:$B, store_id, Sales!$C:$C, ">="&start_date, Sales!$C:$C, "<="&end_date) | Tổng doanh thu 1 cửa hàng trong tháng |
| Số giao dịch | =COUNTIFS(Sales!$B:$B, store_id, Sales!$C:$C, ">="&start_date) | Số lượt khách mua |
| Average Basket Size | =AVERAGEIFS(Sales!$H:$H, Sales!$B:$B, store_id) | Giá trị trung bình mỗi đơn |
| Revenue per Employee | =SUMIFS(...) / COUNTIFS(Employee!$D:$D, store_id) | Doanh thu trên mỗi nhân viên |
| % Achievement | =Actual_Revenue / VLOOKUP(store_id, Target!$A:$C, 3, FALSE) | % hoàn thành KPI mục tiêu |
| Growth MoM | =(Revenue_this_month - Revenue_last_month) / Revenue_last_month | Tăng trưởng so với tháng trước |
Bước 3: Thiết kế Dashboard với Slicer
Dashboard layout theo nguyên tắc "Z-pattern" (mắt người đọc từ trái-trên → phải-trên → trái-dưới → phải-dưới):
┌──────────────────────────────────────────────────────┐
│ [Slicer: Chuỗi] [Slicer: Vùng] [Timeline: Tháng] │ ← Bộ lọc dynamic
├────────────────┬────────────────┬────────────────────┤
│ 💰 Tổng DT │ 📈 Growth MoM │ 🎯 % Achievement │ ← KPI Cards (Scorecard)
│ 125.8 tỷ │ +12.3% │ 94.7% │
├────────────────┴────────────────┴────────────────────┤
│ [Line Chart: Revenue Trend 12 tháng] │ ← Xu hướng chính
├──────────────────────┬──────────────────────────────-┤
│ [Bar Chart: Top 10 │ [Pie Chart: Revenue by │ ← Chi tiết
│ cửa hàng] │ Category] │
├──────────────────────┴──────────────────────────────-┤
│ [Table: Bottom 10 cửa hàng underperform] │ ← Action items
└──────────────────────────────────────────────────────┘Kỹ thuật Slicer:
- Tạo Pivot Table từ bảng Sales đã lookup đầy đủ thông tin
- Insert Slicer → chọn trường Chain, Region, Province
- Insert Timeline → chọn trường Date
- Connect Slicer/Timeline đến tất cả Pivot Charts trên dashboard → 1 click lọc = toàn bộ dashboard thay đổi
Bước 4: Charting Best Practices
| Nguyên tắc | Áp dụng tại MWG |
|---|---|
| Tufte: Maximize data-ink ratio | Loại bỏ gridlines, legend thừa, 3D effects — chỉ giữ data và labels cần thiết |
| IBCS: Consistent color coding | Xanh = actual, Xám = target/budget, Đỏ = negative variance |
| Highlight anomaly | Conditional formatting: cửa hàng đạt <80% target → highlight đỏ tự động |
| KPI Cards trên cùng | Số lớn + mũi tên tăng/giảm + so sánh kỳ trước — sếp nhìn 3 giây là nắm tình hình |
| Sparklines cho xu hướng mini | Cột sparkline bên cạnh bảng Top/Bottom cửa hàng — thấy ngay xu hướng 12 tháng |
Bước 5: Conditional Formatting cho Early Warning
// Highlight cửa hàng doanh thu giảm >20% so với tháng trước
=IF(Growth_MoM < -0.2, TRUE, FALSE) → Format: Fill Red + Bold
// Highlight sản phẩm chiếm >80% doanh thu (Pareto)
Dùng Cumulative % column → Conditional Formatting rule: <=80% → Green, >80% → Grey📊 Kết quả
| Chỉ số | Trước (báo cáo thủ công) | Sau (Excel Dashboard + Slicer) |
|---|---|---|
| Thời gian tạo báo cáo tuần | 3–5 ngày (team 8 người) | 4–6 giờ (team 3 người) |
| Thời gian Regional Manager đọc báo cáo | 30–45 phút/lần | 5–10 phút (tương tác Slicer) |
| Phát hiện cửa hàng underperform | Cuối tháng (quá muộn) | Trong tuần (kịp can thiệp) |
| Số lượng báo cáo custom | 200+ file riêng lẻ | 1 template + Slicer lọc dynamic |
| Tỷ lệ cửa hàng đạt KPI | 72% | 81% (nhờ phát hiện sớm + hành động kịp thời) |
| Chi phí BI tool (giai đoạn đầu) | $0 (Excel có sẵn) | Tiết kiệm ~$200,000/năm so với triển khai BI sớm |
Dashboard Excel của MWG giúp Regional Managers phát hiện cửa hàng giảm doanh thu bất thường trong tuần thay vì cuối tháng, kịp thời điều chuyển nhân sự, đẩy promotion, hoặc kiểm tra vấn đề vận hành. Khi MWG chuyển sang hệ thống BI (Power BI/Tableau) từ 2020, logic dashboard Excel trở thành blueprint cho thiết kế dashboard BI — chứng tỏ tư duy thiết kế dashboard quan trọng hơn công cụ.
💡 Bài học cho Data Analyst Việt Nam
- Excel Dashboard là bước đệm trước BI tool — không phải thay thế. MWG dùng Excel Dashboard hiệu quả trong 3–4 năm trước khi chuyển sang BI. Nếu công ty bạn chưa có BI, đừng chờ — hãy build dashboard Excel trước, logic và layout sẽ tái sử dụng được khi upgrade.
- VLOOKUP/XLOOKUP là "keo dán" dữ liệu. Không có lookup functions, bạn không thể liên kết Sales ↔ Product ↔ Store ↔ Employee. Đây là kỹ năng #1 mà mọi DA cần thành thạo trước dashboard.
- Slicer biến 5,000 báo cáo thành 1 file. Thay vì tạo file riêng cho mỗi cửa hàng/vùng, 1 dashboard + Slicer cho phép mỗi người tự lọc dữ liệu mình cần. Đây là tư duy self-service analytics — giảm tải cho DA team.
Case Study 2: Unilever — Sales Analysis Excel cho hệ thống Distributor
🏷️ Thông tin
| Tiêu chí | Chi tiết |
|---|---|
| Công ty | Unilever Vietnam (thuộc Unilever PLC) |
| Ngành | FMCG — Fast-Moving Consumer Goods (hàng tiêu dùng nhanh) |
| Quy mô | ~150 nhà phân phối (distributor) tại Việt Nam, phục vụ ~300,000 điểm bán lẻ, revenue ~20,000 tỷ VNĐ/năm |
| Thị trường | Việt Nam — 63 tỉnh thành, từ thành thị đến nông thôn |
| Chủ đề DA liên quan | Sales analysis, Pareto 80/20, Revenue breakdown, Growth Rate (MoM/QoQ/YoY), SUMIFS/COUNTIFS, Charting best practices |
📋 Bối cảnh
Unilever là một trong những tập đoàn FMCG lớn nhất thế giới, sở hữu các thương hiệu quen thuộc tại Việt Nam: OMO, Sunsilk, Knorr, P/S, Lifebuoy, Cif, Comfort. Khác với các công ty công nghệ bán hàng online trực tiếp (D2C), Unilever phân phối sản phẩm qua mô hình Distributor → Retailer → Consumer:
Unilever → 150 Distributor → 300,000 Retailer → 100M+ ConsumerMỗi distributor là một doanh nghiệp độc lập, sử dụng hệ thống quản lý riêng (DMS — Distributor Management System). Dữ liệu bán hàng từ distributor được gửi về Unilever dưới dạng file Excel hàng tuần/tháng. Bộ phận Trade Marketing & Sales Analytics tại Unilever Vietnam cần phân tích dữ liệu bán hàng từ 150 distributor để trả lời các câu hỏi kinh doanh then chốt:
- Doanh thu tháng này tăng hay giảm so với cùng kỳ? Vùng nào tăng trưởng, vùng nào sụt giảm?
- Sản phẩm nào đóng góp nhiều nhất (Pareto 80/20)? SKU nào đang "chết" (slow-moving)?
- Distributor nào hoạt động hiệu quả? Distributor nào cần hỗ trợ?
- Mùa vụ ảnh hưởng ra sao (seasonality)? Cần stock bao nhiêu hàng cho Tết?
⚡ Thách thức
- 150 file Excel, 150 format khác nhau: Mỗi distributor gửi báo cáo theo template riêng — cột khác tên, thứ tự khác nhau, có distributor gửi file
.xls,.xlsx, thậm chí.csv. Tổng hợp thủ công mất 5–7 ngày mỗi tháng. - 300,000+ SKU-level records mỗi tháng: Unilever có ~2,000 SKUs × 150 distributor × 12 tháng = hàng triệu dòng dữ liệu. Phân tích cần aggregate theo nhiều chiều: region, channel, brand, SKU, period.
- Sales analysis đa tầng: Ban Giám đốc cần nhìn Revenue tổng, Regional Manager cần nhìn Revenue theo vùng, Brand Manager cần nhìn Revenue theo brand, Key Account Manager cần nhìn theo từng distributor → 1 bộ dữ liệu phải phục vụ nhiều góc nhìn.
- Pareto 80/20 cho portfolio optimization: Unilever có ~2,000 SKUs nhưng liệu bao nhiêu SKU thực sự tạo ra 80% doanh thu? SKU nào nên ngừng sản xuất? Cần phân tích Pareto chính xác.
- Growth Rate phải so sánh đúng context: Doanh thu tháng 2 (Tết) luôn đột biến — so sánh MoM sẽ misleading. Cần so sánh YoY (cùng kỳ năm trước) mới phản ánh đúng tăng trưởng thực.
🛠️ Giải pháp
Dữ liệu gì?
- Secondary Sales Data (từ distributor): distributor_id, date, retailer_id, product_id (SKU), quantity_sold, unit_price, total_value, channel (GT/MT/Online), province
- Product Master: SKU_code, product_name, brand, category (Home Care/Personal Care/Foods), subcategory, pack_size, unit_cost
- Distributor Master: distributor_id, distributor_name, region (North/Central/South), assigned_provinces, tier (A/B/C)
- Sales Target: region, brand, month, target_value
- Tổng: ~300,000 dòng/tháng × 12 tháng = ~3.6 triệu dòng/năm
Phân tích bằng gì?
Bước 1: Chuẩn hóa & liên kết dữ liệu
Sau khi tổng hợp dữ liệu từ 150 distributor vào 1 master file (quy trình đã học ở Buổi 3), thêm cột lookup:
// Tra cứu Brand từ Product Master
=XLOOKUP(D2, ProductMaster!$A:$A, ProductMaster!$C:$C, "Unknown Brand")
// Tra cứu Region từ Distributor Master
=VLOOKUP(A2, DistributorMaster!$A:$C, 3, FALSE)
// Tra cứu Channel type
=XLOOKUP(E2, ChannelMapping!$A:$A, ChannelMapping!$B:$B, "Other")
// Phân loại doanh thu theo hạng
=IFS(H2 >= 10000000000, "Tier 1 (>10B)", H2 >= 5000000000, "Tier 2 (5-10B)", H2 >= 1000000000, "Tier 3 (1-5B)", TRUE, "Tier 4 (<1B)")Bước 2: Revenue Breakdown Analysis
| Phân tích | Công thức Excel | Output |
|---|---|---|
| Total Revenue by Region | =SUMIFS(Sales!$H:$H, Sales!$Region:$Region, "South") | Revenue Nam/Trung/Bắc |
| Revenue by Brand | =SUMIFS(Sales!$H:$H, Sales!$Brand:$Brand, "OMO") | Revenue từng brand |
| Revenue by Channel | =SUMIFS(Sales!$H:$H, Sales!$Channel:$Channel, "GT") | GT vs MT vs Online |
| Revenue per Distributor | =SUMIFS(...) / COUNTIFS(...) | Hiệu suất từng distributor |
| Market share by Brand | =SUMIFS(brand_revenue) / SUM(total_revenue) | % đóng góp từng brand |
Bước 3: Growth Rate Analysis (MoM / QoQ / YoY)
// Month-over-Month Growth
=( SUMIFS(Sales!$H:$H, Sales!$Month:$Month, current_month)
- SUMIFS(Sales!$H:$H, Sales!$Month:$Month, previous_month) )
/ SUMIFS(Sales!$H:$H, Sales!$Month:$Month, previous_month)
// Year-over-Year Growth (chính xác hơn cho mùa vụ)
=( SUMIFS(Sales!$H:$H, Sales!$YearMonth:$YearMonth, "2025-01")
- SUMIFS(Sales!$H:$H, Sales!$YearMonth:$YearMonth, "2024-01") )
/ SUMIFS(Sales!$H:$H, Sales!$YearMonth:$YearMonth, "2024-01")
// Quarter-over-Quarter
=( SUMIFS(Q_current) - SUMIFS(Q_previous) ) / SUMIFS(Q_previous)Ví dụ kết quả Growth Analysis:
| Tháng | Revenue (tỷ VNĐ) | MoM Growth | YoY Growth |
|---|---|---|---|
| 01/2025 (Tết) | 2,850 | +62% ⬆️ | +8.5% ⬆️ |
| 02/2025 | 1,520 | -47% ⬇️ | +6.2% ⬆️ |
| 03/2025 | 1,780 | +17% ⬆️ | +9.1% ⬆️ |
→ MoM growth tháng 2 giảm -47% trông "thảm họa" nhưng YoY growth +6.2% cho thấy vẫn tăng trưởng — chỉ là hiệu ứng mùa vụ sau Tết. Bài học: Luôn dùng YoY khi có yếu tố seasonality.
Bước 4: Pareto 80/20 Analysis
Phân tích Pareto để xác định những SKU đóng góp 80% doanh thu:
// Bước 4.1: Tính Revenue per SKU
Pivot Table: Rows = SKU_Code | Values = SUM of Total_Value
→ Sort descending by Revenue
// Bước 4.2: Tính Cumulative Revenue %
=SUM($B$2:B2) / SUM($B:$B) // Running cumulative percentage
// Bước 4.3: Phân loại Pareto
=IF(Cumulative_% <= 0.8, "Top 80% (Focus)", "Bottom 20% (Review)")Kết quả Pareto tại Unilever Vietnam:
| Nhóm | Số SKU | % tổng SKU | % Revenue | Ví dụ |
|---|---|---|---|---|
| A — Top 80% | ~320 | 16% | 80% | OMO Matic 4.5kg, Sunsilk 640ml, Knorr Hạt Nêm 900g |
| B — Next 15% | ~580 | 29% | 15% | Comfort 800ml, P/S 230g, Cif 750ml |
| C — Bottom 5% | ~1,100 | 55% | 5% | SKU size nhỏ, variant ít phổ biến, sản phẩm mới chưa pickup |
→ 16% SKU tạo ra 80% doanh thu — hoàn toàn tuân theo nguyên tắc Pareto. Unilever quyết định ngừng sản xuất 200+ SKU trong nhóm C (slow-moving, tồn kho cao) và tập trung nguồn lực vào nhóm A.
Bước 5: Dashboard Charting Best Practices
| Chart Type | Dùng cho | Why |
|---|---|---|
| Line Chart | Revenue trend 12 tháng (MoM) | Thể hiện xu hướng thời gian — mắt dễ theo dõi tăng/giảm |
| Combo Chart (Column + Line) | Revenue (column) + YoY Growth % (line — secondary axis) | So sánh giá trị tuyệt đối + tốc độ tăng trưởng cùng lúc |
| Stacked Bar | Revenue by Region (North/Central/South) | So sánh thành phần đóng góp của từng vùng |
| Pareto Chart (Bar + Line) | SKU Revenue + Cumulative % | Xác định điểm cutoff 80% trên biểu đồ |
| Heatmap (Conditional Formatting) | Growth YoY by Region × Brand | Nhìn nhanh vùng nào + brand nào tăng/giảm |
📊 Kết quả
| Chỉ số | Trước | Sau |
|---|---|---|
| Thời gian tổng hợp dữ liệu 150 NPP | 5–7 ngày | 1 ngày (template chuẩn + lookup tự động) |
| Thời gian phân tích sales monthly | 3–4 ngày | 4–6 giờ |
| Phát hiện SKU slow-moving | Cuối quý (review thủ công) | Hàng tháng (Pareto tự động) |
| Số SKU bị ngừng sản xuất (rationalization) | — | 200+ SKU nhóm C → giảm chi phí tồn kho ~15 tỷ VNĐ/năm |
| Accuracy của sales forecast (nhờ YoY trend) | ±25% | ±12% |
| Distributor đạt target | 58% | 71% (nhờ phát hiện sớm NPP underperform) |
Hệ thống Sales Analysis Excel của Unilever Vietnam cho phép Brand Manager nhìn thấy brand mình đang tăng hay giảm ở vùng nào, Sales Manager biết distributor nào cần hỗ trợ, và Supply Chain team dự báo nhu cầu chính xác hơn nhờ phân tích seasonality YoY. Kết quả: Unilever Vietnam đạt tăng trưởng doanh thu +7–9% YoY liên tục 3 năm, vượt trung bình ngành FMCG Việt Nam (~4–5%).
💡 Bài học cho Data Analyst Việt Nam
- Pareto 80/20 là công cụ phân tích portfolio mạnh nhất trong FMCG. Chỉ với SUMIFS + Cumulative % + Sorting, bạn đã có insight đủ mạnh để đề xuất ngừng sản xuất SKU, tập trung nguồn lực. Không cần AI — chỉ cần Excel và tư duy phân tích.
- MoM Growth bị nhiễu bởi mùa vụ — luôn bổ sung YoY Growth. Đây là sai lầm phổ biến nhất của DA mới vào nghề FMCG: nhìn MoM giảm 47% tháng 2 mà hoảng loạn, trong khi YoY vẫn tăng. Hiểu business context (Tết, mùa hè, Back-to-school) quan trọng hơn công thức.
- SUMIFS là "hàm vạn năng" cho Sales Analysis. Một hàm SUMIFS với 3–4 điều kiện (region, brand, channel, period) có thể trả lời 90% câu hỏi sales analysis. Thành thạo SUMIFS = thành thạo phân tích doanh thu.
Case Study 3: Startup VN — Tự build Sales Dashboard khi chưa có BI tool
🏷️ Thông tin
| Tiêu chí | Chi tiết |
|---|---|
| Công ty | FreshMart (tên thay đổi) — Startup thương mại điện tử nông sản sạch |
| Ngành | E-commerce / Agritech |
| Quy mô | 35 nhân viên, ~500 đơn hàng/ngày, revenue ~2.5 tỷ VNĐ/tháng, vận hành 18 tháng |
| Thị trường | TP.HCM & Hà Nội — bán online qua website + app + Shopee/Lazada |
| Chủ đề DA liên quan | Dashboard design từ zero, INDEX/MATCH, IF/IFS, Dynamic Chart, Sales analysis end-to-end khi resource hạn chế |
📋 Bối cảnh
FreshMart là startup Việt Nam chuyên bán nông sản sạch online — rau củ, trái cây, thịt cá từ các farm liên kết, giao hàng trong ngày tại TP.HCM và Hà Nội. Sau 18 tháng hoạt động, startup đã đạt ~500 đơn/ngày với revenue ~2.5 tỷ VNĐ/tháng. Tuy nhiên, CEO nhận ra rằng các quyết định kinh doanh vẫn đang dựa trên "cảm giác":
- "Hình như rau xà lách bán chạy hơn tuần trước?"
- "Hình như TP.HCM bán tốt hơn Hà Nội?"
- "Hình như chi phí marketing tháng này cao quá?"
Startup cần một Sales Dashboard để ra quyết định bằng dữ liệu. Nhưng với ngân sách hạn chế (startup giai đoạn Seed, tổng funding ~$500K), việc đầu tư BI tool như Power BI Premium ($20/user/tháng × 35 người = $8,400/năm) hay Tableau ($75/user/tháng) là quá sức. Team chỉ có 1 người phụ trách data (thực tế là Marketing Manager kiêm nhiệm) với kỹ năng Excel trung bình.
CEO quyết định: "Build sales dashboard bằng Excel trước. Khi nào Series A xong, hãy tính chuyện BI tool."
⚡ Thách thức
- Không có Data Engineer hay DA chuyên trách: Người build dashboard là Marketing Manager — biết Excel cơ bản (SUM, VLOOKUP) nhưng chưa từng tạo dashboard. Cần giải pháp đơn giản, maintainable, không cần VBA/macro phức tạp.
- Dữ liệu phân tán 4 nguồn: Đơn hàng từ website (Google Sheets export), Shopee (Seller Center export CSV), Lazada (Seller Center export), giao hàng nội bộ (Excel file thủ công) — 4 file khác format, khác cột.
- KPI chưa được định nghĩa rõ: CEO muốn "dashboard bán hàng" nhưng không ai biết cần đo chính xác những gì. Cần thiết kế KPI framework phù hợp với startup e-commerce.
- Budget gần như bằng 0 cho tool: Chỉ có Google Sheets (miễn phí) và Microsoft Excel (đã có license sẵn). Không có budget cho add-in hay tool bổ sung.
- Dashboard phải "sếp-friendly": CEO là dân kinh doanh, không biết đọc bảng dữ liệu thô. Dashboard phải trực quan, đơn giản, nhìn 10 giây hiểu cốt lõi.
🛠️ Giải pháp
Dữ liệu gì?
- Orders: order_id, order_date, channel (Website/Shopee/Lazada/Internal), customer_id, city (HCM/HN), product_id, quantity, unit_price, total_amount, shipping_fee, discount, payment_method, order_status (Completed/Cancelled/Returned)
- Product List: product_id, product_name, category (Rau/Trái cây/Thịt cá/Khác), supplier, cost_price
- Customer List: customer_id, name, phone, city, first_order_date, total_orders
- Quy mô: ~15,000 đơn hàng/tháng × 12 cột = ~180,000 dòng/năm (hoàn toàn trong giới hạn Excel)
Phân tích bằng gì?
Bước 1: Tổng hợp 4 nguồn vào 1 Master Sheet
Chuẩn hóa cột từ 4 nguồn khác nhau vào 1 format thống nhất:
| Cột chuẩn | Website | Shopee | Lazada | Internal |
|---|---|---|---|---|
| order_id | Order ID | Mã đơn hàng | Order Number | Mã ĐH |
| order_date | Created At | Ngày đặt hàng | Create Time | Ngày |
| total_amount | Total | Tổng tiền | Item Price | Tổng |
| channel | (thêm cột "Website") | (thêm cột "Shopee") | (thêm cột "Lazada") | (thêm cột "Internal") |
Sau chuẩn hóa, dùng lookup để bổ sung thông tin:
// Tra cứu Category từ Product List
=INDEX(ProductList!$C:$C, MATCH(E2, ProductList!$A:$A, 0))
// Tra cứu Cost Price để tính Gross Profit
=INDEX(ProductList!$E:$E, MATCH(E2, ProductList!$A:$A, 0))
// Tính Gross Profit per Order
=Total_Amount - (Quantity × Cost_Price) - Shipping_Fee - Discount
// Phân loại khách hàng
=IF(COUNTIFS(Orders!$D:$D, D2) >= 5, "Loyal", IF(COUNTIFS(Orders!$D:$D, D2) >= 2, "Returning", "New"))Bước 2: Định nghĩa KPI Framework cho Startup E-commerce
| KPI | Công thức | Tại sao quan trọng |
|---|---|---|
| Total Revenue | =SUMIFS(amount, status, "Completed") | Doanh thu thực (loại đơn hủy/trả) |
| Number of Orders | =COUNTIFS(status, "Completed") | Quy mô hoạt động |
| Average Order Value (AOV) | =Revenue / Orders | Giá trị trung bình đơn → cơ sở upsell |
| Gross Profit Margin | =SUM(Gross_Profit) / Revenue | Startup cần biết lãi thực bao nhiêu |
| Customer Acquisition Cost (CAC) | =Marketing_Spend / New_Customers | Chi phí thu hút 1 khách mới |
| Repeat Purchase Rate | =Returning_Customers / Total_Customers | Khách quay lại = sustainable growth |
| Cancel Rate | =Cancelled_Orders / Total_Orders | Tỷ lệ hủy đơn — vấn đề operations |
| Revenue by Channel | =SUMIFS(amount, channel, "Shopee") | Kênh nào hiệu quả nhất |
| Revenue by City | =SUMIFS(amount, city, "HCM") | HCM vs HN — đầu tư vào đâu |
| Top 10 Products | Pivot Table + Sort descending | Sản phẩm hero cần stock nhiều |
Bước 3: Build Dashboard Layout — "CEO Dashboard"
Thiết kế theo nguyên tắc "5-second rule" — CEO phải nắm được tình hình kinh doanh trong 5 giây đầu tiên:
┌──────────────────────────────────────────────────────────┐
│ FRESHMART SALES DASHBOARD — Tháng 01/2026 │
│ [Slicer: Tháng] [Slicer: City] [Slicer: Channel] │
├──────────┬──────────┬──────────┬───────────┬────────────┤
│ 💰 Revenue│ 📦 Orders │ 🛒 AOV │ 📈 Growth │ 💵 Margin │
│ 2.5 tỷ │ 15,200 │ 164K │ +18% MoM │ 32% │
│ ▲ vs LM │ ▲ +12% │ ▲ +5% │ ▲ vs LY │ ▼ -2pp │
├──────────┴──────────┴──────────┴───────────┴────────────┤
│ [Line Chart: Daily Revenue — 30 ngày gần nhất] │
├──────────────────────────┬──────────────────────────────-┤
│ [Donut Chart: Revenue │ [Bar Chart: Revenue │
│ by Channel] │ by Category] │
│ Website: 35% │ Rau: 40% │
│ Shopee: 40% │ Trái cây: 25% │
│ Lazada: 15% │ Thịt cá: 20% │
│ Internal: 10% │ Khác: 15% │
├──────────────────────────┴──────────────────────────────-┤
│ [Table: Top 10 Products by Revenue] │
│ [Conditional Formatting: ▲ Green if growth, ▼ Red if │
│ decline vs last month] │
└──────────────────────────────────────────────────────────┘Bước 4: Dynamic Chart với Named Ranges + Data Validation
Vì startup không dùng Pivot Table nâng cao, team dùng cách tiếp cận đơn giản hơn:
// Tạo dropdown chọn tháng bằng Data Validation
Cell B1: Data Validation → List → "01/2026, 02/2026, 03/2026..."
// Named Range dynamic theo tháng được chọn
Revenue_Selected = SUMIFS(Orders!$J:$J, Orders!$B:$B, ">="&DATE(2026,B1,1),
Orders!$B:$B, "<"&DATE(2026,B1+1,1), Orders!$K:$K, "Completed")
// Chart source liên kết đến ô tính toán → thay đổi dropdown = chart tự động updateHoặc đơn giản hơn: Tạo Pivot Table + Slicer + Pivot Chart — cách này nhanh nhất cho người mới:
- Select toàn bộ Master Data → Insert Pivot Table
- Drag các trường vào Rows/Columns/Values
- Insert Slicer cho Month, Channel, City
- Insert Pivot Chart (Line, Bar, Donut) linked to Pivot Table
- Arrange tất cả trên 1 sheet "Dashboard" → hide gridlines, add title
Bước 5: Phân tích Pareto cho Product Portfolio
// Top bao nhiêu sản phẩm tạo ra 80% doanh thu?
Pivot Table: Rows = Product Name | Values = SUM of Total Amount
Sort descending → Add Calculated Field: Running Total %
Kết quả:
- Top 15 sản phẩm (trong 200+ SKU) = 80% revenue
- "Rau xà lách Đà Lạt" đứng #1 chiếm 8% tổng doanh thu
- 120 SKU bottom chỉ đóng góp 5% → cần review: có nên giữ?📊 Kết quả
| Chỉ số | Trước (không có dashboard) | Sau (Excel Dashboard) |
|---|---|---|
| Thời gian CEO nắm tình hình | Hỏi 3–4 người, mất 1–2 giờ | Mở Excel, 5 giây nhìn KPI cards |
| Frequency báo cáo | Khi nào CEO hỏi thì mới làm | Cập nhật hàng ngày (15 phút/ngày) |
| Phát hiện kênh bán kém hiệu quả | Không biết (cảm giác Shopee > Lazada) | Dữ liệu chứng minh: Shopee margin thấp hơn 8% do phí sàn |
| Quyết định ngừng bán sản phẩm | "Cảm giác bán chậm" → chờ hết hạn | Pareto: 120 SKU đóng góp 5% → ngừng 80 SKU → giảm 30% phí cold storage |
| Chi phí tool | $0 | $0 (Excel có sẵn) |
| Thời gian build dashboard lần đầu | — | 2 ngày (1 người) |
| Tăng trưởng doanh thu (3 tháng sau) | +5%/tháng (organic) | +18%/tháng (data-driven: tập trung kênh + sản phẩm hiệu quả) |
Kết quả quan trọng nhất: CEO thay đổi cách ra quyết định. Trước đây, cuộc họp kinh doanh hàng tuần bắt đầu bằng "Mọi người cảm thấy tuần này thế nào?". Sau dashboard, cuộc họp bắt đầu bằng "Revenue tuần này tăng 12%, AOV tăng 5%, nhưng cancel rate cũng tăng 3% — nguyên nhân là gì?". Đội ngũ chuyển từ opinion-driven sang data-driven chỉ với 1 file Excel.
💡 Bài học cho Data Analyst Việt Nam
- Bạn KHÔNG CẦN BI tool để bắt đầu. FreshMart build dashboard $0, mất 2 ngày, tạo impact tương đương hệ thống BI hàng chục nghìn đô. Nếu startup của bạn chưa có budget, Excel Dashboard là lựa chọn hoàn hảo. Logic dashboard (KPI framework, layout, charting) sẽ tái sử dụng khi upgrade lên Power BI sau.
- Định nghĩa KPI TRƯỚC KHI build dashboard. FreshMart mất nửa ngày chỉ để thống nhất "Revenue nghĩa là gì? Tính cả đơn hủy không? Shipping fee có tính vào không?". Nếu không align KPI definition, dashboard sẽ gây hiểu nhầm. Quy tắc: KPI definition → Data source → Dashboard, không bao giờ ngược lại.
- "5-second rule" cho CEO Dashboard: Người ra quyết định (CEO, Giám đốc) rất bận — họ cần nhìn 5 giây là nắm tình hình. KPI Cards với số lớn + mũi tên + màu sắc là cách hiệu quả nhất. Chi tiết để ở phần dưới cho ai muốn đào sâu.
- INDEX/MATCH linh hoạt hơn VLOOKUP cho dataset nhỏ. Khi có <1 triệu dòng và nhiều bảng liên kết, INDEX/MATCH chạy nhanh hơn và không bị giới hạn tra cứu từ trái sang phải như VLOOKUP.
📝 So sánh & tổng hợp
| Tiêu chí | Thế Giới Di Động | Unilever | Startup FreshMart |
|---|---|---|---|
| Ngành | Retail — Điện tử, Điện máy, Tạp hóa | FMCG — Hàng tiêu dùng nhanh | E-commerce — Nông sản sạch |
| Quy mô dữ liệu | ~15 triệu dòng/tháng (5,000+ cửa hàng) | ~300,000 dòng/tháng (150 NPP) | ~15,000 dòng/tháng (500 đơn/ngày) |
| Người dùng dashboard | Regional Manager, Store Manager | Brand Manager, Sales Manager, Supply Chain | CEO, Marketing Manager |
| Lookup chính | VLOOKUP/XLOOKUP (Sales ↔ Store ↔ Product ↔ Employee) | VLOOKUP/XLOOKUP (Sales ↔ Product ↔ Distributor) | INDEX/MATCH (Orders ↔ Product ↔ Customer) |
| Sales Analysis | Revenue per store, KPI tracking, Growth MoM | Pareto 80/20, Revenue breakdown, YoY Growth | AOV, Gross Margin, Channel mix, Repeat Rate |
| Dashboard technique | Pivot Table + Slicer + Timeline + Sparklines | Combo Chart + Pareto Chart + Heatmap | Pivot Chart + Slicer + KPI Cards + Data Validation |
| Charting | Z-pattern layout, Conditional Formatting automation | IBCS color coding, Combo chart (Revenue + Growth%) | 5-second rule, Donut + Line + Bar chart |
| Kết quả nổi bật | Giảm thời gian báo cáo từ 5 ngày → 6 giờ, +9% cửa hàng đạt KPI | Ngừng 200+ SKU slow-moving, tiết kiệm 15 tỷ VNĐ/năm tồn kho | Tăng trưởng từ +5% → +18%/tháng, ngừng 80 SKU kém |
| Chi phí | $0 (Excel có sẵn) | $0 (Excel có sẵn) | $0 (Excel có sẵn) |
| Bài học lớn nhất | Slicer biến 5,000 báo cáo thành 1 template | Pareto + YoY Growth = portfolio optimization | $0 budget vẫn build được dashboard chuyên nghiệp |
Điểm chung của cả 3 case study:
- Đều bắt đầu bằng lookup functions (VLOOKUP/XLOOKUP/INDEX-MATCH) để liên kết dữ liệu từ nhiều bảng — không có lookup, không có dashboard.
- Đều chứng minh Excel Dashboard tạo ra impact kinh doanh đo lường được — giảm thời gian, giảm chi phí, tăng doanh thu — với chi phí $0.
- Đều áp dụng charting best practices — giảm noise, tăng signal, dùng đúng loại chart cho đúng loại dữ liệu.
- Đều cho thấy dashboard thay đổi cách ra quyết định — từ gut feeling sang data-driven, từ cuối tháng sang hàng tuần/hàng ngày.
- Đều nhấn mạnh: tư duy thiết kế dashboard (KPI framework, layout, user cần gì) quan trọng hơn công cụ (Excel, Power BI, Tableau).
🤔 Câu hỏi thảo luận
VLOOKUP vs XLOOKUP vs INDEX/MATCH: Trong case MWG, team dùng cả VLOOKUP và XLOOKUP. Nếu bạn phải chọn chỉ 1 hàm tra cứu cho mọi tình huống, bạn chọn hàm nào? Tại sao? Cho ví dụ tình huống mà hàm bạn chọn vượt trội hơn 2 hàm còn lại.
MoM vs YoY Growth: Unilever phát hiện MoM growth tháng 2 giảm -47% nhưng YoY vẫn tăng +6.2%. Nếu bạn là Sales Manager và CEO hỏi "Tại sao doanh thu tháng 2 giảm gần 50%?", bạn sẽ trình bày câu trả lời như thế nào trên dashboard? Bạn sẽ dùng chart gì để CEO hiểu đây là hiệu ứng mùa vụ chứ không phải sụt giảm thực sự?
Pareto 80/20 thực hành: Nếu bạn phân tích Pareto cho danh mục sản phẩm tại công ty/cửa hàng của bạn (hoặc giả định 1 quán cà phê 30 món), hãy mô tả: bạn cần data gì, tính toán thế nào trong Excel, và nếu phát hiện 5 món tạo ra 80% doanh thu thì quyết định kinh doanh nào bạn sẽ đề xuất?
Dashboard design: FreshMart dùng "5-second rule" — CEO nhìn 5 giây là nắm tình hình. Nếu bạn thiết kế dashboard cho quán cà phê 3 chi nhánh, bạn sẽ đặt gì ở vị trí trên-trái (nơi mắt nhìn đầu tiên)? Bạn sẽ dùng bao nhiêu Slicer và Slicer cho trường nào?
Excel Dashboard vs BI Tool: MWG bắt đầu bằng Excel Dashboard rồi chuyển sang Power BI. Theo bạn, tại thời điểm nào thì một công ty nên "tốt nghiệp" Excel Dashboard và chuyển sang BI tool? Tiêu chí nào giúp bạn quyết định (quy mô data, số users, tần suất cập nhật, budget)?
📚 Nguồn tham khảo
- Thế Giới Di Động (MWG) — Báo cáo thường niên 2024. Dữ liệu về quy mô cửa hàng, revenue, và chiến lược chuyển đổi số.
- Unilever Annual Report & Accounts 2024. Thông tin về mô hình phân phối, portfolio management, và go-to-market strategy.
- Few, S. (2006). Information Dashboard Design: The Effective Visual Communication of Data. O'Reilly Media. — Nguyên tắc thiết kế dashboard hiệu quả.
- Tufte, E. R. (2001). The Visual Display of Quantitative Information. Graphics Press. — Data-ink ratio và charting best practices.
- IBCS — International Business Communication Standards. ibcs.com — Tiêu chuẩn quốc tế về biểu đồ kinh doanh.
- Koch, R. (1998). The 80/20 Principle: The Secret to Achieving More with Less. Doubleday. — Nguyên tắc Pareto áp dụng trong kinh doanh.
- Nussbaumer Knaflic, C. (2015). Storytelling with Data: A Data Visualization Guide for Business Professionals. Wiley. — Charting best practices cho DA.
- Microsoft Support — "Use slicers to filter data" & "XLOOKUP function." — Hướng dẫn chính thức về Slicer và XLOOKUP.
- CafeBiz, VnExpress, Brands Vietnam — Các bài viết về chuyển đổi số bán lẻ và FMCG tại Việt Nam.
🔗 Xem thêm Buổi 4
→ 📘 Nội dung chính → 📝 Blog → 🏆 Tiêu chuẩn → 🛠 Workshop → 🎮 Mini Game