
Trong AppSheet, app formula là công thức khiến một cột luôn được tính lại và người dùng chỉ đọc, không sửa tay được; còn Initial value (giá trị mặc định) chỉ điền sẵn lúc thêm dòng mới và người dùng vẫn sửa đè được. Muốn Thành tiền luôn đúng thì dùng app formula; muốn Đơn giá tự điền nhưng vẫn cho giảm giá tay thì dùng Initial value. Bài này dùng form Chi tiết đơn của một app bán hàng để chỉ rõ cách chọn, chỗ đặt trong editor và một cái bẫy hay gặp. Video bên dưới làm mẫu từng bước, nhưng đọc bài này là đủ để làm theo.
Hai cách để cột tự có giá trị: app formula và initial value khác nhau ở đâu?
Khác nhau ở hai câu hỏi: người dùng có sửa tay được không, và giá trị có bị tính lại khi dòng được sửa không. Với app formula, câu trả lời là «không» và «có»; với Initial value là «có» và «không».
- App formula: giá trị của cột luôn được tính từ công thức. Người dùng thấy ô ở dạng chỉ đọc.
- Initial value (giá trị mặc định trong AppSheet): giá trị gợi ý lúc tạo dòng mới. Người dùng sửa đè được.
Cả hai đều viết bằng expression (biểu thức) của AppSheet, và biểu thức phải ra đúng kiểu của cột. Cột kiểu Price thì biểu thức phải ra một số tiền; cột kiểu Date thì phải ra ngày. Nếu cần ôn các kiểu cột, xem bài Column type AppSheet: bảng tổng hợp mọi kiểu cột.
| Tiêu chí | App formula | Initial value | Công thức Google Sheet |
|---|---|---|---|
| Người dùng sửa tay trong app? | Không, ô chỉ đọc | Có | Không dành cho ô nhập trong app; chạy ở phía Sheet |
| Tính lúc nào? | Mở form hoặc khi dòng bị sửa; cột phụ thuộc cập nhật ngay khi gõ | Chỉ khi thêm dòng mới | Khi dữ liệu đã sync về Sheet |
| Ví dụ | Thành tiền = [Số lượng] * [Đơn giá] | Ngày đơn = TODAY() | Báo cáo tổng hợp trong tab Sheet |

Công thức tự tính AppSheet: app formula được tính lại khi nào?
Mỗi lần mở form, hoặc khi dòng bị sửa bằng cách khác (ví dụ một action), mọi app formula của dòng đó được tính lại. Trong lúc người dùng đang gõ, cột phụ thuộc vào cột vừa đổi cũng cập nhật ngay.
Ví dụ ở form Chi tiết đơn của app «Bán hàng 5F», cột Thành tiền có app formula:
[Số lượng] * [Đơn giá]
Nhân viên đổi Số lượng từ 2 lên 3, ô Thành tiền nhảy theo ngay, không ai phải bấm gì. Vì là app formula nên nhân viên cũng không thể gõ đè một con số khác vào Thành tiền. Đây chính là lý do cột có App formula không sửa tay được: AppSheet coi giá trị đó là kết quả bắt buộc của công thức, nên khoá ô để số liệu không lệch.
Ví dụ trong tài liệu của Google cũng tương tự: cột Tax có app formula [Price]*0.05, Price đổi thì Tax tự đổi theo.

Initial value AppSheet chỉ tính khi thêm dòng mới
Initial value chỉ chạy một lần, lúc dòng được tạo. Sau đó sửa dòng cũ, AppSheet không tính lại, và ô cũng không bị khoá. Vì vậy nó hợp với những giá trị «gợi ý ban đầu»:
- Ngày đơn =
TODAY() - Trạng thái =
"Mới" - Nhân viên = biểu thức lấy người đang đăng nhập
- Cột key =
UNIQUEID()(xem bài Key AppSheet: chọn khoá chính đúng và dùng UNIQUEID()) - Đơn giá = giá bán hiện tại của sản phẩm, viết là
[Sản phẩm].[Giá bán]
Biểu thức [Sản phẩm].[Giá bán] là dereference (đọc giá trị cột từ dòng được Ref trỏ tới); tôi chỉ nhắc ở đây để bạn thấy cách dùng.
Đơn giá nên dùng app formula hay Initial value?
Nên dùng Initial value, vì hai lý do thực tế. Thứ nhất, giá bán có thể đổi vào tháng sau, nhưng đơn cũ phải giữ giá lúc bán; Initial value chỉ tính lúc tạo dòng nên đơn cũ không bị đổi giá. Thứ hai, cửa hàng thường cho nhân viên giảm giá tay cho khách quen; Initial value cho sửa, còn app formula thì khoá ô.
Giả sử một cửa hàng gạo bán bao 10 kg giá 180.000 đồng (số minh hoạ). Nhân viên chọn sản phẩm, Đơn giá tự điền 180.000; với khách quen họ sửa thành 175.000. Thành tiền vẫn tự nhân theo giá đã sửa. Hai cột, hai cơ chế, và đúng việc của mỗi cột.
![Ô Initial value của cột Đơn giá bằng [Sản phẩm].[Giá bán]](/api/media/general/2026/10/98cfb955-6d76-4f15-943b-8ef0ab1e342c.webp)
Vì sao Tổng tiền không tự cập nhật khi sửa chi tiết đơn?
Vì cột thật có app formula tra dòng ở bảng khác (dùng SELECT() hay LOOKUP()) không tự tính lại khi dòng ở bảng kia thay đổi. Nó chỉ tính lại khi chính dòng của nó được sửa.
Ví dụ: bảng Đơn hàng có cột Tổng tiền cộng từ các dòng Chi tiết đơn. Bạn sửa Số lượng ở một dòng chi tiết, Thành tiền của dòng đó đổi đúng, nhưng Tổng tiền ở bảng Đơn hàng vẫn đứng yên, vì dòng Đơn hàng chưa hề bị sửa. Cách khắc phục theo tài liệu của Google là dùng virtual column (cột ảo, không lưu xuống Sheet mà tính khi cần) cho những giá trị phụ thuộc dòng ở bảng khác. Cái giá của cột ảo là tốc độ khi dữ liệu lớn, nên đừng lạm dụng.
Nói cách khác, app formula app formula trên cột thật rất tốt khi chỉ dựa vào các cột cùng dòng; hễ phải nhìn sang dòng khác thì hãy nghĩ tới cột ảo.
Đặt app formula và Initial value ở đâu trong editor?
Cả hai nằm trong mục Auto Compute của cột. Các bước:
- Vào Data, chọn bảng (ví dụ Chi tiết đơn).
- Bấm Edit ở cột cần cài (ví dụ Thành tiền).
- Kéo tới mục Auto Compute.
- Điền biểu thức vào App formula hoặc Initial value.
- Bấm Done, rồi Save.
Nếu muốn cột quay về Initial value mỗi lần dòng được sửa (ví dụ cột «Người sửa cuối»), bật thêm Reset on edit?. Chi tiết xem ở tài liệu chính thức về Reset on edit?. Nếu cột đã có App formula thì người dùng không ghi đè được, nên hai tuỳ chọn này thường dùng cho từng cột riêng, không trộn lẫn.
App formula khác công thức trong Google Sheet thế nào?
Công thức Sheet chỉ chạy khi dữ liệu đã sync về Sheet, nên người dùng chỉ thấy kết quả sau khi Save và Sync. App formula chạy ngay trên app khi người dùng thao tác, và kết quả được ghi vào ô Sheet khi sync.
- App formula: ưu điểm là tức thì trên form, hợp cho Thành tiền hay chiết khấu hiển thị ngay; nhược điểm là chỉ biết dữ liệu mà app đang có.
- Công thức Sheet: ưu điểm là quen thuộc, mạnh cho báo cáo tổng hợp nặng; nhược điểm là người dùng không thấy kết quả tức thì trên form.
Hai cơ chế bổ trợ nhau: tính toán cần hiện ngay trên form thì dùng app formula, báo cáo tổng hợp nặng có thể để Sheet. Khi nào nên tránh công thức Sheet, xem bài Công thức Google Sheet trong app AppSheet: khi nào dùng, khi nào tránh.
Chọn nhanh: app formula, Initial value hay virtual column?
| Tình huống | Chọn | Ví dụ |
|---|---|---|
| Luôn đúng theo cột khác cùng dòng, không cho sửa | App formula trên cột thật | Thành tiền |
| Gợi ý ban đầu, cho sửa, chỉ tính lúc tạo | Initial value | Đơn giá, Ngày đơn |
| Phụ thuộc dòng ở bảng khác, hoặc không cần lưu xuống Sheet | Virtual column | Tổng tiền, Công nợ |

Tóm tắt và bước tiếp theo
App formula appsheet dùng cho giá trị luôn phải đúng và không cho sửa; Initial value dùng cho giá trị gợi ý lúc tạo dòng; giá trị phụ thuộc bảng khác thì dùng virtual column. Hãy mở bảng Chi tiết đơn của bạn và thử: đặt Thành tiền là app formula, Đơn giá là Initial value lấy từ sản phẩm, rồi sửa một đơn cũ để kiểm tra giá cũ không bị đổi.
Nguồn tham khảo: tài liệu chính thức của AppSheet về app formula và initial value. Nếu muốn học bài bản cách thiết kế app bán hàng, bạn có thể xem thêm các lớp tại trang khoá học.
Xem thêm
Câu hỏi thường gặp
›App formula và Initial value trong AppSheet khác nhau thế nào?
App formula luôn tính lại giá trị của cột và hiển thị ô chỉ đọc, người dùng không sửa tay được. Initial value chỉ điền sẵn khi thêm dòng mới và người dùng sửa đè được; sửa dòng cũ không tính lại.
›Vì sao cột có App formula không sửa tay được?
Vì AppSheet coi giá trị của cột đó là kết quả bắt buộc của công thức, nên hiển thị ở dạng chỉ đọc để số liệu không bị lệch. Nếu cần cho người dùng sửa, hãy chuyển công thức sang Initial value.
›Đơn giá trong chi tiết đơn nên dùng App formula hay Initial value?
Nên dùng Initial value, ví dụ [Sản phẩm].[Giá bán]. Như vậy đơn cũ giữ giá lúc bán dù giá bán đổi sau này, và nhân viên vẫn giảm giá tay được cho khách quen.
›App formula có tự cập nhật khi bảng khác thay đổi không?
Không với cột thật. Cột có App formula dùng SELECT() hoặc LOOKUP() chỉ tính lại khi chính dòng đó được sửa, không tính lại khi dòng ở bảng khác đổi. Với trường hợp như Tổng tiền cộng từ Chi tiết đơn, hãy dùng virtual column.
Tác giả
Chuyên gia chuyển đổi số · Đại diện 5F Edu
Hơn 8 năm triển khai và tư vấn chuyển đổi số cho doanh nghiệp vừa và nhỏ: chuẩn hoá quy trình, xây phần mềm quản lý bằng AppSheet và web app, tự động hoá bằng N8N. Người làm kênh YouTube Nghiện AppSheet.



