Hướng dẫn

Tính Lương & Thuế TNCN Tự Động Bằng Google Sheets [Template HR 2026]

Tuân HoangTuân Hoang
9 tháng 6, 2026
11 phút đọc
Ảnh minh họa bài viết: Tính Lương & Thuế TNCN Tự Động Bằng Google Sheets [Template HR 2026]

Tại Sao Tính Lương Thủ Công Là "Nỗi Ác Mộng" Của Bộ Phận HR?

Cuối tháng, bạn ngồi với file Excel dày đặc — 50 nhân viên, mỗi người có lương cơ bản khác nhau, phụ cấp khác nhau, số ngày công thực tế khác nhau, và chưa kể thuế TNCN cần tính theo biểu lũy tiến 7 bậc. Một sai sót nhỏ trong công thức, toàn bộ bảng lương sai. Lại phải kiểm tra từng dòng, lại mất nửa ngày làm việc.

Đây là thực tế mà hầu hết HR và kế toán doanh nghiệp vừa và nhỏ tại Việt Nam đang đối mặt. Google Sheets không thể thay thế phần mềm chuyên dụng trong mọi trường hợp — nhưng với doanh nghiệp dưới 100 người, một template bảng lương được xây dựng đúng cách hoàn toàn đủ sức tự động hóa 90% công việc tính lương hàng tháng, miễn phí, không cần cài đặt thêm gì.

Bài viết này sẽ hướng dẫn bạn từng bước xây dựng hệ thống tính lương tự động trên Google Sheets: từ cấu trúc template, công thức thuế TNCN lũy tiến chuẩn 2026, tỷ lệ BHXH/BHYT/BHTN mới nhất, đến gửi phiếu lương tự động bằng Apps Script.

Cấu Trúc Template Bảng Lương Google Sheets

Template được chia thành 4 sheet liên kết với nhau:

  • Sheet "Danh sách NV": Thông tin cố định — họ tên, mã NV, chức vụ, lương cơ bản, phòng ban, vùng lương, số người phụ thuộc đã đăng ký.
  • Sheet "Chấm công": Ngày công thực tế từng tháng — chỉ cần nhập số ngày làm, số ngày phép đã dùng.
  • Sheet "Bảng lương": Sheet chính — tự động kéo dữ liệu từ 2 sheet trên, tính toàn bộ lương gross, khấu trừ BH, thuế TNCN, lương net.
  • Sheet "Dashboard HR": Pivot table và biểu đồ — tổng chi phí nhân sự theo phòng ban, so sánh tháng, cảnh báo lương dưới mức tối thiểu.

Bảng Thuế TNCN Lũy Tiến 2026

Biểu thuế TNCN áp dụng cho thu nhập từ tiền lương, tiền công tại Việt Nam không thay đổi từ năm 2020. Năm 2026 vẫn áp dụng biểu lũy tiến 7 bậc theo Luật Thuế thu nhập cá nhân:

Bậc Thu nhập tính thuế/tháng Thuế suất Thuế phải nộp (tích lũy)
Bậc 1 Đến 5 triệu đồng 5% Tối đa 250.000 đ
Bậc 2 Trên 5 triệu đến 10 triệu 10% 250.000 + 10% phần vượt 5 triệu
Bậc 3 Trên 10 triệu đến 18 triệu 15% 750.000 + 15% phần vượt 10 triệu
Bậc 4 Trên 18 triệu đến 32 triệu 20% 1.950.000 + 20% phần vượt 18 triệu
Bậc 5 Trên 32 triệu đến 52 triệu 25% 4.750.000 + 25% phần vượt 32 triệu
Bậc 6 Trên 52 triệu đến 80 triệu 30% 9.750.000 + 30% phần vượt 52 triệu
Bậc 7 Trên 80 triệu 35% 18.150.000 + 35% phần vượt 80 triệu

Lưu ý quan trọng: Đây là biểu thuế áp dụng cho thu nhập tính thuế — tức là sau khi đã trừ đi giảm trừ gia cảnh và các khoản khấu trừ hợp lệ khác. Không phải áp dụng trực tiếp lên lương gross.

Giảm Trừ Gia Cảnh 2026

Mức giảm trừ gia cảnh theo Nghị quyết 954/2020/UBTVQH14, áp dụng từ kỳ tính thuế 2020 và vẫn có hiệu lực năm 2026:

  • Giảm trừ cho bản thân người nộp thuế: 11.000.000 đồng/tháng
  • Giảm trừ cho mỗi người phụ thuộc: 4.400.000 đồng/người/tháng

Người phụ thuộc phải được đăng ký và xác nhận với cơ quan thuế. Nhân viên cần nộp hồ sơ đăng ký NPT cho bộ phận HR để được tính giảm trừ đúng.

Tỷ Lệ Bảo Hiểm Xã Hội 2026

Người lao động (NLĐ) đóng tổng cộng 10,5% trên mức lương đóng bảo hiểm (thường là lương cơ bản, không tính phụ cấp):

Loại bảo hiểm NLĐ đóng NSDLĐ đóng
Bảo hiểm xã hội (BHXH) 8% 17%
Bảo hiểm y tế (BHYT) 1,5% 3%
Bảo hiểm thất nghiệp (BHTN) 1% 1%
Tổng 10,5% 21%

Mức lương tối thiểu vùng 2026 — cũng là mức tham chiếu để kiểm tra vi phạm:

  • Vùng I (Hà Nội, TP.HCM, Bình Dương...): 5.005.000 đồng/tháng
  • Vùng II (Hải Phòng, Đà Nẵng, Cần Thơ...): 4.410.000 đồng/tháng
  • Vùng III (Tỉnh thành loại 2): 3.860.000 đồng/tháng
  • Vùng IV (Các tỉnh còn lại): 3.450.000 đồng/tháng

Xây Dựng Sheet "Bảng Lương" — Từng Cột Từng Công Thức

Dưới đây là cấu trúc cột chuẩn và công thức cho từng cột. Dữ liệu bắt đầu từ hàng 2 (hàng 1 là tiêu đề).

Nhóm 1: Thông Tin Cơ Bản

  • Cột A: STT (nhập tay hoặc dùng =ROW()-1)
  • Cột B: Họ tên (link từ sheet Danh sách NV)
  • Cột C: Chức vụ
  • Cột D: Lương cơ bản (dùng làm căn cứ tính BH)

Nhóm 2: Phụ Cấp

  • Cột E: Phụ cấp ăn trưa (thường cố định, VD: 730.000đ/tháng)
  • Cột F: Phụ cấp xăng xe
  • Cột G: Phụ cấp điện thoại

Nhóm 3: Ngày Công

  • Cột H: Số ngày công chuẩn tháng (thường 22 hoặc 26 ngày tùy quy định)
  • Cột I: Số ngày thực tế làm (link từ sheet Chấm công)
  • Cột J: Số ngày nghỉ phép có lương đã dùng

Nhóm 4: Tính Lương Gross

Cột K — Lương theo ngày công:

=D2*(I2/H2)

Cột L — Tổng phụ cấp:

=E2+F2+G2

Cột M — Lương Gross (lương thực nhận trước khấu trừ):

=K2+L2

Nhóm 5: Khấu Trừ Bảo Hiểm

Cột N — Lương đóng BH (thường = lương cơ bản, có thể khác theo thỏa thuận):

=D2

Cột O — BHXH 8%:

=N2*8%

Cột P — BHYT 1,5%:

=N2*1.5%

Cột Q — BHTN 1%:

=N2*1%

Cột R — Tổng khấu trừ BH NLĐ:

=O2+P2+Q2

Nhóm 6: Tính Thuế TNCN

Cột S — Thu nhập chịu thuế (lương gross sau khi trừ BH):

=M2-R2

Cột T — Số người phụ thuộc (NPT): nhập tay hoặc link từ sheet Danh sách NV.

Cột U — Giảm trừ bản thân:

=11000000

Cột V — Giảm trừ NPT:

=T2*4400000

Cột W — Thu nhập tính thuế (không âm):

=MAX(0,S2-U2-V2)

Cột X — Thuế TNCN lũy tiến (công thức đầy đủ 7 bậc):

=IF(W2<=5000000, W2*5%,
IF(W2<=10000000, 250000+(W2-5000000)*10%,
IF(W2<=18000000, 750000+(W2-10000000)*15%,
IF(W2<=32000000, 1950000+(W2-18000000)*20%,
IF(W2<=52000000, 4750000+(W2-32000000)*25%,
IF(W2<=80000000, 9750000+(W2-52000000)*30%,
18150000+(W2-80000000)*35%))))))

Cột Y — Lương Net (thực lãnh):

=M2-R2-X2

Cột Z — Ghi chú: ví dụ nghỉ không lương, tạm ứng, thưởng đặc biệt...

Ví Dụ Tính Thực Tế: Nhân Viên Lương Gross 20 Triệu, 2 NPT

Áp dụng công thức vào một trường hợp cụ thể để kiểm tra:

Thông tin đầu vào:

  • Lương cơ bản: 18.000.000 đ
  • Phụ cấp ăn: 730.000 đ | Phụ cấp xăng: 500.000 đ | Phụ cấp điện thoại: 200.000 đ
  • Ngày công chuẩn: 22 | Ngày làm thực tế: 22 (làm đủ tháng)
  • Số NPT đã đăng ký: 2

Bước 1 — Tính lương Gross:

  • Lương theo ngày công: 18.000.000 × (22/22) = 18.000.000 đ
  • Tổng phụ cấp: 730.000 + 500.000 + 200.000 = 1.430.000 đ
  • Lương Gross: 18.000.000 + 1.430.000 = 19.430.000 đ

Bước 2 — Tính khấu trừ bảo hiểm (tính trên lương cơ bản):

  • BHXH: 18.000.000 × 8% = 1.440.000 đ
  • BHYT: 18.000.000 × 1,5% = 270.000 đ
  • BHTN: 18.000.000 × 1% = 180.000 đ
  • Tổng khấu trừ BH: 1.890.000 đ

Bước 3 — Tính thu nhập tính thuế:

  • Thu nhập chịu thuế: 19.430.000 − 1.890.000 = 17.540.000 đ
  • Giảm trừ bản thân: 11.000.000 đ
  • Giảm trừ NPT (2 người): 2 × 4.400.000 = 8.800.000 đ
  • Thu nhập tính thuế: MAX(0, 17.540.000 − 11.000.000 − 8.800.000) = MAX(0, −2.260.000) = 0 đ

Kết quả: Thu nhập tính thuế âm → Thuế TNCN = 0 đồng

Bước 4 — Lương Net:

  • Lương Net = 19.430.000 − 1.890.000 − 0 = 17.540.000 đồng

Đây là ví dụ điển hình: nhân viên có 2 NPT với lương gross 19-20 triệu thường không phải đóng thuế TNCN, nhờ giảm trừ gia cảnh đủ để đưa thu nhập tính thuế về 0.

Tính Ngày Công Và Phép Năm Tự Động

Sheet "Chấm công" nên có cấu trúc dạng ma trận: cột là ngày trong tháng (1-31), hàng là nhân viên. Dùng ký hiệu đơn giản: X = có mặt, P = nghỉ phép, trống = nghỉ không lương.

Đếm số ngày làm thực tế:

=COUNTIF(C2:AG2,"X")+COUNTIF(C2:AG2,"P")

Đếm số ngày phép đã dùng trong tháng:

=COUNTIF(C2:AG2,"P")

Phép năm tích lũy (1 ngày/tháng, tối đa 12 ngày/năm):

=MIN(12, MONTH(TODAY()))

Phép còn lại đến hiện tại:

=MIN(12,MONTH(TODAY())) - SUMIF(BangChamCong!A:A,B2,BangChamCong!SoNgayPhep)

Conditional Formatting — Cảnh Báo Tự Động

Highlight lương net thấp hơn lương tối thiểu vùng (ví dụ Vùng I = 5.005.000 đ):

  1. Chọn cột Y (Lương Net), từ Y2 đến Y100.
  2. Vào Format → Conditional formatting.
  3. Chọn Custom formula is, nhập: =AND(Y2>0, Y2<5005000)
  4. Chọn màu nền đỏ nhạt (#FFCDD2).

Highlight nhân viên nghỉ quá số ngày phép còn lại:

=J2 > PhepConLai

Gửi Phiếu Lương Tự Động Bằng Apps Script

Sau khi bảng lương hoàn tất, thay vì copy từng dòng vào email, bạn có thể dùng Apps Script để gửi phiếu lương cá nhân tự động cho toàn bộ nhân viên chỉ một lần click.

Vào Extensions → Apps Script và dán đoạn code sau:

function guiPhieuLuong() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet()
    .getSheetByName('Bảng lương');
  const data = sheet.getDataRange().getValues();

  // Hàng 0 là tiêu đề, bắt đầu từ hàng 1
  for (let i = 1; i < data.length; i++) {
    const row = data[i];
    if (!row[1]) continue; // Bỏ qua hàng trống

    const hoTen    = row[1];  // Cột B
    const chucVu   = row[2];  // Cột C
    const gross    = row[12]; // Cột M
    const khauTruBH = row[17];// Cột R
    const thue     = row[23]; // Cột X
    const net      = row[24]; // Cột Y
    const email    = row[27]; // Cột AB (email nhân viên)

    if (!email) continue;

    const thang = Utilities.formatDate(new Date(), 'Asia/Ho_Chi_Minh', 'MM/yyyy');

    const tieuDe = `Phiếu lương tháng ${thang} - ${hoTen}`;
    const noiDung = `
<p>Xin chào <strong>${hoTen}</strong>,</p>
<p>Dưới đây là chi tiết lương tháng ${thang}:</p>
<table border="1" cellpadding="8" style="border-collapse:collapse">
  <tr><td>Chức vụ</td><td>${chucVu}</td></tr>
  <tr><td>Lương Gross</td><td>${gross.toLocaleString('vi-VN')} đ</td></tr>
  <tr><td>Khấu trừ BH</td><td>${khauTruBH.toLocaleString('vi-VN')} đ</td></tr>
  <tr><td>Thuế TNCN</td><td>${thue.toLocaleString('vi-VN')} đ</td></tr>
  <tr style="font-weight:bold"><td>Lương NET thực lãnh</td>
    <td>${net.toLocaleString('vi-VN')} đ</td></tr>
</table>
<p>Trân trọng,<br>Phòng Nhân sự</p>
`;

    GmailApp.sendEmail(email, tieuDe, '', { htmlBody: noiDung });
    Utilities.sleep(500); // Tránh rate limit Gmail
  }

  SpreadsheetApp.getUi().alert('Đã gửi phiếu lương thành công!');
}

Để tự động chạy vào ngày 1 hàng tháng, vào Triggers (biểu tượng đồng hồ)Add Trigger → chọn hàm guiPhieuLuong, Event type: Time-driven → Month timer → Day 1 of month.

Dashboard HR — Tổng Hợp Chi Phí Nhân Sự

Sheet "Dashboard HR" dùng SUMIF và PIVOT để tổng hợp tức thì:

Tổng chi phí nhân sự theo phòng ban (phòng ban ở cột C của Danh sách NV, lương net ở cột Y của Bảng lương):

=SUMIF('Danh sách NV'!C:C,"Phòng Marketing",'Bảng lương'!Y:Y)

Số nhân viên mỗi phòng:

=COUNTIF('Danh sách NV'!C:C,"Phòng Marketing")

Lương bình quân toàn công ty:

=AVERAGE('Bảng lương'!Y2:Y100)

Tổng quỹ lương tháng (bao gồm chi phí NSDLĐ đóng BH):

=SUM('Bảng lương'!M2:M100) * (1 + 21%)

Tạo biểu đồ cột (Column chart) từ bảng tổng hợp theo phòng ban để visualize nhanh phân bổ chi phí nhân sự.

Mẹo Bảo Vệ Công Thức Và Dữ Liệu

  • Khóa vùng công thức: Chọn các cột K đến Y → chuột phải → Protect range → chỉ cho phép HR Lead chỉnh sửa. Ngăn nhân viên vô tình xóa công thức.
  • Validation dữ liệu: Cột I (ngày công thực tế) — đặt validation ≥0≤H2 để tránh nhập sai.
  • Named ranges: Đặt tên cho các vùng thường dùng (VD: LuongNet = Y2:Y100) để công thức ở Dashboard dễ đọc hơn.
  • Version history: Google Sheets tự lưu lịch sử thay đổi. Vào File → Version history → See version history để khôi phục nếu cần.

Những Lỗi Thường Gặp Và Cách Sửa

  • Thuế TNCN ra số âm: Kiểm tra công thức cột W — phải có hàm MAX(0,...) để đảm bảo thu nhập tính thuế không âm.
  • Lương net lớn hơn gross: Kiểm tra công thức khấu trừ BH — tỷ lệ phải là phần trăm (8% không phải 8).
  • Lỗi #REF! khi link sheet: Kiểm tra tên sheet — Google Sheets phân biệt hoa thường và dấu cách trong tên sheet.
  • Apps Script lỗi quota email: Gmail giới hạn 100 email/ngày (tài khoản miễn phí) hoặc 1500 email/ngày (Workspace). Thêm Utilities.sleep(500) giữa các email.

Tải Template Miễn Phí

Template Google Sheets tính lương tự động đầy đủ — bao gồm cả 4 sheet (Danh sách NV, Chấm công, Bảng lương, Dashboard HR), công thức thuế TNCN lũy tiến sẵn, conditional formatting và Apps Script gửi phiếu lương — được cung cấp miễn phí.

Cách sử dụng sau khi tải:

  1. Mở link → File → Make a copy để tạo bản copy vào Google Drive của bạn.
  2. Cập nhật sheet "Danh sách NV" với thông tin nhân viên thực tế.
  3. Điều chỉnh lương tối thiểu vùng trong công thức conditional formatting phù hợp địa bàn doanh nghiệp.
  4. Test với 1-2 nhân viên trước khi áp dụng toàn bộ.

Kết Luận

Một template bảng lương Google Sheets được xây dựng đúng cách không chỉ tiết kiệm 2-3 giờ mỗi cuối tháng — nó còn loại bỏ rủi ro sai sót trong tính thuế TNCN và bảo hiểm, vốn có thể dẫn đến phạt thuế hoặc kiện tụng lao động.

Điểm mạnh nhất của giải pháp này là hoàn toàn miễn phí, không cần cài đặt, cộng tác được ngay — phù hợp với startup, SMB, hoặc bất kỳ doanh nghiệp nào chưa sẵn sàng đầu tư vào phần mềm HR chuyên dụng.

Khi doanh nghiệp lớn lên (thường từ 80-100 nhân viên trở lên), hãy cân nhắc chuyển sang phần mềm chuyên dụng như MISA HRM, Base HRM+, hoặc FastHRM. Nhưng cho đến lúc đó, Google Sheets với công thức đúng là hoàn toàn đủ dùng.

Nguồn tham khảo: Nghị quyết 954/2020/UBTVQH14 về mức giảm trừ gia cảnh | Tổng cục Thuế Việt Nam

Chia sẻ bài viết:

Tuân Hoang

Tuân Hoang

Đội ngũ SheetStore

Google SheetsGoogle Apps ScriptCRMAutomationPhần mềm quản lý doanh nghiệp

Google Workspace Certified, 5+ years experience

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