Google Sheets Nâng Cao Bài 2: Conditional Formatting Nâng Cao Và Color Scales

Tuân HoangTuân Hoang
13 tháng 11, 2026
12 phút đọc
Google Sheets Nâng Cao Bài 2: Conditional Formatting Nâng Cao Và Color Scales

Google Sheets Nâng Cao Bài 2: Conditional Formatting Nâng Cao Và Color Scales

Tiếp nối Bài 1 về Data Validation, hôm nay chúng ta đi sâu vào Conditional Formatting (Định dạng có điều kiện) — tính năng giúp bảng tính "tự nói chuyện" với bạn qua màu sắc, biểu tượng và gradient.

Conditional Formatting cơ bản (tô màu ô theo điều kiện đơn giản) thì nhiều người đã biết. Nhưng bài này sẽ đưa bạn lên tầm cao hơn: dùng công thức phức tạp, color scales nhiều màu, icon sets, heatmaps và các kỹ thuật trực quan hóa dữ liệu chuyên nghiệp.

1. Ôn Lại Conditional Formatting Cơ Bản

Trước khi đi vào nâng cao, hãy đảm bảo bạn nắm chắc nền tảng.

Cách mở Conditional Formatting

  1. Chọn vùng ô muốn áp dụng
  2. Vào menu Format → Conditional formatting
  3. Panel "Conditional format rules" hiện bên phải
  4. Nhấn "Add another rule" để thêm quy tắc mới

Các loại điều kiện built-in

Loại Điều kiện ví dụ Dùng khi
Text Contains "urgent", Is exactly "Done" Highlight trạng thái, từ khóa
Number Greater than 1000000, Between 50-100 Highlight giá trị cao/thấp
Date Is before today, Is in the past week Cảnh báo deadline sắp đến
Empty/Not empty Is empty, Is not empty Tìm ô còn trống chưa điền
Custom formula =A1>AVERAGE(A:A) Điều kiện phức tạp, đa ô

Các tùy chọn định dạng

  • Background color: Màu nền ô
  • Text color: Màu chữ
  • Bold / Italic / Underline / Strikethrough: Kiểu chữ
  • Color scale: Gradient nhiều màu (sẽ học ở mục 3)

2. Conditional Formatting Dùng Formula

Đây là tính năng mạnh nhất của Conditional Formatting. Với Custom Formula, bạn có thể viết bất kỳ điều kiện nào.

Nguyên tắc viết formula

  • Công thức phải trả về TRUE (áp dụng định dạng) hoặc FALSE (không áp dụng)
  • Dùng địa chỉ tương đối (A1) cho điều kiện thay đổi theo hàng/cột
  • Dùng địa chỉ tuyệt đối ($A$1) cho giá trị cố định so sánh
  • Công thức áp dụng cho ô đầu tiên trong vùng chọn, các ô khác tự điều chỉnh

2.1. Highlight giá trị trên/dưới trung bình


// Áp dụng cho vùng A2:A100
// Highlight ô có giá trị > trung bình của cột → màu xanh
=A2>AVERAGE($A$2:$A$100)

// Highlight ô có giá trị < trung bình → màu đỏ
=A2

2.2. Highlight duplicate (trùng lặp)


// Áp dụng cho A2:A100
// Tô màu ô trùng với ô khác trong cùng cột
=COUNTIF($A$2:$A$100,A2)>1

// Chỉ highlight duplicate, bỏ qua ô trống
=AND(COUNTIF($A$2:$A$100,A2)>1, A2<>"")
  

2.3. Highlight hàng dựa theo điều kiện ở cột khác


// Highlight toàn bộ hàng khi cột E = "Hủy"
// Áp dụng cho vùng A2:Z100 (toàn bộ bảng)
// Custom formula:
=$E2="Hủy"

// LƯU Ý: $E2 - cố định cột E ($E), nhưng hàng thay đổi (2→3→4...)
// Không dùng $E$2 (sẽ chỉ check hàng 2 mãi mãi)
  

2.4. Highlight deadline sắp đến hoặc quá hạn


// Áp dụng cho cột ngày deadline (cột D)
// Đã quá hạn (ngày trong quá khứ) → đỏ
=AND(D2"")

// Sắp đến hạn trong 3 ngày → vàng
=AND(D2>=TODAY(), D2<=TODAY()+3)

// Còn hơn 3 ngày → xanh
=D2>TODAY()+3

// Thứ tự tạo rules quan trọng (xem mục 4)
  

2.5. Kiểm tra hàng có đầy đủ thông tin


// Highlight hàng thiếu thông tin (bất kỳ ô nào trong B-F trống)
// Áp dụng cho A2:F100
=COUNTBLANK($B2:$F2)>0

// Highlight hàng hoàn chỉnh (tất cả ô đều có dữ liệu)
=COUNTBLANK($B2:$F2)=0
  

2.6. Highlight ô chứa số ngoại lệ (Outlier)


// Highlight giá trị cách trung bình hơn 2 độ lệch chuẩn
=ABS(A2-AVERAGE($A$2:$A$100))>2*STDEV($A$2:$A$100)

// STDEV: độ lệch chuẩn
// ABS: giá trị tuyệt đối
// Phát hiện dữ liệu bất thường trong báo cáo
  

2.7. Highlight theo ngày trong tuần


// Tô màu hàng cuối tuần trong bảng lịch
// Giả sử cột A chứa ngày
=OR(WEEKDAY($A2,2)=6, WEEKDAY($A2,2)=7)

// WEEKDAY với mode 2: 1=T2,...,6=T7,7=CN
// OR để check cả T7 và CN
  

3. Color Scales Và Gradient

Color Scales là tính năng tạo gradient màu sắc trên vùng dữ liệu, giúp trực quan hóa phân phối giá trị mà không cần tạo biểu đồ.

Cách thiết lập Color Scale

  1. Chọn vùng dữ liệu số (ví dụ: B2:B100)
  2. Format → Conditional formatting
  3. Chọn tab "Color scale" (bên cạnh "Single color")
  4. Cấu hình 3 điểm: Minpoint, Midpoint (tùy chọn), Maxpoint
  5. Chọn màu cho từng điểm

Các preset color scale phổ biến

Gradient Dùng cho Minpoint → Maxpoint
Xanh → Đỏ Nhiệt độ, cảm xúc, rủi ro Xanh lá → Vàng → Đỏ
Trắng → Xanh Doanh số, tần suất Trắng → Xanh nhạt → Xanh đậm
Đỏ → Xanh Điểm số, đánh giá Đỏ → Vàng → Xanh lá
Cam → Vàng Mức độ ưu tiên Cam đậm → Vàng nhạt

Tùy chỉnh Minpoint và Maxpoint


// Minpoint options:
// - Min value: tự động lấy giá trị nhỏ nhất
// - Number: đặt giá trị cụ thể (ví dụ: 0)
// - Percentile: theo phần trăm (ví dụ: 10th percentile)
// - Percent: theo phần trăm tổng (ví dụ: 10%)

// Ví dụ: Báo cáo doanh số
// Minpoint: Number = 0 (màu đỏ)
// Midpoint: Number = 10000000 (10 triệu, màu vàng)
// Maxpoint: Number = 50000000 (50 triệu, màu xanh)

// → Nhân viên đạt > 50tr đều xanh đậm như nhau
// → Phân biệt rõ ràng nhân viên yếu, trung bình, tốt
  

3.1. Heatmap doanh số theo sản phẩm và tháng


// Bảng dữ liệu:
//     | T1  | T2  | T3  | ... | T12
// SP1 | 150 | 200 | 180 | ... | 300
// SP2 |  80 | 120 | 95  | ... | 180
// SP3 | 220 | 190 | 250 | ... | 400

// Áp dụng color scale cho toàn bảng số liệu B2:M20
// Min: 0 → Trắng/Đỏ nhạt
// Max: Auto → Xanh đậm
// → Ngay lập tức thấy ô sáng = doanh số cao, ô tối = thấp
  

3.2. Color Scale với Custom Midpoint


// Báo cáo tỷ lệ hoàn thành KPI (%)
// Dưới 70%: Đỏ (không đạt)
// 70-100%: Vàng (đạt tối thiểu)
// Trên 100%: Xanh (vượt KPI)

// Color scale:
// Minpoint: Number = 0% → Màu đỏ
// Midpoint: Number = 70% → Màu vàng
// Maxpoint: Number = 150% → Màu xanh đậm
  

4. Nhiều Quy Tắc Và Thứ Tự Ưu Tiên

Khi một ô thỏa mãn nhiều quy tắc cùng lúc, Google Sheets áp dụng quy tắc theo thứ tự ưu tiên.

Quy tắc thứ tự ưu tiên

  • Quy tắc ở trên cùng trong danh sách có ưu tiên cao nhất
  • Khi nhiều quy tắc thỏa mãn, quy tắc trên cùng được áp dụng
  • Có thể kéo thả để thay đổi thứ tự các quy tắc

Ví dụ: 3 cấp độ ưu tiên đơn hàng


// Quy tắc 1 (ưu tiên cao nhất): Đơn hủy → Xám
=$F2="Hủy"

// Quy tắc 2: Đơn quá hạn → Đỏ
=AND($D2"Hoàn thành", $F2<>"Hủy")

// Quy tắc 3: Đơn sắp hạn (3 ngày) → Vàng
=AND($D2>=TODAY(), $D2<=TODAY()+3, $F2<>"Hoàn thành")

// Quy tắc 4 (ưu tiên thấp nhất): Đơn hoàn thành → Xanh nhạt
=$F2="Hoàn thành"

// Thứ tự trong panel: Rule 1 → Rule 2 → Rule 3 → Rule 4
  

Kỹ thuật "Stop if true"

Google Sheets không có tính năng "Stop if true" như Excel. Để mô phỏng, hãy sắp xếp quy tắc theo đúng thứ tự ưu tiên — quy tắc đặc biệt nhất luôn ở trên cùng.

5. Highlight Toàn Hàng Theo Điều Kiện

Đây là kỹ thuật phổ biến nhất trong thực tế: khi điều kiện ở một ô thỏa mãn, cả hàng đó được highlight.

Kỹ thuật $Column (cố định cột, thả hàng)


// Áp dụng cho vùng A2:H100 (toàn bảng)
// Highlight hàng khi cột G = "VIP"
=$G2="VIP"

// $G: cố định cột G (không thay đổi khi di chuyển sang B,C,D...)
// 2: hàng tương đối (tự điều chỉnh: 2,3,4... cho từng hàng)
// Kết quả: Tất cả ô trong hàng 2 kiểm tra G2
//          Tất cả ô trong hàng 3 kiểm tra G3
//          Vân vân...
  

Ví dụ thực tế: Dashboard theo dõi dự án


// Bảng theo dõi dự án: A=Tên, B=PM, C=Bắt đầu, D=Kết thúc,
//                      E=Tiến độ(%), F=Trạng thái, G=Ưu tiên

// Rule 1: Ưu tiên "Critical" → Nền đỏ đậm + chữ trắng
=$G2="Critical"   → Background: #CC0000, Text: #FFFFFF

// Rule 2: Trạng thái "Trễ hạn" → Nền cam
=$F2="Trễ hạn"    → Background: #FF9900

// Rule 3: Tiến độ < 25% và đã qua 50% thời gian → Vàng cảnh báo
=AND($E2<25, ($C2+($D2-$C2)*0.5)

Highlight hàng xen kẽ (Zebra Stripes)


// Tô màu hàng chẵn/lẻ xen kẽ để dễ đọc
// Áp dụng cho A2:Z100
// Hàng chẵn (2,4,6...): màu nền xanh nhạt
=ISEVEN(ROW())

// Hàng lẻ (1,3,5...): để nguyên (không cần rule riêng)
// ROW(): trả về số hàng hiện tại
// ISEVEN(): TRUE nếu số chẵn
  

6. Tạo Heatmap Trong Google Sheets

Heatmap là một trong những cách trực quan hóa dữ liệu mạnh mẽ nhất, giúp phát hiện pattern và xu hướng ngay lập tức.

6.1. Heatmap doanh số theo giờ và ngày trong tuần


// Bảng 7 cột (T2-CN) × 24 hàng (0h-23h)
// Giá trị: số đơn hàng trong khung giờ đó

// Áp dụng color scale cho toàn bảng:
// Minpoint: 0 → Trắng/Xanh rất nhạt
// Maxpoint: Auto → Xanh đậm (Navy)

// Kết quả: Ngay lập tức thấy giờ cao điểm (tối màu đậm)
  

6.2. Heatmap hiệu suất nhân viên theo tháng


// Bảng: Cột = 12 tháng, Hàng = Nhân viên
// Giá trị: % đạt KPI

// Color scale:
// Min: 0% → Đỏ
// Mid: 80% → Vàng (ngưỡng đạt)
// Max: 150% → Xanh

// Cách đọc:
// - Nhân viên nào luôn đỏ → cần hỗ trợ
// - Tháng nào cả đội đỏ → có vấn đề ngoài kiểm soát
// - Nhân viên nào luôn xanh → ngôi sao của team
  

6.3. Heatmap tồn kho theo sản phẩm


// Bảng: Sản phẩm × Kho/Chi nhánh
// Giá trị: Số lượng tồn

// Color scale:
// Minpoint: Number = 0 → Đỏ (hết hàng)
// Midpoint: Number = 10 → Vàng (sắp hết)
// Maxpoint: Number = 100 → Xanh (đủ hàng)

// Kết quả: Scan ngay ô đỏ = hết hàng cần nhập gấp
  

7. Ứng Dụng Thực Tế: Dashboard Bán Hàng

Thiết kế dashboard với Conditional Formatting

Kết hợp tất cả kỹ thuật đã học để tạo dashboard bán hàng trực quan:

Bảng KPI nhân viên


// Cột A: Tên nhân viên
// Cột B: Doanh số tháng (số)
// Cột C: % đạt KPI (số)
// Cột D: Số đơn hàng
// Cột E: Tỷ lệ hủy đơn (%)
// Cột F: Xếp hạng

// Conditional Formatting áp dụng:

// 1. Cột C (% KPI): Color scale
//    0% = đỏ, 80% = vàng, 120% = xanh

// 2. Cột E (Tỷ lệ hủy): Tô đỏ nếu > 10%
//    Formula: =E2>10% → Background: #FF0000

// 3. Cột B (Doanh số): Color scale
//    Minpoint = 0, Maxpoint = auto → Trắng → Xanh

// 4. Toàn hàng: Highlight nếu xếp hạng #1
//    =$F2=1 → Background: Vàng gold #FFD700
  

Bảng theo dõi tồn kho theo ngưỡng


// Cột A: Tên sản phẩm
// Cột B: Tồn kho hiện tại
// Cột C: Ngưỡng tối thiểu (min stock)
// Cột D: Ngưỡng đặt hàng lại (reorder point)

// Rule 1: Tồn kho = 0 → Đỏ đậm (hết hàng khẩn cấp)
=$B2=0   → Background: #CC0000, Text: #FFFFFF, Bold

// Rule 2: Tồn < Ngưỡng tối thiểu → Đỏ nhạt
=$B2<$C2  → Background: #FF9999

// Rule 3: Tồn < Ngưỡng đặt hàng → Vàng
=$B2<$D2  → Background: #FFFF99

// Rule 4: Tồn đủ → Xanh nhạt
=$B2>=$D2 → Background: #CCFFCC
  

Calendar heatmap cho doanh số theo ngày


// Tạo bảng lịch tháng: 5 hàng × 7 cột (CN-T7)
// Mỗi ô chứa doanh số ngày đó
// Áp dụng color scale:
// Min: 0 → Trắng
// Max: Auto → Xanh đậm

// Thêm conditional formatting riêng cho cuối tuần:
// Ô T7 và CN → Nền xám nhạt
// Custom formula kiểm tra ngày trong tuần của từng ô
  

8. Tips & Tricks Nâng Cao

Tip 1: Debug công thức Conditional Formatting


// Khi không chắc công thức đúng không:
// 1. Tạo cột phụ kiểm tra
// 2. Nhập công thức vào ô thường
// 3. Xem kết quả TRUE/FALSE
// 4. Khi đúng rồi → chuyển vào Conditional Formatting

// Ví dụ:
// Column I (cột phụ debug):
// I2: =$G2="VIP"   → Xem kết quả TRUE/FALSE
// I3: =$G3="VIP"
// Khi đúng → xóa cột phụ, copy công thức vào CF
  

Tip 2: Copy Conditional Formatting sang sheet khác


// Cách 1: Copy cell → Paste Special → Formatting only
// Cách 2: Format Painter (Paint bucket icon trong toolbar)
//   - Click ô có CF muốn copy
//   - Click "Paint format" button (🎨 icon)
//   - Drag chọn vùng muốn paste CF
  

Tip 3: Performance với nhiều CF rules

Quá nhiều quy tắc Conditional Formatting làm chậm spreadsheet:

  • Hạn chế dùng COUNTIF/VLOOKUP/INDEX trong CF vì chúng rất chậm
  • Áp dụng CF cho vùng cụ thể thay vì cả cột (A:A)
  • Gộp nhiều điều kiện thành ít quy tắc hơn dùng AND/OR
  • Dùng Color Scale thay vì nhiều quy tắc single color khi có thể

Tip 4: Tạo "Status bar" bằng CF


// Kỹ thuật: Dùng ký tự Unicode làm progress bar
// Cột A: Tiến độ % (0-100)
// Cột B: Hiển thị thanh tiến trình bằng ký tự

// Công thức trong B2:
=REPT("█", ROUND(A2/10,0)) & REPT("░", 10-ROUND(A2/10,0)) & " " & A2 & "%"

// Kết quả: ████████░░ 80%

// Thêm conditional formatting cho cột B:
// < 30%: Đỏ | 30-70%: Vàng | > 70%: Xanh
  

Tip 5: Apps Script để conditional formatting động


function capNhatCFTheoDuLieu() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('Dashboard');

  // Lấy giá trị trung bình thực tế
  const data = sheet.getRange('B2:B100').getValues().flat().filter(v => v > 0);
  const avg = data.reduce((a,b) => a+b, 0) / data.length;
  const max = Math.max(...data);

  // Tạo color scale rule với giá trị động
  const range = sheet.getRange('B2:B100');
  const rule = SpreadsheetApp.newConditionalFormatRule()
    .setGradientMinpointWithValue(SpreadsheetApp.InterpolationType.NUMBER,
      "0", "#FF0000")
    .setGradientMidpointWithValue(SpreadsheetApp.InterpolationType.NUMBER,
      avg.toString(), "#FFFF00")
    .setGradientMaxpointWithValue(SpreadsheetApp.InterpolationType.NUMBER,
      max.toString(), "#00FF00")
    .setRanges([range])
    .build();

  const rules = sheet.getConditionalFormatRules();
  rules.push(rule);
  sheet.setConditionalFormatRules(rules);
}
  

Bài Tập Thực Hành

Bài tập: Dashboard doanh số cửa hàng

Tạo dashboard với các yêu cầu:

  1. Bảng doanh số 10 nhân viên × 12 tháng → áp dụng heatmap
  2. Cột "% KPI" → Color scale đỏ-vàng-xanh, mid = 80%
  3. Highlight toàn hàng khi nhân viên "Nghỉ việc"
  4. Tô đỏ ô doanh số bất kỳ tháng nào thấp hơn tháng trước 20%
  5. Zebra striping cho toàn bảng

Kết Luận

Conditional Formatting nâng cao biến Google Sheets từ bảng tính thông thường thành dashboard trực quan và tự cập nhật. Màu sắc, gradient và pattern giúp não bộ xử lý thông tin nhanh hơn nhiều so với đọc số thuần túy.

Bài học tiếp theo trong series sẽ giới thiệu IMPORTRANGE — công cụ kết nối dữ liệu từ nhiều spreadsheets khác nhau, mở ra khả năng xây dựng hệ thống báo cáo phân tán.

Xem Tiếp Trong Series

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