Google Sheets hay Excel: so sánh thật cho người dùng văn phòng và chủ cửa hàng nhỏ
Google Sheets hay Excel: so chi phí, làm chung, dùng trên điện thoại, khi mất mạng, giới hạn dữ liệu, Apps Script với VBA và các công thức khác nhau.
Mẹo Google Sheets · 8 phút đọc
Một hàm IMAGE ghép với link ảnh của img.vietqr.io là đủ để mỗi dòng trong Google Sheets có một mã QR chuyển khoản điền sẵn số tiền và nội dung — khách quét bằng app ngân hàng là chuyển đúng. Bài này đi qua cấu trúc link, bảng mã BIN, cách dùng ENCODEURL cho nội dung, các lỗi hay gặp, và một điều cần biết trước: số tài khoản, số tiền, nội dung sẽ đi qua máy chủ của bên thứ ba.

Tạo mã QR chuyển khoản ngay trong Google Sheets — 1 hàm
Xem trên YouTube ↗Giả sử cột B là số tiền, cột C là nội dung chuyển khoản. Gõ vào D2 (thay 970436 và số tài khoản bằng của bạn):
=IMAGE("https://img.vietqr.io/image/970436-0011001234567-compact.png?amount="&ROUND(B2;0)&"&addInfo="&ENCODEURL(C2)&"&accountName="&ENCODEURL("NGUYEN VAN AN"))Kéo công thức xuống là mỗi dòng một mã. Tăng chiều cao hàng lên khoảng 150 px để ảnh đủ to cho camera điện thoại quét.
Theo tài liệu "Quick Link" của VietQR.io, link ảnh gồm phần đường dẫn img.vietqr.io/image/BANK_ID-ACCOUNT_NO-TEMPLATE.png và ba tham số sau dấu ?: amount, addInfo, accountName, nối với nhau bằng dấu &.
| Phần | Ý nghĩa | Lưu ý |
|---|---|---|
| BANK_ID | Mã BIN 6 số của ngân hàng (970436) hoặc tên viết tắt (vietcombank, VCB) | Dùng mã BIN cho chắc, không sợ viết sai tên |
| ACCOUNT_NO | Số tài khoản nhận tiền | Tối đa 19 ký tự, chỉ chữ số, không khoảng trắng |
| TEMPLATE | Kiểu ảnh: compact (540×540), compact2 (có thông tin chuyển khoản), qr_only (chỉ mã), print | compact gọn nhất cho một ô |
| amount | Số tiền | Số nguyên dương, không dấu chấm phân cách |
| addInfo | Nội dung chuyển khoản | Tối đa 50 ký tự, không ký tự đặc biệt |
| accountName | Tên in lên ảnh | Không thuộc chuẩn VietQR — app ngân hàng vẫn hiện tên thật của chủ tài khoản |
Muốn đổi tài khoản cho cả file mà không sửa từng công thức, để mã BIN ở G1, số tài khoản ở G2, tên ở G3:
=IF(B2=""; ""; IMAGE("https://img.vietqr.io/image/"&$G$1&"-"&$G$2&"-compact.png?amount="&ROUND(B2;0)&"&addInfo="&ENCODEURL(C2)&"&accountName="&ENCODEURL($G$3)))| Ngân hàng | Mã BIN | Ngân hàng | Mã BIN |
|---|---|---|---|
| Vietcombank | 970436 | MBBank | 970422 |
| VietinBank | 970415 | ACB | 970416 |
| BIDV | 970418 | VPBank | 970432 |
| Agribank | 970405 | TPBank | 970423 |
| Techcombank | 970407 | Sacombank | 970403 |
Thử với chính tài khoản của bạn trước
Trước khi gửi cho ai, quét mã bằng app ngân hàng của bạn: app phải hiện đúng tên chủ tài khoản, đúng số tiền, đúng nội dung. Không cần bấm chuyển. Sai một chữ số BIN hay số tài khoản là tiền đi nhầm chỗ.
Link không được chứa khoảng trắng, dấu &, dấu ? hay chữ tiếng Việt có dấu ở dạng nguyên. Hàm ENCODEURL đổi các ký tự đó thành mã %XX: khoảng trắng thành %20, "ò" thành %C3%B2 (hai byte UTF-8), "&" thành %26. Thiếu ENCODEURL, nội dung "A101 & A102" sẽ cắt link làm đôi ở dấu &, phần sau bị hiểu thành một tham số khác.

ENCODEURL làm link hợp lệ, nhưng không làm nội dung có dấu dùng được ở mọi ngân hàng: tài liệu VietQR ghi nội dung không có ký tự đặc biệt, và nhiều app tự bỏ dấu khi hiện. Cách chắc nhất là ghép nội dung từ mã không dấu, ví dụ mã phòng + kỳ:
=A2&" "&TEXT(D2;"yyyymm")Nội dung ngắn, không dấu, theo một mẫu cố định còn có lợi khi đối chiếu: nhìn sao kê thấy "A101 202610" là biết tiền phòng nào, tháng nào.
Hàm IMAGE không tự vẽ mã QR. Mỗi lần trang tính mở hoặc tính lại, Google tải ảnh từ img.vietqr.io theo đúng link bạn ghép — nghĩa là số tài khoản, số tiền và nội dung nằm nguyên trong link và được gửi tới một dịch vụ bên ngoài, không phải của Google hay ngân hàng.
Nếu không muốn dữ liệu đi qua bên thứ ba, cách còn lại là tự sinh mã theo chuẩn VietQR (EMVCo + CRC) bằng Apps Script ngay trong file — dài hơn nhiều so với một công thức, nên phần lớn người dùng chọn hàm IMAGE.


Mẫu Quản lý lớp học PRO cũng tạo mã QR học phí ngay trong file như vậy; mẫu Quản lý đi chơi không dùng Apps Script nên lấy ảnh QR từ img.vietqr.io bằng đúng hàm IMAGE trong bài này.
| Triệu chứng | Nguyên nhân | Cách sửa |
|---|---|---|
| Ô trống, không có ảnh | Số tiền rỗng hoặc bằng 0, BIN sai, mất mạng | Kiểm tra từng ô G1, G2, B2; mở link trong trình duyệt xem có ảnh không |
| App báo số tiền sai | Số tiền có phần lẻ (1.161.290,32) hoặc là chữ | Bọc ROUND(B2;0); số dạng chữ xem sửa lỗi SUM bằng 0 |
| Nội dung bị cắt | Có dấu & hoặc # chưa ENCODEURL, hoặc quá 50 ký tự | Dùng ENCODEURL, rút ngắn nội dung |
| Báo lỗi công thức | Dấu phẩy thay vì chấm phẩy (hoặc ngược lại) | Vùng Việt Nam dùng ;, vùng Hoa Kỳ dùng , |
| Ảnh quá nhỏ, khó quét | Hàng thấp | Tăng chiều cao hàng, hoặc IMAGE(link; 4; 160; 160) để đặt cỡ 160×160 px |
Link tạo mã nhanh chỉ là một địa chỉ ảnh, dán vào trình duyệt là thấy, không cần đăng ký để thử. Tài liệu VietQR.io lưu ý dự án chính thức nên tạo template riêng — nếu dùng thường xuyên cho việc kinh doanh, đọc điều khoản trên vietqr.io.
Mã theo chuẩn VietQR của Napas nên các app ngân hàng hỗ trợ VietQR quét được. Hãy tự quét thử bằng app của bạn và của một ngân hàng khác trước khi gửi hàng loạt.
Không nên. ENCODEURL làm link hợp lệ, nhưng VietQR yêu cầu nội dung không có ký tự đặc biệt và nhiều app tự bỏ dấu. Dùng mã ngắn không dấu như "A101 202610".
Excel 2016–2021 không có hàm IMAGE, còn Excel 365 có hàm IMAGE với cú pháp khác. Công thức trong bài viết cho Google Sheets; trên Excel hãy để cột ghi ngân hàng, số tài khoản, số tiền để chuyển tay.
Không nếu bạn để mã BIN, số tài khoản, tên ở ô thiết lập ($G$1, $G$2, $G$3) như công thức thứ hai trong bài. Sửa ba ô đó là mọi mã QR đổi theo.
Đi chơi về chia tiền: mỗi người một mã QR chuyển đúng số (Short)
Xem trên YouTube ↗Mẫu khác liên quan: Quản lý lớp học PRO, Quản lý đi chơi.
Google Sheets hay Excel: so chi phí, làm chung, dùng trên điện thoại, khi mất mạng, giới hạn dữ liệu, Apps Script với VBA và các công thức khác nhau.
Sửa lỗi ngày tháng Google Sheets: gõ 03/07 ra 7 tháng 3, ngày dạng chữ, TODAY lệch ngày. Đổi vùng Việt Nam, múi giờ GMT+7 và công thức sửa cột cũ.
Hàm SUM ra 0 hoặc thiếu tiền dù cột đầy số? Số đang là chữ. Cách nhận ra bằng ISTEXT, LEN và 4 cách sửa lỗi SUM bằng 0 trong Google Sheets, Excel.
Cách khoá ô công thức trong Google Sheets bằng Bảo vệ trang tính và dải ô: chỉ cảnh báo hay chặn hẳn, khoá cả trang chừa ô nhập, những gì bảo vệ không làm được.
Xem thêm mẹo và video hướng dẫn trên kênh YouTube HiTaVa, hoặc đọc các bài khác trong chủ đề Mẹo Google Sheets.
Cần hỏi thêm?Zalo 0935077673 (Hải Vân)