Appsheet - một nền tảng phát triển ứng dụng không cần code, giúp bạn xây dựng ứng dụng một cách dễ dàng và linh hoạt. Chỉ cần bạn có kỹ năng phân tích, hệ thống hóa dữ liệu và sử dụng các hàm cơ bản, bạn có thể tạo được ứng dụng theo ý muốn của mình.
Bởi vậy, hôm nay Gitiho sẽ tổng hợp các hàm thông dụng trong Appsheet và cách sử dụng chúng. Cùng xem nhé!
Appsheet sử dụng công thức để tính toán, giúp việc tạo ứng dụng có thể tùy chỉnh linh hoạt phù hợp với nhu cầu sử dụng của bạn. Về cơ bản, Appsheet hỗ trợ 2 loại công thức là công thức trên Appsheet và Google sheet. Ưu, nhược điểm của 2 loại này là:
So sánh | Công thức trên Appsheet | Công thức trên Google Sheet |
Đặc điểm | Công thức được dùng trong môi trường Appsheet để tính toán các trường dữ liệu trong một bảng dữ liệu hoặc tạo ra các giá trị mới. | Là công thức được dùng trong Google Sheet để tính toán các trường dữ liệu trong bảng dữ liệu hoặc tạo ra các giá trị mới. |
Ưu điểm |
|
|
Nhược điểm |
|
|
Tóm lại, việc tính toán trên Appsheet sẽ nhanh và dễ dàng hơn, nhưng công thức trên Google Sheet có thể tính toán chính xác hơn.
Xem thêm: Hướng dẫn cài đặt Action cho ứng dụng trong Appsheet
Trong quá trình lập công thức trên Google Appsheet, có một số điều cần lưu ý để đảm bảo rằng ứng dụng của bạn hoạt động một cách chính xác và mượt mà:
Một số quy tắc cần tuân thủ khi sử dụng hàm trong Appsheet:
Bây giờ, hãy đi vào chi tiết về các hàm thông dụng trong Appsheet và cách sử dụng và áp dụng chúng vào các tình huống cụ thể.
[_THIS]: Khi sử dụng hàm này, bạn sẽ nhận được KEY của dòng đó. Ví dụ, nếu bạn áp dụng công thức [_THIS] vào cột địa chỉ, kết quả trả về sẽ là ID của dòng, bởi vì lúc này ID chính là KEY.
[_THISROW].[ ___ ]: Hàm này tham chiếu đến các cột của dòng hiện tại trong biểu thức. Điều này hữu ích khi bạn muốn so sánh hoặc lấy giá trị từ một bảng khác có liên quan đến dòng hiện tại.
[_THISROW_BEFORE].[ ___ ]: Hàm này cho phép tham chiếu đến các giá trị của cột trước khi một bản ghi được cập nhật. Điều này hữu ích khi bạn muốn hiển thị hoặc so sánh các giá trị cột trước và sau khi cập nhật.
[_THISROW_AFTER].[ ___ ]: Hàm này cho phép tham chiếu đến các giá trị của cột sau khi một bản ghi được cập nhật. Điều này hữu ích khi bạn muốn hiển thị hoặc so sánh các giá trị cột trước và sau khi cập nhật.
Ví dụ: Ta có công thức sau:
AND ( ("Active" = [_THISROW_AFTER].[Status]), ( [_THISROW_AFTER].[Status] <> [_THISROW_BEFORE].[Status]) )
Công thức này sẽ kiểm tra xem cột Status đã được thay đổi từ một giá trị khác sang Active hay không.
Đây là hàm cho phép bạn lấy một danh sách các giá trị từ một cột của một bảng hoặc tập hợp dữ liệu dựa trên một điều kiện lọc.
Cú pháp của hàm SELECT như sau:
SELECT (from-dataset-column, select-row?, [distinct-only?])
Trong đó:
Ví dụ: Bạn có một bảng Orders với các cột Order ID, Customer, Date, Amount. Bạn muốn lấy danh sách các mã đơn hàng (Order ID) của khách hàng John. Bạn có thể sử dụng hàm SELECT như sau:
SELECT (Orders [Order ID], ( [Customer] = "John"))
Kết quả sẽ là một danh sách các giá trị Order ID của các dòng có giá trị là John.
Nếu bạn muốn lấy danh sách không có giá trị trùng lặp, bạn có thể thêm tham số TRUE vào cuối hàm:
SELECT (Orders [Order ID], ( [Customer] = "John"), TRUE)
Kết quả sẽ trả về danh sách các giá trị Order ID mà không có giá trị trùng lặp.
Đây là hàm giúp bạn lấy danh sách các Refs từ một bảng hoặc tập hợp dữ liệu dựa trên điều kiện lọc. Refs là các giá trị của cột khóa của bảng hoặc tập hợp. Cú pháp của hàm FILTER như sau:
FILTER (table-name, filter-expression)
Trong đó:
Ví dụ: Bạn có một bảng Orders với các cột Order ID, Customer, Date, Amount. Bạn muốn lấy danh sách các Refs của các đơn hàng có giá trị Amount lớn hơn 100. Bạn có thể sử dụng hàm FILTER như sau:
FILTER ("Orders", ( [Amount] > 100))
Kết quả sẽ là một danh sách các giá trị Order ID của các dòng có giá trị Amount lớn hơn 100.
⇒ Hàm FILTER trả về dữ liệu dưới dạng bảng, bao gồm toàn bộ các cột trong bảng đó.
Ta có bảng dữ liệu DONHANG mẫu như sau:
id | ten_sp | so_luong |
id1 | san pham 01 | 500 |
id2 | san pham 02 | 500 |
id3 | san pham 03 | 300 |
Ta có thể so sánh 2 hàm SELECT và FILTER như sau:
SELECT | FILTER | |||||||||||||
Ý nghĩa | Hàm trả về một list giá trị | Hàm trả về kết quả là một bảng | ||||||||||||
Công thức | Select(DONGHANG[ID],true) | FILTER(DONGHANG[ID],true) | ||||||||||||
Kết quả trả về | id1,id2,id3 |
| ||||||||||||
Như vậy, ta có thể thấy hàm FILTER sẽ trả về toàn bộ giá trị của bảng, còn SELECT chỉ trả về giá trị của một cột duy nhất (cột ID) |
Để mô tả các hàm dùng trong Appsheet dễ hiểu hơn, chúng tôi có ví dụ sau:
Mã đơn hàng | Ngày đặt hàng | Khách hàng | Tổng tiền | Trạng thái đơn hàng |
DH001 | 05/05/2023 | Nguyễn Văn A | 1,000,000 | Đã xử lý |
DH002 | 06/05/2023 | Trần Thị B | 500,000 | Chưa xử lý |
DH003 | 07/05/2023 | Lê Văn C | 2,500,000 | Đã giao hàng |
Dưới đây là các công thức hàm điều kiện:
IF(): Dùng để kiểm tra một điều kiện và trả về kết quả là giá trị tương ứng.
Ví dụ: Dùng công thức sau để kiểm tra các đơn hàng đã được xử lý, gán giá trị “Đã xử lý” và ngược lại là “Chưa xử lý”
IF([Trạng thái đơn hàng] = "Đã xử lý", "Đã xử lý", "Chưa xử lý")
IFS(): Hàm này để kiểm tra nhiều điều kiện và kết quả trả về tương ứng với điều kiện đúng đầu tiên. Ví dụ, dùng công thức sau để phân loại đơn hàng theo tổng tiền:
IFS(
[Tổng tiền] < 1000000, "Mức 1",
[Tổng tiền] >= 1000000 AND [Tổng tiền] < 2000000, "Mức 2",
[Tổng tiền] >= 2000000, "Mức 3"
)
SWITCH(): Bạn có thể dùng hàm này để so sánh giá trị với các giá trị mong muốn và trả về kết quả tương ứng. Ví dụ, chúng ta có thể đánh giá mức độ ưu tiên của đơn hàng dựa trên trạng thái như sau:
SWITCH(
[Trạng thái đơn hàng],
"Chưa xử lý", 1,
"Đã xử lý", 2,
"Đã giao hàng", 3,
0
)
DATE(): Dùng để chuyển đổi DateTime hoặc Time thành định dạng ngày. Ví dụ, bạn muốn lấy ngày từ [Ngày đặt hàng]:
DATE([Ngày đặt hàng])
DATETIME(): Ta có thể chuyển đổi ngày hoặc thời gian thành định dạng DateTime. Ví dụ, bạn muốn chuyển đổi [Ngày đặt hàng] thành DateTime:
DATETIME([Ngày đặt hàng])
NOW(): Đây là hàm này trả về ngày và giờ hiện tại. Ví dụ, bạn muốn tính thời gian chờ từ ngày đặt hàng đến thời điểm hiện tại:
NOW() - [Ngày đặt hàng]
INPUT(): Ta dùng hàm này để nhập giá trị động hoặc được gán bởi một hành động. Ví dụ, bạn muốn tạo một trường nhập liệu để người dùng có thể nhập mã đơn hàng và tìm kiếm thông tin về đơn hàng đó:
INPUT("Mã đơn hàng", "")
Trong đó: "Mã đơn hàng" là tên đầu vào, và "" là giá trị mặc định. Bạn có thể thay đổi giá trị mặc định tùy theo nhu cầu của bạn.
USEREMAIL(): Trả về địa chỉ email của người dùng hiện tại.
Ví dụ: "nguyenvana@gitiho.com"
MAX(): dùng để trả về giá trị lớn nhất trong danh sách. Ví dụ, bạn muốn tìm đơn hàng có tổng tiền lớn nhất:
MAX(Đơn hàng[Tổng tiền])
MIN(): Hàm trả về giá trị nhỏ nhất trong danh sách. Ví dụ, bạn muốn tìm đơn hàng có tổng tiền nhỏ nhất:
MIN(Đơn hàng[Tổng tiền])
SPLIT(): dùng để tách văn bản thành danh sách dựa trên ký tự phân tách. Ví dụ, bạn muốn tách chuỗi "A, B, C" thành danh sách:
SPLIT("A, B, C", ",")
UNIQUE(): dùng để trả về danh sách các giá trị không trùng lặp từ danh sách ban đầu. Ví dụ, bạn muốn lấy danh sách các khách hàng không trùng lặp từ bảng đơn. Ví dụ:
UNIQUE(1,2,1)
=> Trả về 1,2
IN(): dùng để kiểm tra xem một giá trị có nằm trong danh sách hay không. Ví dụ, bạn muốn kiểm tra xem khách hàng "Nguyễn Văn A" có trong danh sách khách hàng hay không:
IN("Nguyễn Văn A", Khách hàng[Tên khách hàng])
INDEX(): trả về một mục cụ thể trong danh sách dựa trên chỉ số. Ví dụ, bạn muốn lấy tên khách hàng thứ hai trong danh sách. Ví dụ:
INDEX(Khách hàng[Tên khách hàng], 2)
ANY(): trả về một mục ngẫu nhiên từ danh sách. Ví dụ, bạn muốn lấy một khách hàng ngẫu nhiên từ danh sách khách hàng:
ANY(Khách hàng[Tên khách hàng])
COUNT(): Hàm này trả về số lượng mục trong danh sách. Ví dụ, bạn muốn đếm số lượng đơn hàng chưa xử lý thì dùng công thức sau:
COUNT(SELECT(Đơn hàng[Khách hàng], [Trạng thái đơn hàng] = "Chưa xử lý"))
AND(): dùng để kiểm tra xem tất cả các điều kiện có đúng hay không. Nếu tất cả các điều kiện đều đúng, hàm trả về TRUE, ngược lại trả về FALSE. Ví dụ, bạn muốn kiểm tra xem một đơn hàng có tổng tiền lớn hơn 1,000,000 VND và trạng thái "Đã giao hàng":
AND([Tổng tiền] > 1000000, [Trạng thái đơn hàng] = "Đã giao hàng")
NOT(): dùng hàm này để kiểm tra xem một điều kiện có sai hay không. Nếu điều kiện sai, hàm trả về TRUE, ngược lại trả về FALSE. Ví dụ, bạn muốn kiểm tra xem một đơn hàng có trạng thái khác "Chưa xử lý":
NOT([Trạng thái đơn hàng] = "Chưa xử lý")
OR(): ta dùng hàm này để kiểm tra xem ít nhất một trong các điều kiện có đúng hay không. Nếu ít nhất một điều kiện đúng, hàm trả về TRUE, ngược lại trả về FALSE. Ví dụ, bạn muốn kiểm tra xem một đơn hàng có tổng tiền lớn hơn 1,000,000 VND hoặc trạng thái "Đã giao hàng":
OR([Tổng tiền] > 1000000, [Trạng thái đơn hàng] = "Đã giao hàng")
CEILING(): hàm làm tròn một số đến số nguyên gần nhất lớn hơn hoặc bằng số đó. Ví dụ công thức dưới đây sẽ trả về kết quả 4
CEILING(3.14159)
ROUND(): hàm làm tròn một số đến số chữ số thập phân nhất định. Ví dụ công thức sau sẽ trả về kết quả 3.14
ROUND(3.14159, 2)
LOOKUP(): hàm tìm kiếm giá trị trong tập dữ liệu dựa trên giá trị của cột đã cho và trả về giá trị từ cột khác.
LOOKUP("DH001", "Đơn hàng", "Mã đơn hàng", "Khách hàng")
MAXROW(): dùng để tìm hàng có giá trị lớn nhất trong cột đã cho và tuân theo điều kiện đã cho (nếu có).
MAXROW("Đơn hàng", "Tổng tiền", [Trạng thái đơn hàng] = "Đã xử lý")
MINROW(): dùng để tìm hàng có giá trị nhỏ nhất trong cột đã cho và tuân theo điều kiện đã cho (nếu có).
MINROW("Đơn hàng", "Tổng tiền", [Trạng thái đơn hàng] = "Đã xử lý")
ORDERBY(): Sắp xếp danh sách các hàng trong tập dữ liệu theo một hoặc nhiều cột.
ORDERBY("Đơn hàng", [Ngày đặt hàng], TRUE, [Tổng tiền])
TEXT(): hàm định dạng giá trị dưới dạng văn bản hoặc định dạng thời gian dưới dạng văn bản.
TEXT(123) hoặc TEXT(TODAY(), "DD/MM/YYYY")
TRIM(): dùng để loại bỏ khoảng trắng dư thừa ở đầu và cuối của chuỗi văn bản.
TRIM(" Nguyễn Văn A ")
UPPER(): hàm chuyển đổi văn bản thành chữ hoa.
UPPER("nguyễn văn a")
FIND(): dùng để tìm vị trí của chuỗi con trong văn bản.
FIND("Văn", "Nguyễn Văn A")
LEN(): dùng để tính số lượng ký tự trong giá trị văn bản.
LEN("Nguyễn Văn A")
LOWER(): hàm chuyển đổi văn bản thành chữ thường.
LOWER("NGUYỄN VĂN A")
SUBSTITUTE(): hàm thay thế một chuỗi ký tự cũ bằng chuỗi ký tự mới trong văn bản.
SUBSTITUTE("Nguyễn Văn A", "A", "B")
EXTRACT(): hàm trích xuất các giá trị từ văn bản.
EXTRACT("số", "Đơn hàng số DH001")
ISBLANK(): Kiểm tra xem có phải giá trị trống hay không.
ISBLANK([Tên_khách_hàng])
ISNOTBLANK(): Kiểm tra xem giá trị có tồn tại hay không.
ISNOTBLANK([Địa_chỉ])
CONTAINS(): Kiểm tra chuỗi ký tự cần tìm có trong văn bản hay không.
CONTAINS("Nguyễn Văn A", "Văn")
Trên đây là tổng hợp các hàm thông dụng trong Appsheet và cách sử dụng. Về cơ bản, các hàm trong Appsheet cũng tương tự như Google Sheet về ý nghĩa và vai trò, tuy nhiên công thức và quy tắc dùng hàm giữa 2 nền tảng có sự khác biệt.
Để biết rõ hơn ứng dụng của các hàm này trong việc tạo ứng dụng trên Appsheet, bạn có thể tham khảo khóa học Làm chủ Google Appsheet từ cơ bản tới nâng cao của Gitiho.
Học Appsheet cơ bản
Lê Văn Hoà
Ngoài các kiến thức dùng hàm cơ bản, bạn còn được học cách điều hướng và tùy chỉnh giao diện, cách làm việc với dữ liệu, tạo và tùy biến giao diện, tạo và sử dụng action, thiết lập quy trình tự động hóa trong Excel,.. Tất cả các bài giảng đều chi tiết và có ví dụ dễ hiểu để bạn có thể áp dụng ngay cho việc xây dựng ứng dụng của bạn.
Đăng ký ngay và học tập cùng Gitiho bạn nhé!
Gitiho đã cho ra mắt khóa học Google Sheets từ Cơ bản đến Nâng cao, công cụ thay thế Excel giúp bạn hoàn toàn có thể tự tin phân tích và xử lý dữ liệu trên Google Sheet, lập bảng biểu, báo cáo trực quan và hơn thế nữa. Bấm vào để học thử ngay!