Appearance
🎮 Mini Game Buổi 3: Dirty Data Fixer
Bạn là Data Cleaner chuyên nghiệp — nhận 7 bộ dữ liệu bẩn từ các phòng ban khác nhau. Nhiệm vụ: chọn đúng cách sửa trước khi dữ liệu bẩn gây thiệt hại cho công ty!
🎯 Mục tiêu học tập
Sau khi hoàn thành game, bạn sẽ:
- Nhận diện nhanh 6 loại dữ liệu bẩn phổ biến: duplicate, missing, formatting, typo, outlier, inconsistency
- Chọn đúng hàm Excel để xử lý: TRIM, CLEAN, SUBSTITUTE, IFERROR, TEXT
- Áp dụng Remove Duplicates đúng cách — biết khi nào giữ, khi nào xóa
- Xử lý missing values bằng phương pháp phù hợp với từng bối cảnh
- Chuẩn hóa dữ liệu theo nguyên tắc Tidy Data
- Sử dụng Pivot Table để tổng hợp và kiểm tra dữ liệu sau cleaning
- Tư duy data quality — garbage in, garbage out
📜 Luật chơi
┌──────────────────────────────────────────────────────┐
│ BẠN = Dirty Data Fixer 🧹 │
│ NHIỆM VỤ = Sửa 7 bộ dữ liệu bẩn từ thực tế │
│ MỖI VÒNG = 1 loại lỗi data + 3 cách sửa │
│ 3 LỰA CHỌN mỗi vòng — chỉ 1 đáp án tốt nhất │
│ THỜI GIAN = 90 giây/vòng (nhanh = bonus XP) │
│ MỤC TIÊU = Thu thập ≥ 85 XP để đạt hạng Gold 🥇 │
└──────────────────────────────────────────────────────┘Cách tính điểm mỗi vòng:
| Thời gian trả lời | Speed Bonus |
|---|---|
| ≤ 30 giây | +5 XP |
| 31–60 giây | +3 XP |
| 61–90 giây | +1 XP |
| > 90 giây (hết giờ) | 0 XP, tự động chọn sai |
🎲 Cơ chế game
Chỉ số theo dõi
| Chỉ số | Icon | Mô tả | Mục tiêu |
|---|---|---|---|
| Accuracy | 🎯 | Chọn đúng cách sửa tối ưu nhất | ≥ 6/7 câu đúng |
| Data Quality Score | 📊 | Chất lượng dữ liệu sau khi sửa (tính theo % clean) | ≥ 80% |
| Speed | ⏱️ | Tổng thời gian & speed bonus | Tối đa 35 bonus XP |
Công thức XP
XP vòng = Accuracy Points + Speed Bonus + Data Quality Bonus + Random Event Modifier
XP tổng = Σ (XP vòng 1..7) + Badge BonusTổng XP tối đa lý thuyết: 85 (Accuracy) + 35 (Speed) + 35 (Data Quality) + bonus events ≈ 155+ XP
📋 Kịch bản chi tiết
🧹 Vòng 1: Khoảng trắng "vô hình" phá hỏng VLOOKUP
Độ khó: ⭐ Dễ — Warm-up
📄 Bối cảnh:
Bạn vừa vào làm DA tại công ty phân phối SaigonFood JSC. Team Sales gửi file Excel báo cáo doanh thu tháng 1, yêu cầu bạn VLOOKUP mã sản phẩm để lấy tên sản phẩm từ bảng master. Nhưng VLOOKUP trả về #N/A cho 40% dòng dù mã sản phẩm rõ ràng có trong bảng master.
📊 Dữ liệu mẫu:
| Mã SP (Bảng Sales) | Mã SP (Bảng Master) | VLOOKUP kết quả |
|---|---|---|
"SP001 " (có space cuối) | "SP001" | #N/A ❌ |
" SP002" (có space đầu) | "SP002" | #N/A ❌ |
"SP003" | "SP003" | ✅ Tìm thấy |
"SP 004" (space giữa) | "SP004" | #N/A ❌ |
Bạn kiểm tra bằng hàm LEN("SP001 ") = 6 thay vì 5. Rõ ràng có khoảng trắng thừa ẩn trong dữ liệu.
🧹 Câu hỏi: Cách sửa nào xử lý triệt để nhất?
| Lựa chọn | Hành động | Accuracy | Speed | Data Quality |
|---|---|---|---|---|
| A | Dùng Find & Replace: tìm " " (space), replace bằng "" (rỗng) → xóa tất cả space | +3 | +1~5 | +1 |
| B ✅ | Dùng =TRIM(CLEAN(A2)) để loại space đầu/cuối + ký tự ẩn, rồi xử lý space giữa bằng =SUBSTITUTE(TRIM(CLEAN(A2))," ","") cho mã SP | +10 | +1~5 | +5 |
| C | Gõ lại tay toàn bộ mã sản phẩm cho chuẩn | +1 | +1~5 | +2 |
🧹 Vòng 2: Tên thành phố "trăm kiểu viết"
Độ khó: ⭐ Dễ
📄 Bối cảnh:
Phòng HR của công ty bảo hiểm BảoViệt Plus gửi bạn file nhân sự 2,500 nhân viên trên toàn quốc để phân tích phân bổ theo khu vực. Bạn tạo Pivot Table nhóm theo cột "Thành phố" và phát hiện... Hà Nội bị tách thành 7 dòng riêng biệt!
📊 Pivot Table kết quả (sai):
| Thành phố | Số NV |
|---|---|
| Ha Noi | 85 |
| Hà Nội | 290 |
| HÀ NỘI | 45 |
| Hà nội | 120 |
| hà nội | 15 |
| Hanoi | 30 |
| TP Ha Noi | 10 |
| Tổng thật: 595 |
Khi báo cáo ghi "Hà Nội có 290 nhân viên" → sai lệch 51% so với thực tế (595 NV).
🧹 Câu hỏi: Cách chuẩn hóa cột "Thành phố" hiệu quả nhất?
| Lựa chọn | Hành động | Accuracy | Speed | Data Quality |
|---|---|---|---|---|
| A | Dùng =UPPER(A2) để chuyển hết thành chữ in hoa | +3 | +1~5 | +2 |
| B ✅ | Tạo bảng mapping chuẩn (Ha Noi → Hà Nội, HÀ NỘI → Hà Nội, Hanoi → Hà Nội...) rồi dùng =VLOOKUP hoặc =SUBSTITUTE kết hợp =TRIM(PROPER(...)) để chuẩn hóa về 1 tên duy nhất | +10 | +1~5 | +5 |
| C | Dùng Filter từng giá trị rồi sửa tay | +2 | +1~5 | +3 |
🧹 Vòng 3: 500 đơn hàng trùng lặp "kép"
Độ khó: ⭐⭐ Trung bình
📄 Bối cảnh:
Team kinh doanh của sàn TMĐT MuaSắm24h export đơn hàng tháng 1 từ 3 hệ thống khác nhau (POS, Website, App) vào chung 1 file Excel. Tổng: 15,000 dòng. Sếp yêu cầu tính tổng doanh thu. Bạn nghi ngờ có dữ liệu trùng.
📊 Dữ liệu mẫu:
| Row | Mã ĐH | Khách hàng | Ngày | Giá trị | Nguồn |
|---|---|---|---|---|---|
| 1 | ĐH-0012 | Nguyễn Văn An | 05/01/2026 | 1,200,000 | POS |
| 2 | ĐH-0012 | Nguyễn Văn An | 05/01/2026 | 1,200,000 | Website |
| 3 | ĐH-0012 | Nguyen Van An | 05/01/2026 | 1,200,000 | App |
| 4 | ĐH-0045 | Trần Thị Bình | 06/01/2026 | 850,000 | POS |
| 5 | ĐH-0045 | Trần Thị Bình | 06/01/2026 | 950,000 | Website |
- Row 1–3: Cùng mã ĐH, cùng ngày, cùng giá trị → trùng lặp hoàn toàn (chỉ khác nguồn + format tên)
- Row 4–5: Cùng mã ĐH, cùng ngày, khác giá trị → có thể là bổ sung (đơn sửa giá) hoặc lỗi
Nếu không xử lý: doanh thu bị tính gấp 3 lần cho ĐH-0012!
🧹 Câu hỏi: Xử lý duplicate thế nào cho đúng?
| Lựa chọn | Hành động | Accuracy | Speed | Data Quality |
|---|---|---|---|---|
| A | Dùng Remove Duplicates trên toàn bộ file → xóa hết dòng trùng | +3 | +1~5 | +2 |
| B ✅ | Bước 1: Chuẩn hóa cột tên (TRIM, PROPER) + cột nguồn → tạo cột key ghép (Mã ĐH + Ngày). Bước 2: Dùng COUNTIF để đánh dấu duplicate. Bước 3: Kiểm tra từng nhóm trùng — nếu cùng giá trị → giữ 1, nếu khác giá trị → xác minh với team trước khi xóa | +10 | +1~5 | +5 |
| C | Sort theo mã đơn hàng rồi xóa tay các dòng trùng | +2 | +1~5 | +1 |
🧹 Vòng 4: Missing values — điền hay xóa?
Độ khó: ⭐⭐ Trung bình
📄 Bối cảnh:
Phòng Finance của chuỗi cà phê HighlandsCoffee gửi bạn file chi phí hoạt động 120 chi nhánh trong 12 tháng. Sếp cần tổng hợp chi phí trung bình theo khu vực. Nhưng 18% ô dữ liệu bị trống (missing values).
📊 Dữ liệu mẫu (triệu VNĐ/tháng):
| Chi nhánh | Khu vực | T1 | T2 | T3 | T4 |
|---|---|---|---|---|---|
| CN Quận 1 | HCM | 85 | 90 | 88 | |
| CN Quận 3 | HCM | 72 | 75 | ||
| CN Đống Đa | HN | 65 | 68 | 70 | |
| CN mới Thủ Đức | HCM | 45 |
- CN Quận 1: thiếu T3 — có thể dùng trung bình T1, T2, T4 ≈ 87.7
- CN Quận 3: thiếu T2 + T3 — thiếu 50% dữ liệu
- CN Đống Đa: thiếu T1 — chi nhánh mới mở tháng 2?
- CN mới Thủ Đức: thiếu T1–T3 — mới khai trương T4, không nên điền
🧹 Câu hỏi: Xử lý missing values thế nào?
| Lựa chọn | Hành động | Accuracy | Speed | Data Quality |
|---|---|---|---|---|
| A | Điền tất cả ô trống bằng 0 — để dễ tính toán | +2 | +1~5 | +1 |
| B | Xóa tất cả dòng có missing values — chỉ giữ dữ liệu đầy đủ | +3 | +1~5 | +2 |
| C ✅ | Phân loại nguyên nhân trước: (1) Thiếu ngẫu nhiên → dùng AVERAGE các tháng có data để ước tính, bọc IFERROR phòng lỗi. (2) Thiếu do chưa tồn tại (CN mới) → để trống hoặc đánh dấu "N/A", không điền số. (3) Thiếu >50% → cân nhắc loại khỏi phân tích, ghi chú riêng | +10 | +1~5 | +5 |
🧹 Vòng 5: Ngày tháng "hỗn loạn" — Excel tưởng text
Độ khó: ⭐⭐⭐ Khó
📄 Bối cảnh:
Team Sales của công ty xuất nhập khẩu VietTrade Corp tổng hợp hợp đồng từ 5 chi nhánh ASEAN. Mỗi chi nhánh nhập ngày theo format khác nhau. File tổng hợp có 3,000 hợp đồng — bạn cần phân tích doanh thu theo tháng, nhưng Excel không nhận cột ngày!
📊 Dữ liệu mẫu:
| Row | Ngày HĐ (raw) | Chi nhánh | Giá trị (USD) |
|---|---|---|---|
| 1 | 15/01/2026 | Vietnam | 50,000 |
| 2 | 01-15-2026 | Philippines | 32,000 |
| 3 | Jan 15, 2026 | Singapore | 75,000 |
| 4 | 2026/01/15 | Japan | 120,000 |
| 5 | 15 Januari 2026 | Indonesia | 28,000 |
- Row 1: DD/MM/YYYY → Excel có thể nhầm thành MM/DD/YYYY
- Row 2: MM-DD-YYYY → format Mỹ
- Row 3: Text tiếng Anh → Excel lưu dạng text, không phải date
- Row 4: ISO format → thường OK
- Row 5: Tiếng Indonesia → hoàn toàn text
Nếu dùng MONTH() trực tiếp → lỗi hoặc sai tháng cho >60% dữ liệu.
🧹 Câu hỏi: Chuẩn hóa cột ngày thế nào?
| Lựa chọn | Hành động | Accuracy | Speed | Data Quality |
|---|---|---|---|---|
| A | Dùng hàm =DATEVALUE(A2) cho tất cả → tự động chuyển thành ngày | +2 | +1~5 | +1 |
| B | Dùng Text to Columns → chọn date format MDY | +3 | +1~5 | +2 |
| C ✅ | Xử lý theo từng nhóm chi nhánh: (1) Dùng =TEXT(A2,"YYYY-MM-DD") cho row đã là date. (2) Dùng =DATE(MID(...),LEFT(...),...) kết hợp MID/LEFT/RIGHT để tách ngày/tháng/năm cho row text. (3) Dùng SUBSTITUTE để chuẩn hóa tên tháng Indonesia → số. (4) Quy về 1 format chuẩn ISO: YYYY-MM-DD cho toàn bộ file | +10 | +1~5 | +5 |
🧹 Vòng 6: Dữ liệu "xấu xí" — vi phạm Tidy Data
Độ khó: ⭐⭐⭐ Khó
📄 Bối cảnh:
Phòng Marketing của hãng mỹ phẩm BeautyVN gửi bạn file báo cáo doanh thu Q4 để làm Pivot Table phân tích theo sản phẩm × kênh bán. Nhưng file được trình bày đẹp cho người đọc, không phải cho phân tích.
📊 Dữ liệu gốc (format "báo cáo đẹp"):
┌─────────────┬────────────────────────────────────┐
│ │ Doanh thu (triệu VNĐ) │
│ Sản phẩm ├──────────┬───────────┬─────────────┤
│ │ Shopee │ Lazada │ Cửa hàng │
├─────────────┼──────────┼───────────┼─────────────┤
│ Kem chống │ 120 │ 95 │ 200 │
│ nắng │ │ │ │
├─────────────┼──────────┼───────────┼─────────────┤
│ Son môi │ 180 │ 150 │ 300 │
├─────────────┼──────────┼───────────┼─────────────┤
│ Serum │ 85 │ 70 │ 150 │
└─────────────┴──────────┴───────────┴─────────────┘
Ghi chú: * Đã bao gồm VAT | Đơn vị: triệu VNĐ
Merged cells: Dòng header "Doanh thu" merge 3 cộtVấn đề: Merged cells, multi-level header, ghi chú rải rác → Pivot Table không thể đọc được file này.
🧹 Câu hỏi: Chuyển đổi dữ liệu theo nguyên tắc nào?
| Lựa chọn | Hành động | Accuracy | Speed | Data Quality |
|---|---|---|---|---|
| A | Unmerge cells + xóa ghi chú → giữ nguyên format bảng ngang | +3 | +1~5 | +2 |
| B | Copy-paste values vào sheet mới, sửa header | +4 | +1~5 | +2 |
| C ✅ | Chuyển sang Tidy Data format — 3 nguyên tắc: (1) Mỗi biến = 1 cột, (2) Mỗi quan sát = 1 dòng, (3) Mỗi giá trị = 1 ô. Kết quả: 3 cột [Sản phẩm, Kênh bán, Doanh thu] × 9 dòng. Unmerge cells, xóa ghi chú, unpivot bảng ngang thành bảng dọc | +10 | +1~5 | +5 |
Tidy Data format đúng (9 dòng × 3 cột):
| Sản phẩm | Kênh bán | Doanh thu (triệu) |
|---|---|---|
| Kem chống nắng | Shopee | 120 |
| Kem chống nắng | Lazada | 95 |
| Kem chống nắng | Cửa hàng | 200 |
| Son môi | Shopee | 180 |
| Son môi | Lazada | 150 |
| Son môi | Cửa hàng | 300 |
| Serum | Shopee | 85 |
| Serum | Lazada | 70 |
| Serum | Cửa hàng | 150 |
🧹 Vòng 7: Pivot Table — phân tích sau cleaning
Độ khó: ⭐⭐⭐⭐ Rất khó — Boss Round 🏴☠️
📄 Bối cảnh:
Bạn đã clean xong bộ dữ liệu bán hàng 50,000 đơn của chuỗi điện máy ĐiệnMáyVN (Q4/2025). Sếp yêu cầu tạo Pivot Table trả lời 3 câu hỏi kinh doanh quan trọng:
- Top 5 sản phẩm doanh thu cao nhất theo từng khu vực?
- Chi nhánh nào có tỷ lệ trả hàng (return rate) cao bất thường?
- Xu hướng doanh thu tháng 10 → 11 → 12: tăng hay giảm theo category?
📊 Dữ liệu đã clean (Tidy format):
| Cột | Kiểu | Ví dụ |
|---|---|---|
| Mã ĐH | Text | ĐH-50001 |
| Ngày | Date (YYYY-MM-DD) | 2025-10-15 |
| Chi nhánh | Text (chuẩn hóa) | CN Quận 1 - HCM |
| Khu vực | Text | Miền Nam |
| Category | Text | Điện thoại |
| Sản phẩm | Text | iPhone 16 Pro |
| Doanh thu | Number | 28,990,000 |
| Trạng thái | Text | Hoàn thành / Trả hàng |
Bạn tạo Pivot Table. Nhưng kết quả ban đầu trông kỳ lạ: "Miền nam" và "Miền Nam" tách riêng, một số chi nhánh có return rate = 45% (quá cao), tháng 12 doanh thu hiển thị thấp bất thường.
🧹 Câu hỏi: Nguyên nhân và cách xử lý?
| Lựa chọn | Hành động | Accuracy | Speed | Data Quality |
|---|---|---|---|---|
| A | Pivot Table bị lỗi — xóa tạo lại, chọn đúng range | +2 | +1~5 | +1 |
| B | Sửa trực tiếp trong Pivot Table: group "Miền nam" + "Miền Nam" lại | +4 | +1~5 | +2 |
| C ✅ | Quay lại source data fix gốc: (1) =TRIM(PROPER(Khu vực)) để chuẩn hóa "Miền nam" → "Miền Nam". (2) Filter chi nhánh return rate >30% → kiểm tra dữ liệu gốc — phát hiện 1 chi nhánh bị nhập trạng thái "trả hàng" cho đơn đang giao (data entry error). (3) Kiểm tra T12 — phát hiện 500 đơn ngày 2025-12-xx bị lưu text thay vì date → Pivot Table không group được theo tháng. Fix bằng DATEVALUE + refresh Pivot | +15 | +1~5 | +5 |
⚡ Sự kiện ngẫu nhiên (Random Events)
Mỗi vòng có 20% xác suất kích hoạt 1 sự kiện ngẫu nhiên. Sự kiện có thể giúp hoặc cản trở Data Fixer!
| # | Sự kiện | Xác suất | Ảnh hưởng |
|---|---|---|---|
| 1 | 📂 File bị corrupt — Excel crash giữa chừng, bạn mất tiến độ nếu chưa save! | 20% | Thời gian vòng này giảm còn 45 giây. Bài học: Ctrl+S thường xuyên! |
| 2 | 🤝 Senior hint — Senior DA nhắn Teams: "Em thử check TRIM xem, anh gặp case tương tự tuần trước" | 15% | Loại bỏ 1 đáp án sai → còn 2 lựa chọn. Data Quality +2 bonus |
| 3 | 📊 Data Dump thêm — Phòng kế toán gửi thêm 1 file bổ sung, giúp cross-check | 10% | Hiển thị thêm bảng dữ liệu gợi ý → dễ nhận lỗi hơn. +3 Accuracy bonus nếu đúng |
| 4 | ⏰ Họp gấp — Sếp kéo bạn vào họp đột xuất 15 phút, quay lại phải làm nhanh! | 20% | Thời gian giảm còn 60 giây, nhưng nếu đúng: Speed ×2 |
| 5 | 💀 Macro virus — File có macro lạ, bạn phải tắt macro và xử lý manual | 10% | Tất cả lựa chọn liên quan đến tự động hóa bị khóa → phải chọn cách thủ công hơn. +5 XP bonus nếu vẫn đúng |
| 6 | ☕ Coffee boost — Đồng nghiệp mời cà phê, tinh thần lên cao! | 15% | +3 XP bonus cho câu tiếp theo bất kể đúng sai. Motivation matters! |
🏆 Hệ thống xếp hạng
| Rank | Điều kiện | Mô tả |
|---|---|---|
| 🥇 Gold | ≥ 85 XP | "Senior Data Cleaner! Garbage in → Gold out. Bạn đã master Data Cleaning." |
| 🥈 Silver | ≥ 60 XP | "Solid Analyst — biết cách sửa nhưng đôi lúc chưa triệt để. Ôn thêm Tidy Data!" |
| 🥉 Bronze | ≥ 40 XP | "Junior Cleaner — nắm được basic nhưng cần luyện tập với dữ liệu thực tế hơn." |
| ❌ Fail | < 40 XP | "Dữ liệu bẩn vẫn lọt qua... Garbage in, garbage out! Đọc lại Buổi 3 rồi quay lại nhé!" |
🎖️ Badge đặc biệt
| Badge | Điều kiện | Mô tả |
|---|---|---|
| 🏅 Perfect Cleaner | 7/7 câu đúng (chọn đáp án tốt nhất) | Không một dòng dirty data nào lọt qua tay bạn |
| ⚡ Speed Demon | Tổng thời gian ≤ 3 phút 30 giây (cả 7 vòng) | Clean data nhanh như flash |
| 🧹 TRIM Master | Đúng Vòng 1 + 2 (whitespace + inconsistency) | Chuyên gia TRIM/CLEAN/SUBSTITUTE |
| 🔍 Duplicate Hunter | Đúng Vòng 3 + timeout < 30s | Phát hiện trùng lặp nhanh hơn Remove Duplicates |
| 📐 Tidy Evangelist | Đúng Vòng 6 (Tidy Data) + giải thích 3 nguyên tắc | Hadley Wickham sẽ tự hào về bạn |
| 📊 Pivot Pro | Đúng Vòng 7 (Boss Round) | Pivot Table không còn bí mật nào với bạn |
| 🛡️ Survivor | Gặp ≥ 3 sự kiện ngẫu nhiên bất lợi mà vẫn đạt Gold | Điềm tĩnh dưới áp lực — tố chất Senior DA |
| 💎 Flawless | ≥ 85 XP + không bị event nào trừ điểm | Hoàn hảo trong mọi tình huống |
💡 Giải thích đáp án
Vòng 1 — Khoảng trắng thừa & TRIM/CLEAN
Lỗi: Dữ liệu chứa trailing/leading spaces và ký tự ẩn (non-printing characters) → VLOOKUP thất bại.
- TRIM loại bỏ space thừa đầu/cuối và space đôi giữa chữ → nhưng KHÔNG xóa ký tự ẩn (line break, tab)
- CLEAN loại bỏ ký tự ẩn (ASCII 0–31) mà mắt thường không thấy
- Kết hợp
TRIM(CLEAN(...))là best practice cho mọi dữ liệu text import từ hệ thống - Với mã SP không nên có space giữa → thêm
SUBSTITUTE(...," ","")để xóa hẳn - Find & Replace (A) có thể xóa cả space hợp lệ (ví dụ: "Kem Chống Nắng" → "KemChốngNắng"). Gõ lại tay (C) không scalable cho 15,000 dòng
- Kiến thức: TRIM, CLEAN, SUBSTITUTE — Phần 2: Công cụ Data Cleaning
Vòng 2 — Inconsistency & Chuẩn hóa Text
Lỗi: Cùng thành phố "Hà Nội" nhưng có 7 cách viết khác nhau → Pivot Table tách thành 7 nhóm.
- Nguyên nhân gốc: Dữ liệu nhập tay (manual input) từ nhiều người/chi nhánh, không có validation rule
- PROPER() chuyển "hà nội" → "Hà Nội" nhưng không fix "Hanoi" hay "Ha Noi"
- UPPER() chỉ đồng nhất case nhưng không fix viết không dấu
- Mapping table là giải pháp triệt để nhất: liệt kê tất cả biến thể → map về giá trị chuẩn. Có thể tái sử dụng cho các file sau
- Data Validation (dropdown list) ở đầu vào giúp ngăn lỗi tái phát
- Kiến thức: 6 loại Dirty Data — Inconsistency — Phần 1: Nhận diện dữ liệu bẩn
Vòng 3 — Duplicate Detection & Removal
Lỗi: Dữ liệu import từ 3 hệ thống → trùng lặp từ nguồn (source-level duplication).
- Remove Duplicates (Data tab) là nhanh nhưng nguy hiểm nếu áp dụng mù quáng — có thể xóa nhầm dòng hợp lệ (ví dụ: Row 4–5 cùng mã ĐH nhưng khác giá trị → có thể 1 đơn bị sửa giá)
- Best practice: Tạo composite key (Mã ĐH + Ngày) → COUNTIF để đánh dấu → review trước khi xóa
- Luôn backup data gốc trước khi remove duplicates
- Kiến thức: 6 loại Dirty Data — Duplicate — Phần 1
Vòng 4 — Missing Values Strategy
Lỗi: Xử lý missing values một cách đồng loạt thay vì phân loại nguyên nhân.
- Điền 0: Sai nguy hiểm — 0 triệu ≠ không có data. AVERAGE sẽ bị kéo xuống
- Xóa dòng: Mất dữ liệu hợp lệ của các tháng có data
- Best practice: Phân 3 loại:
- MCAR (Missing Completely At Random): điền bằng trung bình/median
- MAR (Missing At Random): điền theo nhóm tương tự
- MNAR (Missing Not At Random): không điền — đánh dấu N/A, ghi chú lý do
IFERROR(AVERAGE(...),"N/A")là công thức an toàn để tránh lỗi #DIV/0!- Kiến thức: 6 loại Dirty Data — Missing — Phần 1
Vòng 5 — Date Format Standardization
Lỗi: Dữ liệu ngày tháng từ nhiều quốc gia → format không thống nhất, Excel lưu dạng text.
- DATEVALUE chỉ hoạt động tốt với format Excel nhận diện được — text thuần (e.g., "Jan 15, 2026") có thể chuyển, nhưng "15 Januari 2026" thì không
- Text to Columns chỉ chuẩn hóa 1 format tại 1 thời điểm — không xử lý được file đa dạng format
- Best practice: Tách xử lý theo nhóm chi nhánh → dùng
MID/LEFT/RIGHT+DATE()cho text → quy về 1 format chuẩn ISO (YYYY-MM-DD) - Tip nâng cao:
=DATE(MID(A2,7,4), MID(A2,4,2), LEFT(A2,2))cho DD/MM/YYYY → Date - Kiến thức: 6 loại Dirty Data — Formatting Errors — Phần 2
Vòng 6 — Tidy Data Principles
Lỗi: Dữ liệu trình bày dạng cross-tab (bảng ngang) → vi phạm Tidy Data → Pivot Table không đọc được.
- 3 nguyên tắc Tidy Data (Hadley Wickham, 2014):
- Mỗi biến (variable) = 1 cột
- Mỗi quan sát (observation) = 1 dòng
- Mỗi giá trị (value) = 1 ô
- Bảng gốc vi phạm: "Shopee", "Lazada", "Cửa hàng" là giá trị của biến "Kênh bán", nhưng bị đặt thành tên cột
- Unpivot (chuyển ngang → dọc): 3 cột giá trị → 1 cột "Kênh bán" + 1 cột "Doanh thu" → 9 dòng
- Merged cells + ghi chú rải rác → phải xóa trước khi chuyển đổi
- Excel Power Query có tính năng Unpivot Columns cực tiện cho việc này
- Kiến thức: Tidy Data — Phần 3: Tidy Data
Vòng 7 — Pivot Table & Data Quality Audit
Lỗi: Pivot Table cho kết quả kỳ lạ vì source data chưa clean triệt để — 3 lỗi ẩn.
- Lỗi 1 — Inconsistency: "Miền nam" vs "Miền Nam" → 2 nhóm trong Pivot. Fix: chuẩn hóa source data, không sửa trong Pivot (vì Pivot refresh sẽ mất)
- Lỗi 2 — Data Entry Error: Return rate 45% là bất thường (trung bình ngành 5–10%). Kiểm tra source → phát hiện nhầm trạng thái
- Lỗi 3 — Date stored as Text: 500 đơn T12 lưu dạng text → Pivot Table group by month bỏ sót → doanh thu T12 thấp giả tạo. Fix:
DATEVALUE→ format Date → refresh Pivot - Bài học lớn: Pivot Table chỉ tốt bằng source data. Luôn kiểm tra kết quả Pivot bằng cách cross-check với tổng số dòng, tổng giá trị gốc
- Kiến thức: Pivot Table — Phần 4: Pivot Table
📚 Kiến thức liên quan
| Vòng | Chủ đề chính | Kỹ năng Data Cleaning |
|---|---|---|
| 1 | Whitespace, TRIM, CLEAN | Xử lý ký tự ẩn trước khi VLOOKUP |
| 2 | Inconsistency, SUBSTITUTE | Chuẩn hóa text bằng mapping table |
| 3 | Duplicate detection | COUNTIF + composite key + review |
| 4 | Missing values | Phân loại nguyên nhân → xử lý phù hợp |
| 5 | Date formatting | MID/LEFT/RIGHT + DATE → ISO format |
| 6 | Tidy Data | 3 nguyên tắc: biến = cột, quan sát = dòng, giá trị = ô |
| 7 | Pivot Table audit | Source data quality → Pivot accuracy |
Chuỗi tư duy Data Cleaner chuyên nghiệp:
Nhận file → Check structure (Tidy?) → Scan lỗi (6 loại dirty data)
→ Xử lý whitespace (TRIM/CLEAN) → Chuẩn hóa text (mapping)
→ Remove duplicates (COUNTIF + review) → Handle missing (phân loại)
→ Fix date format (ISO) → Tạo Pivot Table → Cross-check kết quả🔗 Xem thêm Buổi 3
→ 📘 Nội dung chính → 📝 Blog → 🧠 Case Study → 🏆 Tiêu chuẩn → 🛠 Workshop