Hướng dẫn

Hướng Dẫn Tạo Dashboard KPI Trên Google Sheets 2026

Tuân HoangTuân Hoang
3 tháng 8, 2026
16 phút đọc
Hướng Dẫn Tạo Dashboard KPI Trên Google Sheets 2026

Một dashboard KPI tốt giúp bạn ra quyết định trong 30 giây — thay vì mất 2 tiếng lọc dữ liệu mỗi buổi sáng.

Hướng dẫn từng bước tạo dashboard KPI chuyên nghiệp trên Google Sheets 2026: chọn KPI phù hợp, thiết kế cấu trúc dữ liệu, công thức SPARKLINE/QUERY nâng cao, conditional formatting RAG status, auto-refresh với IMPORTRANGE và design best practices theo chuẩn doanh nghiệp.

1. KPI Dashboard Là Gì Và Tại Sao Cần Nó?

KPI Dashboard (Key Performance Indicator Dashboard) là màn hình tổng hợp hiển thị các chỉ số quan trọng nhất của doanh nghiệp trên một giao diện duy nhất, cập nhật tự động theo dữ liệu thực tế.

Không Có Dashboard KPI

  • • Mỗi buổi sáng mở 5–10 file riêng lẻ
  • • Copy-paste số liệu để tổng hợp
  • • Không biết kết quả hôm qua cho đến trưa
  • • Khó nhận ra xu hướng xấu kịp thời
  • • Họp hàng tuần không có số liệu tức thì

Có Dashboard KPI Tốt

  • • Mở 1 tab, thấy toàn bộ tình hình
  • • Số liệu cập nhật tự động theo thời gian thực
  • • Cảnh báo màu đỏ/vàng/xanh rõ ràng
  • • Xu hướng hiển thị qua sparkline
  • • Ra quyết định dựa trên dữ liệu, không cảm tính

Tại sao Google Sheets thay vì Tableau/Power BI? Vì 90% doanh nghiệp SME Việt Nam không cần công cụ BI đắt tiền. Google Sheets đủ mạnh để xây dashboard KPI chuyên nghiệp, miễn phí, và đội ngũ đã biết dùng.

2. Bước 1: Chọn KPI Phù Hợp Cho Doanh Nghiệp

Sai lầm phổ biến nhất là đưa quá nhiều số liệu vào dashboard. Nguyên tắc: tối đa 10–12 KPI cốt lõi, mỗi phòng ban 3–5 KPI riêng.

Phòng Ban / Lĩnh VựcKPI Quan TrọngTần Suất Cập NhậtNguồn Dữ Liệu
Kinh DoanhDoanh thu, Số đơn, Tỷ lệ chốt, Giá trị đơn trung bìnhNgày/TuầnCRM, POS
MarketingLeads mới, CPL, CTR, Tỷ lệ chuyển đổiNgàyGA4, Ads
Vận HànhTồn kho, Tỷ lệ giao đúng hạn, Chi phí vận hànhTuầnWMS, ERP
Nhân SựHeadcount, Tỷ lệ nghỉ việc, Năng suất/ngườiThángHRM
Tài ChínhDoanh thu, Chi phí, Lợi nhuận, Dòng tiềnTuần/ThángKế toán

Nguyên tắc SMART cho KPI:

  • Specific — Cụ thể: "Doanh thu từ kênh online" thay vì chỉ "Doanh thu"
  • Measurable — Đo lường được: có số liệu thực tế, không cảm tính
  • Achievable — Thực tế: mục tiêu khả thi, không vô lý
  • Relevant — Liên quan: KPI phải ảnh hưởng đến quyết định kinh doanh
  • Time-bound — Có kỳ hạn: so sánh tuần/tháng/quý

3. Bước 2: Thiết Kế Cấu Trúc Dữ Liệu Chuẩn

Dashboard đẹp nhưng dữ liệu rác = vô dụng. Cấu trúc dữ liệu tốt là nền tảng của dashboard KPI chính xác.

Quy Tắc Vàng Cho Dữ Liệu Google Sheets

// SHEET: DuLieuBanHang (Data Source)
// Cot A: Ngay (Date)         -- Format: YYYY-MM-DD, KHONG dung DD/MM/YYYY
// Cot B: MaDon               -- Unique ID cho moi don hang
// Cot C: KenhBan             -- Online / Offline / Shopee / Lazada
// Cot D: SanPham             -- Ten san pham (chuan hoa, khong viet tat)
// Cot E: DanhMuc             -- Nhom san pham
// Cot F: SoLuong             -- So nguyen, khong chuoi
// Cot G: GiaBan              -- So thap phan, khong co ki tu tien te
// Cot H: DoanhThu            -- = F * G (tinh tu dong)
// Cot I: NhanVien            -- Nhan vien phu trach
// Cot J: TrangThai           -- PAID / PENDING / CANCELLED

// NGUYEN TAC:
// 1. Moi hang = 1 giao dich
// 2. Khong merge cells
// 3. Khong de o trong o giua data
// 4. Header o hang 1, data bat dau tu hang 2
// 5. Khong dung mau sac de phan biet loai data

Cấu Trúc Tabs Trong File Google Sheets

TabMục ĐíchAi Chỉnh Sửa
📊 DASHBOARDMàn hình tổng quan — chỉ xemKhông ai (công thức tự động)
📝 DATA_BanHangNguồn dữ liệu bán hàngNhân viên nhập liệu
📝 DATA_ChiPhiNguồn dữ liệu chi phíKế toán
⚙️ CONFIGCấu hình: mục tiêu KPI, màu sắcQuản lý
📈 CALCTính toán trung gian (ẩn với người dùng)Không ai

4. Bước 3: Thiết Kế Layout Dashboard

Layout chuẩn cho KPI dashboard theo nguyên tắc "F-pattern reading" — mắt người đọc từ trái sang phải, từ trên xuống dưới:

KPI Card 1
Doanh Thu
KPI Card 2
Số Đơn
KPI Card 3
Lợi Nhuận
KPI Card 4
Khách Mới
Biểu Đồ Xu Hướng 30 Ngày (Line Chart)
Top 5 Sản Phẩm (Bar Chart)
Bảng Doanh Thu Theo Kênh
Cảnh Báo & Mục Tiêu Tháng

5. Bước 4: Công Thức Cơ Bản Cho KPI Cards

Mỗi KPI Card thường hiển thị: Giá trị hiện tại, So sánh kỳ trước (%), và Xu hướng (sparkline).

-- DOANH THU THANG NAY
=SUMPRODUCT((MONTH(DATA_BanHang!A2:A)=MONTH(TODAY()))*(YEAR(DATA_BanHang!A2:A)=YEAR(TODAY()))*(DATA_BanHang!J2:J="PAID")*DATA_BanHang!H2:H)

-- SO SANH VS THANG TRUOC (%)
=(DoanhThuThangNay - DoanhThuThangTruoc) / DoanhThuThangTruoc

-- DOANH THU THANG TRUOC
=SUMPRODUCT((MONTH(DATA_BanHang!A2:A)=IF(MONTH(TODAY())=1,12,MONTH(TODAY())-1))*(YEAR(DATA_BanHang!A2:A)=IF(MONTH(TODAY())=1,YEAR(TODAY())-1,YEAR(TODAY())))*(DATA_BanHang!J2:J="PAID")*DATA_BanHang!H2:H)

-- SO DON HANG HOM NAY
=COUNTIFS(DATA_BanHang!A2:A, TODAY(), DATA_BanHang!J2:J, "PAID")

-- GIA TRI DON TRUNG BINH
=IFERROR(SUMIFS(DATA_BanHang!H2:H,DATA_BanHang!J2:J,"PAID",DATA_BanHang!A2:A,">="&DATE(YEAR(TODAY()),MONTH(TODAY()),1))/COUNTIFS(DATA_BanHang!J2:J,"PAID",DATA_BanHang!A2:A,">="&DATE(YEAR(TODAY()),MONTH(TODAY()),1)), 0)

-- TY LE DAT MUC TIEU
=DoanhThuThangNay / CONFIG!B2   -- B2 la muc tieu thang nay trong sheet CONFIG

Định Dạng Số Trong KPI Card

// Hien thi 1.250.000 thanh "1.25M" hoac "1,250K"
// Custom number format trong Google Sheets:

// Trieu dong: [>=1000000]#,##0.0,,"M";[>=1000]#,##0,"K";#,##0
// Phan tram voi mau: [Color10][>=0]+0.0%;[RED]-0.0%
// De set: Format > Number > Custom number format

// Cong thuc hien thi ten KPI dong + xu huong:
=TEXT(DoanhThuThangNay,"#,##0") & " (" & TEXT((DoanhThuThangNay-DoanhThuThangTruoc)/DoanhThuThangTruoc, "+0%;-0%") & ")"

6. Bước 5: SPARKLINE — Biểu Đồ Xu Hướng Mini Trong Ô

SPARKLINE là tính năng độc đáo của Google Sheets — tạo biểu đồ nhỏ gọn ngay trong một ô, không cần tạo chart riêng. Cực kỳ hiệu quả cho KPI cards.

-- SPARKLINE co ban: bieu do duong 7 ngay gan nhat
=SPARKLINE(QUERY(DATA_BanHang!A:H,"SELECT SUM(H) WHERE J='PAID' GROUP BY A ORDER BY A DESC LIMIT 7 LABEL SUM(H) ''"),{"charttype","line";"color","#10b981";"linewidth",2})

-- SPARKLINE dang cot (bar)
=SPARKLINE(DoanhThu30Ngay, {"charttype","bar";"color1","#3b82f6";"color2","#e5e7eb"})

-- SPARKLINE voi mau thay doi theo xu huong (xanh tang, do giam)
=SPARKLINE(DoanhThu7Ngay, {"charttype","line";"color",IF(DoanhThuHomNay>DoanhThuHomQua,"#10b981","#ef4444");"linewidth",2})

-- SPARKLINE win/loss (gia tri +/-)
=SPARKLINE(TangTruong30Ngay, {"charttype","winloss";"color1","#10b981";"color2","#ef4444"})

-- Tao mang du lieu 7 ngay cho SPARKLINE
-- Dat vung nay o CALC sheet, an di:
=ARRAYFORMULA(MMULT((ROW(INDIRECT("A1:A"&COUNTA(DATA_BanHang!A2:A)))),0)+
SUMIFS(DATA_BanHang!H2:H,DATA_BanHang!A2:A,TODAY()-{6,5,4,3,2,1,0}))

Mẹo SPARKLINE hiệu quả:

  • • Đặt vùng dữ liệu cho SPARKLINE ở sheet CALC (ẩn) để không làm rối dashboard
  • • Kích thước ô nên ít nhất 80px rộng x 40px cao để sparkline đọc được
  • • Dùng màu #10b981 (xanh) cho xu hướng tốt, #ef4444 (đỏ) cho xu hướng xấu
  • • Kết hợp sparkline với ô bên cạnh hiển thị % thay đổi để context rõ hơn

7. Bước 6: Conditional Formatting RAG Status

RAG (Red-Amber-Green) status là phương pháp hiển thị trực quan tình trạng KPI: Xanh = đạt mục tiêu, Vàng = cần chú ý, Đỏ = nguy hiểm.

// Cach 1: Dung Conditional Formatting trong Google Sheets
// Format > Conditional Formatting > Custom formula

// O hien thi % dat muc tieu:
// Xanh (>= 100%): =B3>=1    Color: #d1fae5 text: #065f46
// Vang (70-99%):  =AND(B3>=0.7, B3<1)  Color: #fef3c7 text: #92400e
// Do (< 70%):     =B3<0.7   Color: #fee2e2 text: #991b1b

// Cach 2: Dung cong thuc tra ve emoji/text trang thai
=IF(TyLeDat>=1, "🟢 DAT MUCTIEU", IF(TyLeDat>=0.7, "🟡 CAN CHU Y", "🔴 NGUY HIEM"))

// Cach 3: Dung IFS cho nhieu muc
=IFS(
  TangTruong>0.2, "📈 TANG MANH",
  TangTruong>0.05, "📈 TANG TOT",
  TangTruong>-0.05, "➡️ ON DINH",
  TangTruong>-0.2, "📉 GIAM NHE",
  TRUE, "⚠️ GIAM MANH"
)

Thiết Lập Color Scale Tự Động

// Color scale cho bang du lieu nhieu hang:
// Format > Conditional Formatting > Color scale
// Minpoint: do #fee2e2  (thap nhat)
// Midpoint: vang #fef3c7 (trung binh)
// Maxpoint: xanh #d1fae5 (cao nhat)

// Data bar (thanh mini trong o):
// Them column "Bar" = formula tao chuoi ky tu tao thanh toan:
=REPT("█", ROUND(TyLe*10, 0)) & REPT("░", 10-ROUND(TyLe*10, 0))
// Ket qua: "███████░░░" (70% dat muc tieu)

8. Bước 7: Chọn Loại Biểu Đồ Phù Hợp

Mục ĐíchLoại Biểu ĐồVí Dụ Sử Dụng
Xu hướng theo thời gianLine Chart (Đường)Doanh thu 12 tháng, traffic website hàng ngày
So sánh các hạng mụcBar Chart (Cột đứng/ngang)Doanh thu theo sản phẩm, hiệu suất nhân viên
Tỷ lệ phần trămPie/Donut ChartCơ cấu doanh thu theo kênh, phân bổ chi phí
Tiến độ mục tiêuBullet/Gauge Chart% đạt chỉ tiêu tháng, tiến độ dự án
Tương quan 2 biếnScatter ChartChi phí marketing vs doanh thu, giá vs số lượng bán
Phân phối dữ liệuHistogramPhân bố giá trị đơn hàng, thời gian giao hàng

Lỗi biểu đồ phổ biến cần tránh:

  • ✗ 3D charts — khó đọc số liệu, chỉ dùng để "cho đẹp"
  • ✗ Quá nhiều màu sắc (>5 màu trong 1 biểu đồ)
  • ✗ Trục Y không bắt đầu từ 0 — gây ảo giác về mức độ thay đổi
  • ✗ Pie chart với quá nhiều phần nhỏ (>6 phần) — dùng bar chart thay thế

9. Bước 8: Auto-Refresh Với IMPORTRANGE

Nếu dữ liệu nguồn nằm ở nhiều Google Sheets khác nhau, dùng IMPORTRANGE để kéo về Dashboard tự động.

-- Ket noi du lieu tu file CRM sang Dashboard:
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[SPREADSHEET_ID]/edit", "CRM!A2:J")

-- Khi lan dau dung IMPORTRANGE:
-- Google se yeu cau "Allow access" -- click vao o va chon Allow

-- Ket noi nhieu nguon va gop lai (QUERY + IMPORTRANGE):
=QUERY(
  {IMPORTRANGE("[ID_1]","BanHang!A2:H");IMPORTRANGE("[ID_2]","BanHang!A2:H")},
  "SELECT Col1, Col3, Col8 WHERE Col10='PAID' ORDER BY Col1 DESC"
)

-- Kiem tra IMPORTRANGE co dang hoat dong khong:
=IFERROR(IMPORTRANGE("[ID]","Sheet1!A1"), "KET NOI LOI - KIEM TRA LAI")

-- Tan suat refresh: IMPORTRANGE tu dong cap nhat moi 1-30 giay
-- De refresh ngay lap tuc: File > Spreadsheet settings > Recalculation: On change and every minute

10. Bước 9: Tự Động Hóa Với Apps Script

Apps Script giúp tự động gửi dashboard qua email, tạo snapshot lịch sử, hoặc trigger cảnh báo khi KPI vượt ngưỡng.

// Extensions > Apps Script > Dan vao va Save

// 1. Gui email bao cao hang ngay luc 8:00 sang
function sendDailyKPIReport() {
  const ss = SpreadsheetApp.getActiveSpreadsheet()
  const dashboard = ss.getSheetByName("DASHBOARD")

  // Doc cac KPI chinh tu dashboard
  const doanhThu = dashboard.getRange("C3").getValue()
  const soDon = dashboard.getRange("E3").getValue()
  const loiNhuan = dashboard.getRange("G3").getValue()
  const tyLeDat = dashboard.getRange("I3").getValue()

  const body = `BAO CAO KPI - ${new Date().toLocaleDateString("vi-VN")}

` +
    `Doanh thu hom nay: ${doanhThu.toLocaleString("vi-VN")} d
` +
    `So don hang: ${soDon}
` +
    `Loi nhuan: ${loiNhuan.toLocaleString("vi-VN")} d
` +
    `Ty le dat muc tieu: ${(tyLeDat*100).toFixed(1)}%

` +
    "Xem Dashboard: " + ss.getUrl()

  GmailApp.sendEmail(
    "giamdoc@congty.com",
    "KPI Report - " + new Date().toLocaleDateString("vi-VN"),
    body
  )
}

// 2. Canh bao khi KPI xuong duoi nguong
function checkKPIAlert() {
  const tyLeDat = SpreadsheetApp.getActiveSpreadsheet()
    .getSheetByName("DASHBOARD").getRange("I3").getValue()

  if (tyLeDat < 0.7) {
    GmailApp.sendEmail(
      "giamdoc@congty.com",
      "CANH BAO: KPI Doanh Thu Duoi 70%",
      "Ty le dat muc tieu chi con " + (tyLeDat*100).toFixed(1) + "%. Can xu ly khan cap!"
    )
  }
}

// 3. Cai trigger: Extensions > Apps Script > Triggers (dong ho)
// sendDailyKPIReport: Time-driven > Day timer > 8:00-9:00am
// checkKPIAlert: Time-driven > Hour timer > Every hour

11. Bước 10: Design Best Practices

Màu Sắc Khuyến Nghị

Tiêu đề, header: #1e40af (Blue-800)
KPI tốt, tăng trưởng: #10b981 (Emerald)
Cảnh báo, cần theo dõi: #f59e0b (Amber)
Nguy hiểm, giảm sút: #ef4444 (Red)
Nền section: #f9fafb (Gray-50)

Typography & Spacing

  • • Font: Google Sheets mặc định Arial/Roboto
  • • KPI số lớn: font size 24–36pt, bold
  • • Label KPI: font size 10–12pt, italic
  • • Padding ô: 8–12px (Row height ~40px)
  • • Freeze row 1 luôn (header không mất khi scroll)
  • • Ẩn gridlines: View > Gridlines (bỏ check)

12. Mẫu Dashboard Theo Ngành

NgànhKPI Cốt LõiTemplate SheetStore
Bán Lẻ / FMCGDoanh thu/ngày, tồn kho, hàng bán chạy, tỷ lệ hoàn trảDashboard Bán Lẻ
F&B / Nhà HàngRevenue/cover, average check, food cost %, table turnoverDashboard F&B
Dịch Vụ / AgencySố dự án, utilization rate, doanh thu/người, NPSDashboard Agency
Bất Động SảnLeads mới, tỷ lệ chốt, doanh thu môi giới, vòng quay giao dịchDashboard BĐS
E-commerceGMV, conversion rate, CAC, LTV, return rateDashboard Ecommerce

SheetStore Dashboard Templates — Đã Xây Dựng Sẵn

Thay vì tự xây từ đầu mất 2–4 tuần, SheetStore cung cấp bộ template dashboard KPI đã được thiết kế chuyên nghiệp cho các ngành phổ biến tại Việt Nam. Chỉ cần nhập dữ liệu của bạn, dashboard tự động cập nhật.

  • ✓ 10+ template dashboard theo ngành
  • ✓ Công thức SPARKLINE, QUERY đã cấu hình sẵn
  • ✓ Conditional formatting RAG status đã setup
  • ✓ Apps Script gửi email báo cáo tự động
  • ✓ Hướng dẫn tùy chỉnh cho doanh nghiệp của bạn

13. FAQ — Câu Hỏi Thường Gặp

Google Sheets có đủ mạnh để làm dashboard KPI chuyên nghiệp không?

Hoàn toàn đủ cho 90% doanh nghiệp SME. Google Sheets xử lý tốt dataset dưới 100.000 dòng, công thức QUERY mạnh tương đương SQL cơ bản, SPARKLINE và conditional formatting đủ để tạo visual đẹp. Chỉ cần nâng lên Looker Studio hoặc Power BI khi dataset vượt 1 triệu dòng hoặc cần real-time dưới 1 giây.

IMPORTRANGE có làm chậm Google Sheets không?

Có thể nếu dùng quá nhiều. Nguyên tắc: tối đa 5–7 IMPORTRANGE trong một file, mỗi IMPORTRANGE chỉ kéo dữ liệu cần thiết (không kéo cả sheet trống). Dùng QUERY bọc ngoài IMPORTRANGE để lọc trước khi pull về, giảm kích thước dữ liệu truyền tải.

Làm sao để dashboard cập nhật tự động khi có dữ liệu mới?

Có 3 cách: (1) IMPORTRANGE tự động kéo dữ liệu từ file nguồn mỗi 1-30 giây. (2) File Settings > Recalculation > Every minute để công thức volatile như TODAY() và NOW() tính lại mỗi phút. (3) Apps Script với trigger time-based để tính toán phức tạp theo lịch. Kết hợp cả 3 cho dashboard gần real-time.

Bao nhiêu KPI là đủ cho một dashboard?

Nguyên tắc "Dashboard in one glance": tối đa 12 KPI trên màn hình mà không cần scroll, trong đó 4–6 KPI quan trọng nhất hiển thị dạng big number ở đầu trang. Nếu cần nhiều hơn, tạo nhiều tab dashboard theo chủ đề (Kinh doanh, Marketing, Vận hành) thay vì nhét hết vào 1 trang.

Có cần biết code để tạo dashboard KPI không?

Không cần biết code. Các công thức SUMIFS, COUNTIFS, QUERY là đủ cho 80% nhu cầu. Apps Script (JavaScript cơ bản) chỉ cần khi muốn tự động hóa gửi email hoặc tích hợp API bên ngoài. SheetStore cung cấp template đã có sẵn code, bạn chỉ cần điền dữ liệu.

Xây Dashboard KPI Chuyên Nghiệp Ngay Hôm Nay?

SheetStore cung cấp template dashboard KPI sẵn có cho nhiều ngành, tiết kiệm 2–4 tuần xây dựng từ đầu. Chỉ 699.000đ/năm.

Chia sẻ bài viết:

Tuân Hoang

Tuân Hoang

Đội ngũ SheetStore

Bạn thấy bài viết hữu ích?

Đăng ký nhận thông báo khi có bài viết mới.

Nhận thông báo khi có bài viết mới. Không spam, hứa luôn! 😊

Bình luận (0)

Vui lòng đăng nhập để tham gia thảo luận