Có thể bạn quan tâm: Hoán Đổi Cột Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
Mở Đầu
Trong môi trường làm việc với dữ liệu, đặc biệt là trong các lĩnh vực như tài chính, thống kê, khoa học dữ liệu hay quản lý dự án, việc thực hiện các phép tính phức tạp một cách nhanh chóng và chính xác là yêu cầu không thể thiếu. Excel, với tính năng mạnh mẽ và giao diện thân thiện, đã trở thành công cụ “đắc lực” của hàng triệu người dùng trên toàn thế giới. Trong số hàng trăm hàm có sẵn, hàm GIAI THỪA (FACT) là một trong những hàm toán học cơ bản nhưng lại có tiềm năng ứng dụng rộng rãi, từ việc tính toán xác suất, tổ hợp, đến việc xây dựng các công thức tùy chỉnh cho mô hình tài chính.
Bài viết dưới đây sẽ cung cấp cho bạn một cái nhìn toàn diện về hàm GIAI THỪA trong Excel, bao gồm:
- Cú pháp và cách sử dụng cơ bản
- So sánh với các hàm liên quan (FACTDOUBLE, COMBIN, PERMUT, …)
- Các ví dụ thực tế trong các lĩnh vực khác nhau
- Mẹo tối ưu hoá, tránh lỗi và xử lý dữ liệu lớn
- Cách tự xây dựng hàm GIAI THỪA tùy chỉnh bằng VBA
- Các lưu ý khi làm việc trên các phiên bản Excel khác nhau
Mục tiêu là giúp bạn không chỉ biết cách nhập công thức, mà còn hiểu sâu về nguyên lý toán học phía sau, từ đó áp dụng một cách linh hoạt và sáng tạo trong công việc hằng ngày.
Có thể bạn quan tâm: Cách Sử Dụng Công Thức Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
1. Cú pháp và Cách Sử Dụng Cơ Bản
1.1. Định Nghĩa Hàm FACT
Cú pháp:
FACT(number)
- number: Số nguyên không âm (0, 1, 2, …) mà bạn muốn tính giai thừa. Nếu
numberlà một số thập phân, Excel sẽ tự động làm tròn xuống (floor) tới số nguyên gần nhất. Ví dụ,FACT(5.8)sẽ trả về120(tương đương5!).
1.2. Ví Dụ Cơ Bản
| A | B |
|---|---|
| 5 | =FACT(A1) |
| 0 | =FACT(A2) |
| 7.9 | =FACT(A3) |
Kết quả:
| A | B |
|---|---|
| 5 | 120 |
| 0 | 1 |
| 7.9 | 5040 (bởi vì 7! = 5040) |
Lưu ý: Giá trị giai thừa tăng rất nhanh.
FACT(20)đã là 2.432902008 × 10^18, vượt quá khả năng biểu diễn của một số nguyên 64‑bit. Excel sẽ trả về lỗi #NUM! nếu kết quả vượt quá giới hạn 10^307 (đối với kiểu số double).
1.3. Xử Lý Lỗi
- #NUM!: Xuất hiện khi
number< 0 hoặc giai thừa vượt quá giới hạn số thực của Excel. - #VALUE!: Khi đối số không phải là số (ví dụ: chuỗi ký tự không thể chuyển đổi).
Bạn có thể dùng hàm IFERROR hoặc IF để xử lý:
=IFERROR(FACT(A1), "Không hợp lệ")
Hoặc:
=IF(A1<0, "Số âm", FACT(A1))
Có thể bạn quan tâm: Cách Khôi Phục File Excel Bị Hỏng Hoặc Mất Dữ Liệu: Hướng Dẫn Chi Tiết Từ A Đến Z
2. So Sánh Với Các Hàm Liên Quan
2.1. FACTDOUBLE (Giai Thừa Lẻ/Chẵn)
FACTDOUBLE(number) trả về giai thừa đôi, tức là tích của các số nguyên có cùng parity (chẵn hoặc lẻ) với number. Công thức:
- Nếu
numberlà chẵn:number!! = number × (number‑2) × (number‑4) … × 2 - Nếu
numberlà lẻ:number!! = number × (number‑2) × (number‑4) … × 1
Ví dụ:
| A | B (FACT) | C (FACTDOUBLE) |
|---|---|---|
| 6 | =FACT(A1) | =FACTDOUBLE(A1) |
| 7 | =FACT(A2) | =FACTDOUBLE(A2) |
Kết quả:
| A | B | C |
|---|---|---|
| 6 | 720 | 48 |
| 7 | 5040 | 105 |
FACTDOUBLE thường dùng trong các công thức tính tích các số lẻ hoặc chẵn, ví dụ trong công thức tính hệ số binomial hoặc các chuỗi Taylor.
2.2. COMBIN và PERMUT
- COMBIN(n, k): Tính số cách chọn
kphần tử từnmà không quan tâm thứ tự. Công thức:C(n, k) = n! / (k! (n‑k)!). - PERMUT(n, k): Tính số cách sắp xếp
kphần tử trongn(có thứ tự). Công thức:P(n, k) = n! / (n‑k)!.
Cả hai hàm này đều dựa vào FACT. Khi n và k lớn, việc tính trực tiếp bằng FACT có thể gây tràn số, trong khi COMBIN và PERMUT được tối ưu để tránh lỗi.
Ví dụ: Tính số cách sắp xếp 5 người trong 10 vị trí.
=PERMUT(10,5) // trả về 30240
=COMBIN(10,5) // trả về 252
2.3. Khi Nào Nên Dùng FACT Thay Vì COMBIN/PERMUT?
Nếu bạn chỉ cần giá trị giai thừa của một số duy nhất (ví dụ: tính hệ số binomial thủ công), FACT là đủ. Nhưng nếu công thức của bạn liên quan tới tỉ lệ giữa các giai thừa (như trong xác suất), hãy ưu tiên dùng COMBIN hoặc PERMUT để giảm thiểu nguy cơ tràn số và tăng độ chính xác.
3. Ứng Dụng Thực Tế
3.1. Xác Suất và Thống Kê
3.1.1. Phân Phối Poisson
Xác suất một sự kiện xảy ra k lần trong một khoảng thời gian, biết trung bình λ lần xảy ra:
P(k; λ) = (e^-λ λ^k) / k!
Trong Excel:
=EXP(-lambda) POWER(lambda, k) / FACT(k)
Hoặc dùng hàm tích hợp:
=POISSON.DIST(k, lambda, FALSE)
3.1.2. Phân Phối Binomial
Xác suất có đúng k lần thành công trong n lần thử với xác suất thành công p:
P = C(n, k) p^k (1-p)^(n-k)
Excel:
=COMBIN(n, k) POWER(p, k) POWER(1-p, n-k)
Nếu bạn muốn tự tính bằng FACT:
=FACT(n) / (FACT(k) FACT(n-k)) POWER(p, k) POWER(1-p, n-k)
3.2. Kỹ Thuật Kỹ Số và Toán Học
3.2.1. Chuỗi Taylor
Ví dụ, khai triển hàm sin(x) dưới dạng:
sin(x) = Σ (-1)^n x^(2n+1) / (2n+1)!
Trong Excel, bạn có thể dùng công thức mảng (hoặc hàm LAMBDA) để tính gần đúng:
=SUMPRODUCT((-1)^{ROW(INDIRECT("1:10"))-1} POWER(x, 2ROW(INDIRECT("1:10"))-1) / FACT(2ROW(INDIRECT("1:10"))-1))
3.2.2. Phân Tích Thuật Toán
Trong phân tích độ phức tạp của thuật toán, các biểu thức thường chứa giai thừa để mô tả số hoán vị hoặc tổ hợp. Việc tính nhanh các giá trị này trong Excel giúp bạn tạo báo cáo nhanh chóng.
3.3. Quản Lý Dự Án và Lập Lịch
Giả sử bạn có 8 nhân viên và muốn tính số cách sắp xếp họ vào 8 vị trí công việc khác nhau:
=FACT(8) // 40320 cách sắp xếp
Nếu một số vị trí chỉ cho phép một nhóm nhân viên nhất định (ví dụ 3 vị trí chỉ cho 3 người), bạn có thể kết hợp PERMUT và FACT để tính tổng số cách.

Có thể bạn quan tâm: Hàm Bao Gồm Trong Excel: Tất Cả Những Bạn Cần Biết Để Tối Ưu Hoá Công Việc Xử Lý Dữ Liệu
3.4. Tài Chính – Tính Lãi Suất và Đầu Tư
Trong một số mô hình tài chính phức tạp (ví dụ mô hình binomial cho định giá quyền chọn), các hệ số tổ hợp xuất hiện thường xuyên. Bạn có thể dùng COMBIN trực tiếp, nhưng nếu muốn tùy biến cho các công thức tùy chỉnh, việc hiểu cách FACT hoạt động là rất quan trọng.
4. Mẹo Tối Ưu Hoá và Xử Lý Dữ Liệu Lớn
4.1. Tránh Tràn Số
- Giới hạn an toàn:
FACT(170)≈ 7.2574156153E+306, gần giới hạn 10^307 của kiểu double.FACT(171)sẽ trả về lỗi #NUM!. - Giải pháp: Khi làm việc với
n > 170, hãy chuyển sang logarithmic factorial (log‑factorial) để tính log của giai thừa, sau đó exponentiate nếu cần (đối với tỉ lệ). Excel không có hàm log‑factorial tích hợp, nhưng bạn có thể tạo bằng VBA hoặc dùng công thức:
=SUMPRODUCT(LN(ROW(INDIRECT("1:"&n))))
Kết quả là LN(n!). Để lấy n! thực tế, dùng EXP.
4.2. Sử Dụng Hàm Mảng Động (Dynamic Array)
Trong Excel 365/2026 trở lên, hàm SEQUENCE và LAMBDA giúp tạo dải số và tính factorial một cách ngắn gọn:
=LET( n, A1, seq, SEQUENCE(n,1,1,1), FACT(seq)
)
Kết quả trả về một mảng các giai thừa từ 1! tới n!.
4.3. Tối Ưu Khi Lặp Nhiều Lần
Nếu bạn cần tính FACT cho cùng một tập hợp số trong nhiều công thức, hãy tính một lần và lưu vào một cột tạm, sau đó tham chiếu. Điều này giảm tải tính toán và tránh lỗi tràn.
4.4. Sử Dụng VBA để Tăng Hiệu Năng
Khi tính giai thừa cho hàng nghìn hàng, VBA có thể thực hiện nhanh hơn so với công thức mảng. Ví dụ:
Function FastFact(n As Long) As Double Dim i As Long, result As Double If n < 0 Then FastFact = CVErr(xlErrNum) Exit Function End If result = 1# For i = 2 To n result = result i If result > 1E307 Then FastFact = CVErr(xlErrNum) Exit Function End If Next i FastFact = result
End Function
Sau khi thêm hàm này vào module, bạn có thể dùng trong ô:
=FastFact(A1)
5. Tự Xây Dựng Hàm Giai Thừa Tùy Chỉnh Bằng VBA
5.1. Khi Nào Cần VBA?
- Giới hạn kích thước: Khi cần tính
n!chonlớn hơn 170. - Hiệu năng: Khi làm việc với hàng chục nghìn bản ghi.
- Xử lý lỗi tùy chỉnh: Trả về thông báo chi tiết thay vì #NUM!.
5.2. Mã VBA Nâng Cao – Hỗ Trợ BigInteger
Excel VBA không hỗ trợ kiểu dữ liệu “big integer” mặc định, nhưng chúng ta có thể dùng Microsoft Scripting Runtime (Dictionary) hoặc Microsoft Decimal để lưu trữ các chữ số. Dưới đây là một ví dụ đơn giản dùng String để lưu kết quả:
Function BigFact(n As Long) As String Dim i As Long, result As Variant result = CDec(1) For i = 2 To n result = result i Next i BigFact = CStr(result)
End Function
Đối với n lên tới 500, kết quả sẽ được lưu dưới dạng chuỗi, đủ để hiển thị trong ô (Excel sẽ tự cắt nếu quá dài). Đối với tính toán tiếp theo, bạn có thể chuyển sang Decimal hoặc dùng thư viện bên ngoài như VBA-JSON để xử lý.
5.3. Gọi Hàm Từ Ô
Sau khi viết và lưu macro, bật Macro trong Excel, rồi dùng:
=BigFact(200)
Lưu ý: Kết quả sẽ được hiển thị dưới dạng chuỗi, nếu muốn dùng trong tính toán tiếp theo, cần chuyển lại sang kiểu số (có thể mất độ chính xác).
6. Lưu Ý Khi Làm Việc Trên Các Phiên Bản Excel Khác Nhau
| Phiên bản | Hỗ trợ FACT | Hỗ trợ FACTDOUBLE | Ghi chú |
|---|---|---|---|
| Excel 2003 | ✅ | ❌ (cần VBA) | FACT đã có, FACTDOUBLE không. |
| Excel 2007‑2026 | ✅ | ✅ | Cả hai đều có sẵn. |
| Excel 2026‑2026 | ✅ | ✅ | Tương thích tốt. |
| Excel 365/2026 | ✅ | ✅ | Hỗ trợ hàm mảng động, LAMBDA. |
| Excel for Mac | ✅ | ✅ | Đôi khi gặp lỗi #NAME! nếu cài đặt ngôn ngữ không phải tiếng Anh; cần dùng dấu phẩy “,” thay “;”. |
6.1. Định Dạng Ngôn Ngữ
- Trong môi trường tiếng Việt, dấu phân cách tham số là dấu phẩy (
,) trong Excel tiếng Anh, nhưng dấu chấm phẩy (;) trong Excel tiếng Việt. Hãy kiểm tra cài đặt Regional Settings để tránh lỗi #NAME?.
6.2. Excel Online và Google Sheets
- Google Sheets cũng có hàm
FACT, nhưng không hỗ trợFACTDOUBLE. Khi chia sẻ file giữa Excel và Sheets, cần kiểm tra lại công thức.
7. Tổng Kết
Hàm GIAI THỪA (FACT) trong Excel không chỉ là một công cụ toán học cơ bản mà còn là nền tảng cho nhiều ứng dụng phức tạp trong thống kê, tài chính, khoa học và quản lý dự án. Hiểu rõ cú pháp, cách xử lý lỗi, và các hàm liên quan như FACTDOUBLE, COMBIN, PERMUT giúp bạn:
- Tăng độ chính xác trong các mô hình xác suất và tổ hợp.
- Giảm thiểu rủi ro tràn số bằng cách lựa chọn hàm thích hợp hoặc dùng log‑factorial.
- Tối ưu hiệu năng khi làm việc với dữ liệu lớn bằng công thức mảng hoặc VBA.
- Đảm bảo tính tương thích khi chia sẻ file giữa các phiên bản Excel và các nền tảng khác như Google Sheets.
Hy vọng qua bài viết này, bạn đã nắm vững cách sử dụng hàm GIAI THỪA trong Excel, đồng thời có được những gợi ý thực tiễn để áp dụng trong công việc hàng ngày. Hãy thử tự xây dựng một vài công thức, hoặc viết một macro nhỏ để xử lý các tính toán giai thừa lớn, và cảm nhận sức mạnh của Excel trong việc biến những con số phức tạp thành thông tin hữu ích.
Chúc bạn thành công!

Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
