1. Hàm ABS()
Lấy trị tuyệt đối của một số
Cú pháp: = ABS(number)
number: Số muốn tính trị tuyệt đối
Ví dụ:
ABS(2) = 2
ABS(-5) = 5
ABS(A2) = 7 (A2 đang chứa công thức = 3.5 x -2)
2. Hàm CEILING() và Hàm FLOOR()
Hai hàm này, hao hao giống hàm MROUND(), là làm tròn đến bội số gần nhất của một số được chỉ định, chỉ khác đôi chút về cách tính: CEILING() luôn luôn làm tròn một số ra xa số 0, còn FLOOR() làm tròn về số 0.
Cú pháp:
= CEILING(number, significance)
= FLOOR(number, significance)
number: Con số sẽ làm tròn
significance: Con số mà bạn cần làm tròn number đến bội số của nó
- Nếu number và significancekhác dấu, hàm sẽ báo lỗi #NUM!
- Nếu number là bội số của significance, kết quả là chính số đó
Ví dụ: So sánh giữa CEILING(), FLOOR() và MROUND()
- ở ví dụ này, xem như significance là multiple của MROUND()
undefined
3. Hàm COMBIN()
Trả về số tổ hợp của một số phần tử cho trước
Cú pháp: = COMBIN(number, number_chosen)
number: Tổng số phần tử
number_chosen: Số phần tử trong mỗi tổ hợp
Chú ý:
- Nếu các đối số là số thập phân, hàm chỉ lấy phần nguyên
- Nếu các đối số không phải là số, COMBIN sẽ báo lỗi #VALUE!
- Nếu number < 0, number_chosen < 0, hoặc number < number_chosen, COMBIN sẽ báo lỗi #NUM!
- Tổ hợp khác với hoán vị: Tổ hợp không quan tâm đến thứ tự của các phần tử trong mỗi tổ hợp; còn hoán vị thì thứ tự của mỗi phần tử đều có ý nghĩa.
COMBIN được tính như công thức sau đây (với n = number, k = number_chosen)
undefined
Trong đó:
undefined
Ví dụ:
Với 4 phần tử Mai, Lan, Cúc, Trúc có thể xếp được bao nhiêu tổ hợp khác nhau, với mỗi tổ hợp gồm 2 phần tử ?
= COMBIN(4, 2) = 6
6 tổ hợp này là: Mai-Lan, Mai-Cúc, Mai-Trúc, Lan-Cúc, Lan-Trúc và Cúc-Trúc
4. Hàm EVEN() và Hàm ODD()
Hai hàm này làm tròn rất đơn giản. EVEN() làm tròn đến số nguyên chẵn gần nhất, còn ODD() làm tròn đến số nguyên lẻ gần nhất. Cả hai đều làm tròn theo kiểu chạy xa khỏi số 0.
Cú pháp: = EVEN(number) | = ODD(number)
Ví dụ:
EVEN(14.2) = 16
EVEN(-23) = 24
ODD(58.1) = 59
ODD(-6) = -7
5. Hàm EXP()
Tính lũy thừa của cơ số e (2.71828182845905...)
Cú pháp: = EXP(number)
number: số mũ của cơ số e
Lưu ý:
- Để tính lũy thừa của cơ số khác, bạn có thể dùng toán tử ^ (dấu mũ), hoặc dùng hàm POWER()
- Hàm EXP() là nghịch đảo của hàm LN(): tính logarit tự nhiên của một số
Ví dụ:
EXP(1) = 2.718282 (là chính cơ số e)
EXP(2) = 7.389056 (bình phương của e)
6. Hàm FACT()
Tính giai thừa của một số.
Cú pháp: = FACT(number)
number: số cần tính giai thừa
Lưu ý:
- number phải là một số dương
- Nếu number là số thập phân, FACT() sẽ lấy phần nguyên của number để tính
Ví dụ:
FACT(5) = 120 (5! = 1 x 2 x 3 x 4 x 5 = 120)
FACT(2.9) = 2 (2! = 1 x 2 = 2)
FACT(0) = 1 (0! = 1)
FACT(-3) = #NUM!
7. Hàm FACTDOUBLE()
Tính giai thừa cấp hai của một số.
Giai thừa cấp hai (ký hiệu bằng hai dấu !!) được tính như sau:
- Với số chẵn: n!! = n x (n-2) x (n-4) x ... x 4 x 2
- Với số lẻ: n!! = n x (n-2) x (n-4) x ... x 3 x 1
Cú pháp: = FACTDOUBLE(number)
number: số cần tính giai thừa cấp hai
Lưu ý:
- number phải là một số dương
- Nếu number là số thập phân, FACTDOUBLE() sẽ lấy phần nguyên của number để tính
Ví dụ:
FACTDOUBLE(6) = 48 (6!! = 6 x 4 x 2 = 24)
FACTDOUBLE(7) = 105 (7!! = 7 x 5 x 3 x 1 = 105)
8. Hàm CEILING() và Hàm FLOOR()
Hai hàm này, hao hao giống hàm MROUND(), là làm tròn đến bội số gần nhất của một số được chỉ định, chỉ khác đôi chút về cách tính: CEILING() luôn luôn làm tròn một số ra xa số 0, còn FLOOR() làm tròn về số 0.
Cú pháp:
= CEILING(number, significance)
= FLOOR(number, significance)
number: Con số sẽ làm tròn
significance: Con số mà bạn cần làm tròn number đến bội số của nó
- Nếu number và significancekhác dấu, hàm sẽ báo lỗi #NUM!
- Nếu number là bội số của significance, kết quả là chính số đó
Ví dụ: So sánh giữa CEILING(), FLOOR() và MROUND() - ở ví dụ này, xem như significance là multiple của MROUND()
undefined
9. Hàm GCD()
GCD là viết tắt của chữ Greatest Common Divisor: Ước số chung lớn nhất.
Cú pháp: = GCD(number1, number2 [,number3...])
number1, number2...: những số mà bạn bạn cần tìm ước số chung lớn nhất
GCD() có thể tìm ước số chung lớn nhất của một dãy có đến 255 giá trị (với Excel 2003 trở về trước thì con số này là 19)
Lưu ý:
Nếu có bất kỳ một number nào < 0, GCD() sẽ báo lỗi #NUM!
Nếu có bất kỳ một number nào không phải là một con số, GDC() sẽ báo lỗi #VALUE!
Nếu number là số thập phân, GCD() chỉ tính toán với phần nguyên của nó.
Ví dụ: GCD(5, 2) = 1 ; GCD(24, 36) = 12 ; GCD(5, 0) = 5
10. Hàm INT() và hàm TRUNC()
Hai hàm này gần như giống nhau nếu như bạn muốn làm tròn một số thành một số nguyên.
Cú pháp:
= INT(number)
= TRUNC(number [, num_digits])
number: Số cần làm tròn
num_digits: Là một số nguyên, chỉ cách mà bạn muốn cắt bớt số
num_digits > 0 : nếu number là một số thập phân, thì num_digits chỉ ra số con số thập phân mà bạn muốn giữ lại (sau dấu phẩy)
num_digits = 0 hoặc không nhập: cắt bỏ hết phần thập phân của number (nếu có)
num_digits < 0 : làm tròn number thành một số nguyên và làm tròn number sang trái thành một bội số của 10 (xem thêm ở ví dụ)
Hàm INT() làm tròn một số tới số nguyên gần nhất
Đối với số dương, hàm INT() và TRUNC() cho kết quả giống nhau (num_digits của TRUNC() = 0 hoặc không có), nhưng đối với số âm thì hai hàm này sẽ cho kết quả hoàn toàn khác nhau.
Ví dụ:
INT( 123.456) = 123 | TRUNC( 123.456) = 123
INT(-123.456) = -124 | TRUNC(-123.456) = -123
Khi num_digits khác 0, TRUNC() khác hẳn với ROUND() ở chỗ: ROUND() thì làm tròn, còn TRUNC() chỉ cắt bỏ bớt số chứ không làm tròn.
Một số ví dụ về hàm TRUNC()
undefined
admin - April 7, 2008 03:09 AM (GMT)
11. Hàm LCM()
LCM là viết tắt của chữ Lowest common multiple: Bội số chung nhỏ nhất.
Cú pháp: = LCM(number1, number2 [,number3...])
number1, number2...: những số mà bạn bạn cần tìm bội số chung nhỏ nhất
LCM() có thể tìm bội số chung nhỏ nhất của một dãy có đến 255 giá trị (với Excel 2003 trở về trước thì con số này là 19)
Lưu ý:
Hàm LCM()
LCM là viết tắt của chữ Lowest common multiple: Bội số chung nhỏ nhất.
Cú pháp: = LCM(number1, number2 [,number3...])
number1, number2...: những số mà bạn bạn cần tìm bội số chung nhỏ nhất
LCM() có thể tìm bội số chung nhỏ nhất của một dãy có đến 255 giá trị (với Excel 2003 trở về trước thì con số này là 19)
Lưu ý:
Nếu có bất kỳ một number nào < 0, GDC() sẽ báo lỗi #NUM!
Nếu có bất kỳ một number nào không phải là một con số, GDC() sẽ báo lỗi #VALUE!
Nếu number là số thập phân, LCM() chỉ tính toán với phần nguyên của nó.
Ví dụ: LCM(5, 2) = 10 ; LCM(24, 36) = 72
Nếu có bất kỳ một number nào < 0, GDC() sẽ báo lỗi #NUM!
Nếu có bất kỳ một number nào không phải là một con số, GDC() sẽ báo lỗi #VALUE!
Nếu number là số thập phân, LCM() chỉ tính toán với phần nguyên của nó.
Ví dụ: LCM(5, 2) = 10 ; LCM(24, 36) = 72
12. Hàm LN()
Tính logarit tự nhiên của một số (logarit cơ số e = 2.71828182845905...)
Cú pháp: = LN(number)
number: số thực, dương mà ta muốn tính logarit tự nhiên (logarit cơ số e) của nó
Lưu ý:
- Hàm LN() là nghịch đảo của hàm EXP(): tính lũy thừa của cơ số e
Ví dụ:
LN(86) = 4.454347 (logarit cơ số e của 86)
LN(2.7181818) = 1 (logarit cơ số e của e)
LN(EXP(3)) = 3 (logarit cơ số e của e lập phương)
13. Hàm LOG()
Tính logarit của một số với cơ số được chỉ định
Cú pháp: = LOG(number [, base])
number: Số thực, dương mà ta muốn tính logarit tự nhiên (logarit cơ số e) của nó
base: Cơ số để tính logarit (mặc định là 10) - Nếu bỏ trống, hàm LOG() tương đương với hàm LOG10()
Ví dụ:
LOG(10) = 1 (logarit cơ số 10 của 10)
LOG(8, 2) = 3 (logarit cơ số 2 của 8)
LOG(86, 2.7182818) = 4.454347 (logarit cơ số e của 86)
14. Hàm LOG10()
Tính logarit cơ số 10 của một số
Cú pháp: = LOG10(number)
number: số thực, dương mà ta muốn tính logarit tự nhiên (logarit cơ số e) của nó
Ví dụ:
LOG10(10) = LOG(10) = 1 (logarit cơ số 10 của 10)
LOG10(86) = LOG(86) = 1.93449845 (logarit cơ số 10 của 86)
LOG10(1E5) = 5 (logarit cơ số 10 của 1E5)
LOG10(10^5) = 5 (logarit cơ số 10 của 10^5)
15. MDETERM (array) : Tính định thức của một ma trận
Trước khi trình bày các hàm về ma trận, xin giải thích chút xíu về định nghĩa ma trận.
Định nghĩa Ma Trận
Ma trận là một bảng có m hàng và n cột
undefined
A còn được gọi là một ma trận cỡ m x n
Một phần tử ở hàng thứ i và cột thứ j sẽ được ký hiệu là undefined
Hàm MDETERM()
MDETERM viết tắt từ chữ Matrix Determinant: Định thức ma trận
Hàm này dùng để tính định thức của một ma trận vuông
Cú pháp: = MDETERM(array)
array: mảng giá trị chứa ma trận vuông (có số hàng và số cột bằng nhau)
Lưu ý:
- array có thể một dãy ô như A1:C3; hoặc một mảng như {1,2,3 ; 4,5,6 ; 7,8,9}; hoặc là một khối ô đã được đặt tên...
- Hàm MDETERM() sẽ báo lỗi #VALUE! khi:
array không phải là ma trận vuông (số hàng khác số cột)
Có bất kỳ 1 vị trí nào trong array là rỗng hoặc không phải là dữ liệu kiểu số
- Hàm MDETERM() có thể tính chính xác với ma trận 4 x 4 (có 16 ký số)
- Ví dụ về cách tính toán của hàm MDETERM() với ma trận 3 x 3 (A1:C3):
MDETERM(A1:C3) = A1*(B2*C3 - B3*C2) + A2*(B3*C1 - B1*C3) + A3*(B1*C2 - B2*C1)
Ví dụ:
MDETERM(A1
4) = 88
undefined
MDETERM(A1:C4) = #VALUE! (A1:C4 không phải là ma trận vuông)
MDETERM({3,6,1 ; 1,1,0 ; 3,10,2}) = 1
MDETERM({3,6 ; 1,1}) = 1
16. Hàm MINVERSE()
MINVERSE viết tắt từ chữ Matrix Inverse: Ma trận nghịch đảo
Hàm này dùng để tính ma trận nghịch đảo của một ma trận vuông
Cú pháp: = MINVERSE(array)
array: mảng giá trị chứa ma trận vuông (có số hàng và số cột bằng nhau)
Lưu ý:
- array có thể một dãy ô như A1:C3; hoặc một mảng như {1,2,3 ; 4,5,6 ; 7,8,9}; hoặc là một khối ô đã được đặt tên...
- Giống hàm MDETERM, hàm MINVERSE() sẽ báo lỗi #VALUE! khi:
array không phải là ma trận vuông (số hàng khác số cột)
Có bất kỳ 1 vị trí nào trong array là rỗng hoặc không phải là dữ liệu kiểu số
Ma trận không thể tính nghịch đảo (ví dụ ma trận có định thức = 0)
- Hàm MINVERSE() có thể tính chính xác với ma trận 4 x 4 (có 16 ký số)
Ví dụ về cách sử dụng hàm MINVERSE():
Ví dụ bạn có một ma trận A1
4, để tìm ma trận nghịch đảo của ma trận này, bạn quét chọn một khối ô tương ứng với A1
4, ví dụ A6
9 (cùng có 4 hàng và 4 cột), tại A6, gõ công thức = MINVERSE(A1
4) và sau đó nhấn Ctrl-Shift-Enter, bạn sẽ có kết quả tại A6
9 là một ma trận nghịch đảo của ma trận A1
4
undefined
17. Hàm MMULT()
MMULT viết tắt từ chữ Matrix Multiple: Ma trận tích
Hàm này dùng để tính tích của hai ma trận
Cú pháp: = MMULT(array1, array2)
array1, array 2: mảng giá trị chứa ma trận
Lưu ý:
- array1, array2 có thể một dãy ô như A1:C3; hoặc một mảng như {1,2,3 ; 4,5,6 ; 7,8,9}; hoặc là một khối ô đã được đặt tên...
- Số cột của array1 phải bằng số dòng của array2
- Công thức tính tích hai ma trận (A = B x C) có dạng như sau:
Trong đó: i là số hàng của array1 (B), j là số cột của array2 ©; n là số cột của array1 (= số dòng của array2)
- Nếu có bất kỳ một phần tử nào trong hai ma trận là rỗng hoặc không phải là dữ liệu kiểu số, MMULT() sẽ báo lỗi #VALUE!
- Để có kết quả chính xác ở ma trận kết quả, phải dùng công thức mãng
Ví dụ:
Mời bạn xem hình sau:
undefined
Để tính tích của hai ma trận B và C, quét chọn khối C7
8
gõ công thức = MMULT(A2:C3,E2:F4) rồi nhấn Ctrl-Shift-Enter
sẽ có kết quả là ma trận A như trên hình.
18. Hàm MOD()
Dùng để lấy số dư của một phép chia
Cú pháp: = MOD(number, divisor)
number: Số bị chia
divisor: Số chia
Ví dụ: MOD(24, 10) = 4 (24 chia 10 được 2, dư 4)
Một công thức để tính toán số thời gian chênh lệch:
Chúng ta đã biết cách để tính số thời gian chênh lệch, đó là lấy thời gian hoàn thành (EndTime) trừ đi thời gian bắt đầu (StartTime), và để phòng hờ trường hợp thời gian xuyên qua một ngày (khi đó có thể thời gian lúc hoàn thành nhỏ hơn thời gian bắt đầu, ví dụ làm từ 20 giờ ngày hôm trước đến 8 giờ ngày hôm sau), thì ta dùng công thức:
= IF(EndTime < StartTime, 1 + EndTime - StartTime, EndTime - StartTime)
Tuy nhiên, ta cũng đã biết rằng, Excel tính toán với thời gian như tính toán với một con số chạy từ 0 cho tới 1, và lại bắt đầu từ 0 vào lúc nửa đêm. Do đó, ta có thể dùng hàm MOD() để thay cho công thức ở trên:
= MOD(EndTime - StartTime, 1)
Ví dụ:
Tính số thời gian làm việc từ 10 giờ sáng đến 11 giờ đêm:
= MOD(23:00 - 10:00, 1) = 13
Tính số thời gian làm việc từ 10 giờ đêm đến 11 giờ trưa hôm sau:
= MOD(11:00 - 22:00, 1) = 13
Cộng các ô cách nhau một số hàng cố định
Có một bài toán như sau:
Trong một cột dữ liệu, người ta muốn tính tổng của cách ô cách nhau mỗi n hàng nào đó.
Ví dụ, trong dãy A1:A20, tính tổng của các ô cách nhau 5 ô, nghĩa là lấy A1 + A6 + A11 + A16
Nói tới hàng, ta nghĩ đến hàm ROW(): ROW(A1) = 1, ROW(A6) = 6, v.v...
Và ở ví dụ vừa nêu trên đây, ta để ý các con số 1, 6, 11, 16 khi đem chia cho 5 đều dư 1, vậy ta nghĩ đến hàm MOD(), lấy số thứ tự của hàng chia cho 5: MOD(ROW(A1), 5) = 1, MOD(ROW(A6), 5) = 1, v.v...
Vậy ta sẽ lập công thức cho mảng A1:A20:
Xét trong khối A1:A20, ô nào có số thứ tự của hàng chia cho 5 mà dư 1, thì lấy các ô đó cộng lại:
{= SUM(IF(MOD(ROW(A1:A20), 5) = 1, A1:A20, 0))}
Hay cụ thể hơn, gọi dãy ô để tính tổng là range, và số hàng cách nhau giữa các ô là n, ta sẽ có công thức:
{= SUM(IF(MOD(ROW(range), n) = 1, range, 0))}
Con số 1 ở đây không phải là con số cố định, mà nó là số dư của phép chia của số thứ tự cho n. Do đó, tùy vào điều kiện của bài toán mà ta thay bằng con số thích hợp.
Chẳng hạn, cũng ví dụ trên đây, như ta muốn tính tổng của các ô A2, A7, A12, A17 thì công thức sẽ là:
{= SUM(IF(MOD(ROW(A1:A20), 5) = 2, A1:A20, 0))}
(2 là số dư của 2, 7, 12, 17 cho 5)
Cộng các ô có số thứ tự hàng là chẵn, hoặc có số thứ tự hàng là lẻ
Từ bài toán trên đây, ta có công thức để cộng các ô có số thứ tự hàng làm chẵn:
{= SUM(IF(MOD(ROW(Range), 2) = 0, Range, 0))}
Và công thức để cộng các ô có số thứ tự hàng làm lẻ:
{= SUM(IF(MOD(ROW(Range), 2) = 1, Range, 0))}
Xem một năm có phải là năm nhuận hay không
Nếu bạn muốn có một công thức để xem thử một năm nào đó có phải là năm nhuận hay không, bạn có thể dùng hàm MOD().
Năm nhuận, là năm chia hết cho 4, hay phép dư của phép chia số năm cho 4 thì bẳng 0 ở công thức sau đây:
= MOD(year, 4)
Số năm phải là một con số có 4 chữ số.
Công thức trên chỉ đúng trong khoảng từ năm 1901 đến 2099 (có lẽ chúng ta cũng sống tối đa trong khoảng thời gian này thôi). Công thức này không đúng với năm 1900 và 2100, bởi vì điều kiện để tính năm nhuận còn có chuyện: Năm nhuận là năm chia hết cho 4, nếu năm này tận cùng bằng hai con số 0 thì nó phải chia hết cho 400 (ví dụ, năm 2000).
Vậy, để có một công thức đúng cho tất cả mọi năm, ta làm một công thức luận lý như sau:
= (MOD(year, 4) = 0) - (MOD(year, 100) = 0) + (MOD(year, 400) = 0)
Nếu công thức này cho đáp số là 1 (TRUE), thì đó là năm nhuận, còn nếu cho đáp số là 0 (FALSE), thì đó không phải là năm nhuận.
Ứng dụng của hàm MOD() trong định dạng bảng tính
Chắc cũng có một lúc nào đó, bạn thích định dạng cho bảng tính của mình theo kiểu Ledger Shading. Ledger Shading là kiểu định dạng các hàng có màu xen kẽ nhau (ví dụ, xanh và trắng). Loại định dạng này thích hợp cho những danh sách dài, có nhiều cột, giúp ta phân biệt được hàng này với hàng kia cách dễ dàng, ít khi bị nhìn lầm dữ liệu giữa các hàng...
Hình sau đây là một ví dụ:
undefined
Dĩ nhiên là việc này rất dễ thực hiện, chúng ta chỉ cần chọn các hàng xen kẽ nhau và tô màu cho nó. Tuy nhiên, nếu làm thủ công bằng tay, thì sẽ có một số bất tiện sau:
- Rất lâu cho những bảng dữ liệu lớn.
- Mỗi khi chèn thêm một hàng hoặc xóa bớt một hàng, thì phải định dạng lại.
Để tránh những bất tiện đó, bạn có thể dùng một liên kết giữa hàm MOD() và chức năng Conditional Formatting (định dạng có điều kiện) của Excel.
Cách làm như sau:
1. Chọn vùng bạn muốn định dạng
2. Gọi hộp thoại Conditional Formatting, và chọn New Ruler để mở hộp thoại New Formatting Ruler
3. Chọn Use a Formula to Determine Which Cells to Format
Trong khung Format values where this formular is true, gõ công thức = MOD(ROW(), 2)
undefined
4. Nhấn nút Format... để mở hộp thoại Format Cells
5. Chọn tab Fills, chọn màu bạn thích tô cho các hàng xen kẽ với màu trắng, rồi nhấn OK để quay về hộp thoại New Formatting Ruler
6. Nhấn OK
Công thức = MOD(ROW(), 2) sẽ trả về 1 cho những hàng có số thứ tự lẻ và trả về 0 cho những hàng có số thứ tự chẵn. Bởi vì 1 thì tương đương với TRUE, nên Excel sẽ áp dụng màu tô mà bạn đã chọn cho tất cả những hàng có số thứ tự lẻ trong vùng bạn muốn định dạng, và bỏ qua những hàng có số thứ tự chẵn.
Tương tự,
- Nếu muốn định dạng các cột có màu xen kẽ, bạn chỉ cần thay công thức ở trên thành:
= MOD(COLUMN(), 2)
- Nếu thích định dạng cho hàng có số thứ tự lẻ thì không tô màu, còn hàng có số thứ tự chẵn mới tô màu, bạn thay đổi công thức trên một tí:
= MOD(ROW() + 1, 2)
19. Hàm MROUND()
Làm tròn đến bội số của một số khác
Cú pháp: = MROUND(number, multiple)
number: Con số sẽ làm tròn
multiple: Con số mà bạn cần làm tròn number đến bội số của nó
- Nếu number và multiple khác dấu, hàm sẽ báo lỗi #NUM!
- Nếu number và multiple bằng nhau, kết quả là chính số đó
- MROUND() sẽ làm tròn lên, nếu phần chia của phép chia number cho multiple lớn hơn hoặc bằng 1/2 multiple, và làm tròn xuống nếu phần chia của phép chia number cho multiple nhỏ hơn 1/2 multiple
Ví dụ:
MROUND(5, 2) = 6 (do 5/2 > 2/2, bội số của 2 gần nhất mà lớn hơn 5 là 6)
MROUND(11, 5) = 10 (do 11/5 < 5/2, bội số của 5 gần nhất mà nhỏ hơn 11 là 10)
MROUND(13, 5) = 15 (do 13/5 > 5/2, bội số của 5 gần nhất mà lớn hơn 13 là 15)
MROUND(5, 5) = 5 (number và multiple bằng nhau)
MROUND(7.31, 0.5) = 7.5 (do 7.31/0.5 > 0.5/2, bội số của 0.5 gần nhất mà lớn hơn 7.31 là 7.5)
MROUND(-11, -5) = -10 (do -11/-5 > -5/2, bội số của -5 gần nhất mà lớn hơn -11 là -10)
MROUND(-11, 5) = #NUM! (number và multiple khác dấu)
20. Hàm MULTINOMIAL()
Dùng để tính tỷ lệ giữa giai thừa tổng và tích giai thừa của các số
Xin ví dụ cho dễ hiểu: Giả sử ta có 3 số a, b và c
undefined
Cú pháp: = MULTINOMIAL(number1, number2, ...)
number1, number2,... : là những con số mà ta muốn tính tỷ lệ giữa giai thừa tổng và tích giai thừa của chúng
Ghi chú:
- number1, number2, ... có thể lên đến 255 con số (với Excel 2003 trở về trước, con số này chỉ là 30)
- Nếu có bất kỳ một number nào không phải là dữ liệu kiểu số, MULTINOMIAL() sẽ báo lỗi #VALUE!
Nếu có bất kỳ một number nào < 0, MULTINOMIAL() sẽ báo lỗi #NUM!
Ví dụ: MULTINOMIAL(2, 3, 4) = 1,260
admin - April 7, 2008 03:33 AM (GMT)
21. Hàm EVEN() và Hàm ODD()
Hai hàm này làm tròn rất đơn giản. EVEN() làm tròn đến số nguyên chẵn gần nhất, còn ODD() làm tròn đến số nguyên lẻ gần nhất. Cả hai đều làm tròn theo kiểu chạy xa khỏi số 0.
Cú pháp: = EVEN(number) | = ODD(number)
Ví dụ:
EVEN(14.2) = 16
EVEN(-23) = 24
ODD(58.1) = 59
ODD(-6) = -7
22. Hàm PI()
Trả về giá trị của số Pi = 3.14159265358979, lấy chính xác đến 15 chữ số.
Cú pháp: = PI()
Hàm này không có tham số
Ví dụ:
PI() = 3.14159265358979
PI()/2 = 1.570796327
PI()*(3^2) = 28.27433388
23. Hàm POWER()
Tính lũy thừa của một số.
Có thể dùng toán tử ^ thay cho hàm này. Ví dụ: POWER(2, 10) = 2^10
Cú pháp: = POWER(number, power)
Trong đó:
number: Số cần tính lũy thừa
power: Số mũ
Ví dụ:
POWER(5, 2) = 25
POWER(98.6, 3.2) = 2,401,077
POWER(4, 5/4) = 5.656854
24. Hàm PRODUCT()
Dùng để tính tích của các số
Cú pháp: = PRODUCT(number1, number2, ...)
number1, number2,... : là những con số mà ta muốn tính tỷ lệ giữa giai thừa tổng và tích giai thừa của chúng
Ghi chú:
- number1, number2, ... có thể lên đến 255 con số (với Excel 2003 trở về trước, con số này chỉ là 30)
- Nếu các number nằm trong một mảng dữ liệu, thì chỉ có những giá trị kiểu số trong mảng đó mới được tính; những giá trị không phải là kiểu số sẽ được bỏ qua.
Ví dụ: PRODUCT(2, 3, 4) = 24
25. Hàm QUOTIENT()
Lấy phần nguyên của phép chia.
Cú pháp: = QUOTIENT(numberator, denominator)
numberator: Số bị chia
denominator: Số chia
Ghi chú:
- Nếu các thông số không phải là dữ liệu kiểu số, hàm sẽ báo lỗi #VALUE!
- Hàm này tương đương với hàm INT(): QUOTIENT(a, b) = INT(a/b)
Ví dụ:
QUOTIENT(5, 2) = 2
QUOTIENT(4.5, 3.1) = 1
QUOTIENT(-10, 3) = -3
Đôi khi, chúng ta cần có một dữ liệu mô phỏng để thử nghiệm một công việc, một kế hoạch gì đó, và cần điền một vài con số vào để có cái mà thử nghiệm. Trong nhiều trường hợp, chúng ta sẽ cần có những con số ngẫu nhiên, không biết trước. Excel cung cấp cho chúng ta hai hàm để lấy số ngẫu nhiên, đó là RAND() và RANDBETWEEN().
26. Hàm RAND()
Cú pháp: = RAND()
Hàm RAND() trả về một con số ngẫu nhiên lớn hơn hoặc bằng 0 và nhỏ hơn 1. Nếu dùng hàm để lấy một giá trị thời gian, thì RAND() là hàm thích hợp nhất.
Bên cạnh đó, cũng có những cách để ép RAND() cung cấp cho chúng ta những con số ngẫu nhiên nằm giữa hai giá trị nào đó.
Để lấy một số ngẫu nhiên lớn hơn hoặc bằng 0 và nhỏ hơn n, ta dùng cú pháp:
RAND() * n
Ví dụ, công thức sau đây sẽ cung cấp cho chúng ta một con số ngẫu nhiên giữa 0 và 30:
= RAND() * 30
Trường hợp khác, mở rộng hơn, chúng ta cần có một con số ngẫu nhiên lớn hơn hoặc bằng số m nào đó, và nhỏ hơn số n nào đó, ta dùng cú pháp:
RAND() * (n - m) + m
Ví dụ, để lấy một số ngẫu nhiên lớn hơn hoặc bằng 100 và nhỏ hơn 200, ta dùng công thức:
= RAND() * (200 - 100) + 100
Lưu ý:
Do hàm RAND() là một hàm biến đổi (volatile function), tức là kết quả do RAND() cung cấp có thể thay đổi mỗi khi bạn cập nhật bảng tính hoặc mở lại bảng tính, ngay cả khi bạn thay đổi một ô nào đó trong bảng tính...
Để có một kết quả ngẫu nhiên nhưng không thay đổi, bạn dùng cách sau:
Sau khi nhập công thức = RAND() vào, bạn nhấn F9 và sau đó nhấn Enter. Động tác này sẽ lấy một con số ngẫu nhiên ngay tại thời điểm gõ công thức, nhưng sau đó thì luôn dùng con số này, vì trong ô nhập công thức sẽ không còn hàm RAND() nữa.
Lấy một số ngẫu nhiên nguyên dương, gồm có x chữ số
Trong một số trường hợp, bài toán yêu cầu của chúng ta là lấy một số ngẫu nhiên nguyên, dương và gồm có 6 chữ số; hoặc chúng ta muốn có một cái mã số thuế ngẫu nhiên (nguyên, dương, có 10 chữ số), v.v...
Dựa vào công thức lấy số ngẫu nhiên trong một khoảng ở ví dụ trên, ta dùng hàm INT() để lấy phần nguyên:
INT(RAND() * (n - m) + m)
Và trong trường hợp này, để lấy một số ngẫu nhiên mà cố định số chữ số, chúng ta sẽ đặt n = 10^x và m = 10^(x-1); với x là số chữ số theo yêu cầu (dấu ^ là lũy thừa).
Chẳng hạn, để lấy một con số ngẫu nhiên có 8 chữ số, ta dùng công thức:
= INT(RAND() * (100000000 - 10000000) + 10000000)
Công thức này sẽ cho chúng ta một con số ngẫu nhiên lớn hơn hoặc bằng 10,000,000 và nhỏ hơn 99,999,999
Lấy một ký tự ngẫu nhiên
Ngoài việc cho kết quả là một con số ngẫu nhiên, hàm RAND() có thể cho cho kết quả là một ký tự ngẫu nhiên không ? Thưa được.
Ví dụ, để lấy một ký tự ngẫu nhiên trong bảng chữ cái tiếng Anh:
Chúng ta biết rằng bảng chữ cái tiếng Anh có 26 chữ cái, vậy trước hết ta sẽ yêu cầu RAND() cung cấp cho ta một con số ngẫu nhiên giữa 1 và 26:
INT(RAND() * 26 + 1)
Bây giờ, dựa theo bảng mã ANSI, ta biết những ký tự viết hoa (A tới Z) nằm từ mã ANSI 65 đến mã ANSI 90, và hàm dùng để lấy kết quả là chữ dựa vào bảng mã ANSI là CHAR(), ta có công thức sau:
= CHAR(INT(RAND() * 26 + 1) + 64)
Tương tự, để lấy một ký tự ngẫu nhiên là ký tự viết thường (a tới z), nằm từ mã ANSI 97 đến mã ANSI 122, ta dùng công thức:
= CHAR(INT(RAND() * 26 + 1) + 96)
Mỗi ký tự mà chúng ta có thể nhập vào màn hình này, đều mang một mã số (numeric code). Ví dụ, chữ A (hoa) là 65, dấu & (và) là số 38...
Những ký tự này, có cái chúng ta có thể nhập trực tiếp từ bàn phím, tuy nhiên cũng có những ký tự chúng ta phải nhập bằng phím Alt và một mã số thích hợp ở bên bàn phím số. Ví dụ, mã số của ký tự bản quyền © là 169, để gõ ký tự này, chúng ta sẽ nhấn Alt+0169 (dùng số bên nhóm phím số, và nhớ là luôn luôn thêm số 0 cho những ký tự lớn hơn 127).
Tất cả những mã số đại diện cho các ký tự này, người ta thường gọi là bảng mã ANSI (The ANSI code). Bảng mã ANSI gồm từ 1 đến 255, tuy nhiên 31 số đầu tiên chỉ là những ký tự rỗng, ký tự đặc biệt (dấu ngắt câu, xuống hàng, v.v...)
27. Hàm CHAR()
Chuyển đổi một mã số trong bộ mã ANSI (có miền giá trị từ 1 - 255) sang ký tự tương ứng.
Cú pháp: = CHAR(number)
Number : là một mã số trong bảng mã ANSI.
Ví dụ: Để kết quả có được là ký tự bản quyền ©, chúng ta nhập: = CHAR(169)
Ở bài trên, tôi đã trình bày cách lấy một số ngẫu nhiên nằm trong một khoảng {n, m} nào đó:
= RAND() * (n - m) + m
Có một hàm nữa trong Excel có chức năng tương tự công thức trên: Hàm RANDBETWEEN().
RANDBETWEEN() chỉ khác RAND() ở chỗ: RANDBETWEEN() cho kết quả là số nguyên, còn RAND() thì cho kết quả vừa là số nguyên vừa là số thập phân.
28. Hàm RANDBETWEEN()
Hàm RANDBETWEEN() trả về một số nguyên ngẫu nhiên nằm trong một khoảng cho trước.
Cú pháp: = RANDBETWEEN(bottom, top)
bottom: Số nhỏ nhất trong dãy tìm số ngẫu nhiên (kết quả sẽ lớn hơn hoặc bằng số này)
top: Số lớn nhất trong dãy tìm số ngẫu nhiên (kết quả sẽ nhỏ hơn hoặc bằng số này)
Ví dụ: = RANDBETWEEN(0, 59) sẽ cho kết quả là một số nguyên nằm trong khoảng 0 tới 59.
29. Hàm ROMAN()
Dùng để chuyển đổi một số dạng Ả-rập sang dạng số La-mã
Cú pháp: = ROMAN(number, form)
number: Số cần chuyển đổi
form: dạng chuyển đổi
0 (hoặc TRUE, hoặc không nhập): Dạng cổ điển
1 cho đến 3: Dạng cổ điển nhưng được rút gọn, số càng lớn rút gọn càng nhiều (xem thêm ở ví dụ)
4 (hoặc FALSE): Dạng hiện đại
Chú ý:
number phải là số dương, nếu number < 0 hàm sẽ báo lỗi #VALUE!
Nếu number là số thập phân, ROMAN() chỉ chuyển đổi phần nguyên của nó
Hàm ROMAN() chỉ xử lý được tới số lớn nhất là 3999, nếu number > 3999 hàm sẽ báo lỗi #VALUE!
Sau khi đã chuyển đổi, kết quả sẽ là một dữ liệu dạng text, và không thể tính toán với nó được nữa
Ví dụ:
ROMAN(499, 0) = CDXCIX = ROMAN(499) = ROMAN(499, TRUE)
ROMAN(499, 1) = LDVLIV
ROMAN(499, 2) = XDIX
ROMAN(499, 3) = VDIV
ROMAN(499, 4) = ID = ROMAN(499, FALSE)
ROMAN(2008) = MMVIII
30. Hàm ROUND()
Cú pháp: = ROUND(number, num_digits)
number: Con số sẽ làm tròn
num_digits: Là một số nguyên, chỉ cách mà bạn muốn làm tròn
num_digits > 0 : làm tròn đến số thập phân được chỉ định
num_digits = 0 : làm tròn đến số nguyên gần nhất
num_digits < 0 : làm tròn đến phần nguyên được chỉ định
Ví dụ: Với con số 1234.5678
ROUND(1234.5678, 3) = 1234.568
ROUND(1234.5678, 2) = 1234.57
ROUND(1234.5678, 1) = 1234.6
ROUND(1234.5678, 0) = 1235
ROUND(1234.5678, -1) = 1230
ROUND(1234.5678, -2) = 1200
ROUND(1234.5678, -3) = 1000
admin - April 7, 2008 03:57 AM (GMT)
31. Hàm ROUNDDOWN() và Hàm ROUNDUP()
Hai hàm này, về cơ bản thì giống hàm ROUND(), chỉ khác là chúng chỉ làm tròn theo một chiều: ROUNDDONW() luôn luôn làm tròn một số về số 0, còn ROUNDUP() thì luôn luôn làm tròn một số ra xa số 0.
Cú pháp:
= ROUNDDOWN(number, num_digits)
= ROUNDUP(number, num_digits)
number: Con số sẽ làm tròn
num_digits: Là một số nguyên, chỉ cách mà bạn muốn làm tròn
num_digits > 0 : làm tròn đến số thập phân được chỉ định
num_digits = 0 : làm tròn đến số nguyên gần nhất
num_digits < 0 : làm tròn đến phần nguyên được chỉ định
Ví dụ: So sánh giữa ROUNDDOWN() và ROUNDUP()
undefined
32. Hàm SERIESSUM()
Dùng để tính tổng lũy thừa của một chuỗi số, theo công thức sau đây:
undefined
Cú pháp: = SERIESSUM(x, n, m, coefficients)
x : giá trị nhập vào cho chuỗi lũy thừa
n : lũy thừa khởi tạo để tăng tới x
m : bước tăng cho mỗi phần tử trong chuỗi
coefficients : tập hợp hệ số sẽ được nhân với mỗi lũy thừa của x
Các thông số này phải là các dữ liệu kiểu số, nếu không, hàm sẽ báo lỗi #VALUE!
Ví dụ:
SERIESSUM(5, 0, 2, {1, 2, 3, 4}) = 64,426
Diễn giải chi tiết: (x = 5, n = 0, m = 2, coefficients = 1, 2, 3, 4)
undefined
33. Hàm SIGN()
Trả về dấu của số: 1 nếu là số dương, 0 (zero) nếu là số 0 và -1 nếu là số âm.
Cú pháp: = SIGN(number)
Ví dụ:
SIGN(10) = 1
SIGN(4-4) = 0
SIGN(-0.057) = -1
34. Hàm SQRT()
Dùng để tính căn bậc hai của một số
Cú pháp: = SQRT(number)
number: Số thực, dương (nếu number < 0 hàm sẽ báo lỗi #NUM!)
Ví dụ: Giả sử ở ô A2, có con số -16
SQRT(16) = 4
SQRT(A2) = #NUM!
SQRT(ABS(A2)) = 4
35. Hàm SQRTPI()
Dùng để tính căn bậc hai của một số nhân với Pi (= 3.14159265358979)
Cú pháp: = SQRTPI(number)
number: Số thực, dương nhân với Pi (nếu number < 0 hàm sẽ báo lỗi #NUM!)
Ví dụ: Giả sử ở ô A2, có con số -16
SQRT(1) = 1.772454 (căn bậc hai của Pi)
SQRT(2) = 2.506628 (căn bậc hai của 2*Pi)
36. Hàm SUBTOTAL()
Hàm SUBTOTAL là một hàm rất linh hoạt nhưng cũng là một trong các hàm hơi khó sử dụng của Excel. Điều khó hiểu thứ nhất chính là cái tên của nó, vì nó thực sự làm được nhiều thứ hơn ý nghĩa của tên hàm. Đối số thứ nhất của hàm bắt buộc bạn phải nhớ con số đại diện cho phép tính cần thực hiện trên tập số liệu (trong Excel 2007 có tính năng AutoComplete giúp chúng ta khỏi nhớ các con số này). Hàm SUBTOTAL được Microsoft nâng cấp kể từ phiên bản Excel 2003 với sự gia tăng các tuỳ chọn cho đối số thứ nhất của hàm, tuy nhiên điều này dẫn đến sự không tương thích với các phiên bản cũ nếu chúng ta sử dụng các tính năng mới bổ sung này.
Đối số đầu tiên của của hàm SUBTOTAL xác định hàm thực sự nào sẽ được sử dụng khi tính toán (xem trong danh sách bên dưới). Ví dụ nếu đối số là 1 thì hàm SUBTOTAL hoạt động giống nhưng hàm AVERAGE, nếu đối số thứ nhất là 9 thì hàm hàm SUBTOTAL hoạt động giống nhưng hàm SUM.
SUBTOTAL là hàm tính toán cho một nhóm con trong một danh sách hoặc bảng dữ liệu tuỳ theo phép tính mà bạn chọn lựa trong đối số thứ nhất.
Cú pháp: = SUBTOTAL(function_num, ref1, ref2,...)
Function_num: Các con số từ 1 đến 11 (hay 101 đến 111) qui định hàm nào sẽ được dùng để tính toán trong SUBTOTAL
undefined
Ref1, ref2: Các vùng địa chỉ tham chiếu mà bạn muốn thực hiện phép tính trên đó.
Trong Excel 2007, bạn có thể dùng đến 254 ref (với Excel 2003 trở vế trước thì con số này chỉ là 29)
Ghi chú:
- Nếu có hàm SUBTOTAL khác đặt lồng trong các đối số ref1, ref2,… thì các hàm lồng này sẽ bị bỏ qua không được tính, nhằm tránh trường hợp tính toán 2 lần.
- Đối số function_num nếu từ 1 đến 11 thì hàm SUBTOTAL tính toán bao gồm cả các giá trị ẩn trong tập số liệu (hàng ẩn). Đối số function_num nếu từ 101 đến 111 thì hàm SUBTOTAL chỉ tính toán cho các giá trị không ẩn trong tập số liệu (bỏ qua các giá trị ẩn).
- Hàm SUBTOTAL sẽ bỏ qua không tính toán tất cả các hàng bị ẩn bởi lệnh Filter (Auto Filter) mà không phụ thuộc vào đối số function_num được dùng (1 giống 101...).
- Hàm SUBTOTAL được thiết kế để tính toán cho các cột số liệu theo chiều dọc, nó không được thiết kế để tính theo chiều ngang.
- Hàm này chỉ tính toán cho dữ liệu 2-D, do vậy nếu dữ liệu tham chiếu dạng 3-D (Ví dụ về tham chiếu 3-D: =SUM(Sheet2:Sheet13!B5) thì hàm SUBTOTAL báo lỗi #VALUE!
Ví dụ:
SUBTOTAL(9, {120, 10, 150, 23}) = 303 = 120 + 10 + 150 + 23
SUBTOTAL(1, {120, 10, 150, 23}) = 75.75 = (120 + 10 + 150 + 23) / 4
37. Hàm SUM()
Khi cộng các giá trị với nhau trong Excel, ta có thể dùng dấu cộng (+) hoặc dùng hàm SUM()
Cú pháp: = SUM(number1 [, number2...])
Trong Excel 2007, bạn có thể dùng SUM() để để tính tổng của 255 giá trị lại với nhau (trong những version trước, con số này chỉ là 30)
Ví dụ: = SUM(A2:A13, C2:C13, E2:E13)
Phép cộng lũy tiến
Tôi có một bảng công nợ khách hàng như sau:
Ở cột I, tôi muốn rằng mỗi khi có một phát sinh nào đó (mua hàng thêm, hoặc trả tiền hàng, trả hàng, v.v...) thì cột Số Nợ sẽ phản ánh con số nợ còn lại ngay tại thời điểm có phát sinh.
undefined
Tôi dùng công thức sau (tại I12 và kéo xuống cho cả cột I):
= SUM($G$12:G12) - SUM($H$12:H12)
"Bí quyết" ở đây là dùng địa chỉ tuyệt đối để giữ G12 và H12 lại.
Ví dụ, tại I20, tôi sẽ có công thức:
= SUM($G$12:G20) - SUM($H$12:H20)
Cộng riêng số dương và số âm
Tôi có một vùng dữ liệu, trong đó có cả số dương và số âm lẫn lộn. Làm cách nào để tôi biết tổng của tất cả những số dương, hoặc tổng của tất cả những số âm?
Tính tổng, thì dùng SUM(), nhưng làm sao cho nó biết số nào là dương số nào là âm để cộng lại?
Thoạt tiên tôi nghĩ đến hàm SUMIF... Nhưng, có một cách hay hơn, là dùng công thức mảng cho SUM:
Tổng các số âm trong vùng dữ liệu (tạm đặt tên cho nó là range):
{= SUM((range < 0) * range)}
Xin nhắc lại, cặp dấu {} không phải do ta gõ vào, mà là do ta nhấn Ctrl-Shift-Enter sau khi nhập công thức bình thường.
Tương tự, tổng các số dương trong vùng dữ liệu range
{= SUM((range > 0) * range)}
38. Hàm SUMIF()
Tính tổng các ô trong một vùng thỏa một điều kiện cho trước.
Cú pháp: = SUMIF(range, criteria, sum_range)
Range : Dãy các ô để tính tổng, có thể là ô chứa số, tên, mảng, hay tham chiếu đến các ô chứa số. Ô rỗng và ô chứa giá trị text sẽ được bỏ qua.
Criteria : Điều kiện để tính tổng. Có thể ở dạng số, biểu thức, hoặc text. Ví dụ, criteria có thể là 32, "32", "> 32", hoặc "apple", v.v...
Sum_range : Là vùng thực sự để tính tổng. Nếu bỏ qua, Excel sẽ coi như sum_range = range.
Lưu ý:
- Sum_range không nhất thiết phải cùng kích thước với range. Vùng thực sự để tính tổng được xác định bằng ô đầu tiên phía trên bên trái của sum_range, và bao gồm thêm những ô tương ứng với kích thước của range. Ví dụ:
- Nếu Range là A1:A5, Sum_range là B1:B5, thì vùng thực sự để tính tổng là B1:B5
- Nếu Range là A1:A5, Sum_range là B1:B3, thì vùng thực sự để tính tổng là B1:B5
- Nếu Range là A1:B4, Sum_range là C1
4, thì vùng thực sự để tính tổng là C1
4
- Nếu Range là A1:B4, Sum_range là C1
2, thì vùng thực sự để tính tổng là C1
4
Có thể dùng các ký tự đại diện trong điều kiện: dấu ? đại diện cho một ký tự, dấu * đại diện cho nhiều ký tự (nếu như điều kiện là tìm những dấu ? hoặc *, thì gõ thêm dấu ~ ở trước dấu ? hay *).
Khi điều kiện để tính tổng là những ký tự, SUMIF() không phân biệt chữ thường hay chữ hoa.
Ví dụ: Có bảng tính như sau
undefined
Tính tổng của những huê hồng mà có doanh thu > 160,000 ?
= SUMIF(A2:A5, ">160000", B2:B5) = 63,000
Tính tổng của những doanh thu > 160,000 ?
= SUMIF(A2:A5, ">160000") = 900,000
Tính tổng của những huê hồng mà có doanh thu = 300,000 ?
= SUMIF(A2:A5, "=300000", B2:B3) = 21,000
39. Hàm SUMPRODUCT()
Sum = Tổng / Product = Tích
SUMPRODUCT = Tổng của tích (các mảng dữ liệu)
Cú pháp: = SUMPRODUCT(array1, array2, ...)
array1, array2, ... : Có thể dùng từ 2 tới 255 mảng (với Excel 2003 trở về trước thì con số này chỉ là 30) và các mảng này phải cùng kích thước với nhau
Lưu ý:
- Nếu các mảng không cùng kích thước, SUMPRODUCT sẽ báo lỗi #VALUE!
- Bất kỳ một phần tử nào trong mảng không phải là dữ liệu kiểu số, sẽ được SUMPRODUCT coi như bằng 0 (zero)
Ví dụ:
undefined
SUMPRODUCT(A1:B3, C1
3) = 156
Cách tính: 156 = (3*2)+(4*7)+(8*6)+(6*7)+(1*5)+(9*3)
Nếu dùng SUM() với công thức mảng, sẽ cho kết quả tương đương:
{SUM(A1:B3 * C1
3)} = SUMPRODUCT(A1:B3, C1
3) = 156
Mình xin phân tích cách dùng SumProduct và Công thức mảng.
Hàm SumProduct:
Cấu trúc: SUMPRODUCT(array1,array2,array3, ...)
Array - Mảng dữ liệu là một tập hợp dãy giá trị liên tiếp trong một khảng nào đó. VD A1:C1 hoặ A1:A10,...
Phép tính này cho phép chúng ta tính tổng của tích array1*array2*array3* ...array30.
VD: A: Số lượng; B: Đơn giá
A1 =2 B1=20 C1="Cam" D1="Giống lai"
A2 =3 B2=10 C2="Bưởi" D2="Không"
A3 =4 B3=25 C3="Cam" D3="Không"
Bây giờ cần tính doanh thu của các loại hoa quả
array1=A1:A3
array2=B1:B3
Công thức =SumProduct(A1:A3, B1:B3) = 170
Bản chất công thức làm việc như thế này =A1*B1+A2*B2+A3*B3 kết quả là 170
Nhắc lại về phép tính logic:
Giá trị kiểu logic chỉ cho ra 1 trong 2 giá trị là TRUE/1, FALSE/0
Phép toán logic:<, >, <>, =, >=, <=, Not()
VD:
2>3=False
3>1=True
4>3=True
*) Logic và - AND
=(2>3)*(3>1)*(4>3)=False*True*True=0*1*1=False/0 tương đương với hàm AND(2>3,3>1,4>3). Ít nhất một logic=False thì kết quả sẽ là False hay 0.
* Logic hoặc - OR
=(2>3)+(3>1)+(4>3)=False+True+True=0+1=True/1 tương đương với hàm OR(2>3,3>1,4>3). Ít nhất một logic=True thì kết quả sẽ là True hay 1.
Lưu ý tổng của các giá trị là True=True=1).
*) Tính tổng có nhiều điều kiện:
Cách 1: dùng SUMPRODUCT
Tính tổng doanh thu của loại là "Cam"
=SUMPRODUCT(A1:A3,B1:B3*(C1:C3="Cam")) hoặc =SUMPRODUCT(A1:A3*B1:B3*(C1:C3="Cam")) = 140
Công thức tính như sau:
=A1*B1*(C1="Cam")+A2*B2*(C2="Cam")+A3*B3*(C3="Cam" )
=2*20*True+3*10*False+4*25*True
=2*20*1+3*10*0+4*25*1= 140
Cách 2: Dùng Công thức mảng - "Formula Array"
=Sum(IF(C1:C3="Cam",A1:A3*B1:B3,0))
Kết thức nhẫn tổ hợp CTRL+SHIFT+ENTER. Với cách làm này EXCEL sẽ phân tích như sau:
Xét trên từng dòng trong mảng (array)
dòng1: (c1="Cam")=true nên lấy A1*B1=2*20
dòng2: (c2="Cam")=false nên lấy 0 (theo cách của lấy của hàm IF)
dòng3: (c3="Cam")=true nên lấy A3*B3=4*25
Sau khi chạy hết các dòng, EXCEL sẽ dùng hàm SUM để tính tổng kết quả tính được ở từng dòng=2*20+0+2*25=140. Nếu trong công thức là hàm khác hàm SUM thì cách tính sẽ theo hàm đó.
Như vậy có 2 cách tính:
=SUMPRODUCT(A1:A3*B1:B3*(C1:C3="Cam")) và
=Sum(IF(C1:C3="Cam",A1:A3*B1:B3,0))
*) Vậy tại sao không dùng là =SUM(A1:A3*B1:B3*(C1:C3="Cam"))
mà phải dùng hàm =SUMPRODUCT(A1:A3*B1:B3*(C1:C3="Cam")) ?
Các bạn nhớ lại cấu trúc của SUM là
SUM(number1,number2, ...)
Còn SUMPRODUCT là
SUMPRODUCT(array1,array2,array3, ...)
number <> array
Nếu SUMPRODUCT(A1:A3*B1:B3*(C1:C3="Cam")) rồi ENTER là đúng vì đối số của nó phải là mảng - Array.
Nếu công thức =SUM(A1:A3*B1:B3*(C1:C3="Cam")) rồi ENTER kết quả là #VALUE! -lỗi vì A1:A3 là một array chứ không phải là một number.
Nếu nhấn tổ hợp CTRL+SHIFT+ENTER. Với cách làm này EXCEL sẽ phân tích như sau:
Xét trên từng dòng trong mảng (array)
dòng1: A1*B1*(c1="Cam")=2*20*True=2*20*1
dòng2: A2*B2*(c2="Cam")=3*10*False=3*10*0
dòng3: A3*B3*(c3="Cam")=2*25*True=4*25*1
Sau khi chạy hết các dòng, EXCEL sẽ dùng hàm SUM để tính tổng kết quả tính được ở từng dòng=2*20*1+3*10*0
+4*25*1=140.
Vậy vẫn dùng được =SUM(A1:A3*B1:B3*(C1:C3="Cam")) với điều kiện nhấn tổ hợp phím CTRL+SHIFT+ENTER
Như vậy đến đây chúng ta có có 3 cách tính:
=SUMPRODUCT(A1:A3*B1:B3*(C1:C3="Cam")) nhấn phím ENTER
=SUM(IF(C1:C3="Cam",A1:A3*B1:B3,0)) nhấn phím CTRL+SHIFT+ENTER
=SUM(A1:A3*B1:B3*(C1:C3="Cam")) nhấn phím CTRL+SHIFT+ENTER
Chúng có thể kết hợp rất nhiều điều kiện vào trong hàm thông qua phép toán logic nhân-và- And, cộng - hoặc - Or.
*) Dùng hàm SUMPRODUCT hay dùng SUM kết hợp CTRL+SHIFT+ENTER đều cho ra được kết quả như nhau chính là do phép toán logic của bạn.
*) Hàm SUMPRODUCT chỉ có thể tính tổng theo nhiều điều kiện
*) Công thức mảng - Formula Array ngoài việc tính tổng có nhiều điều kiện còn làm rất nhiều phép tính khác do cách sử dụng hàm mà thôi.
40. Hàm SUMSQ()
Dùng để tính tổng các bình phương của các số
Cú pháp: = SUMSQ(number1, number2, ...)
number1, number2, ... : Có thể dùng đến 255 tham số (với Excel 2003 trở về trước, con số này chỉ là 30)
Các tham số (number) có thể là một số, là một mảng, một tên, hay là một tham chiếu đến một ô chứa số, v.v...
Ví dụ: SUMSQ(3, 4) = (3^2) + (4^2) = 9 + 16 = 25
41. Hàm SUMX2MY2(), Hàm SUMXPY2() và Hàm SUMXMY2()
Để dễ nhớ tên của ba hàm này, bạn đọc chúng từ trái sang phải với các quy ước sau:
SUM = Tổng, M (Minus) = Trừ (hiệu số), P (Plus) = Cộng (tổng số), 2 = Bình phương, X và Y là hai mảng gì đó, có chứa nhiều phần tử x và y
Vậy, định nghĩa và cách tính toán của 3 hàm này là:
- SUMX2MY2: Tổng của hiệu hai bình phương của các phần tử tương ứng trong 2 mảng dữ liệu
undefined
- SUMX2PY2: Tổng của tổng hai bình phương của các phần tử tương ứng trong 2 mảng dữ liệu
undefined
- SUMXMY2: Tổng của bình phương của hiệu các phần tử tương ứng trong 2 mảng dữ liệu
undefined
Cú pháp:
= SUMX2MY2(array_x, array_y)
= SUMX2PY2(array_x, array_y)
= SUMXMY2(array_x, array_y)
array_x và array_y là các dãy ô hoặc giá trị kiểu mảng
Lưu ý:
- array_x và array_y bắt buộc phải có cùng kích thước, nếu không, hàm sẽ báo lỗi #NA!
- Nếu trong array_x hoặc array_y có những giá trị kiểu text, kiểu logic hoặc rỗng, thì sẽ được bỏ qua (không tính), tuy nhiên các giá trị = 0 vẫn được tính.
Ví dụ:
Với hai mảng X = {1, 2, 3, 4} và Y = {5, 6, 7, 8}
SUMX2MY2({1, 2, 3, 4}, {5, 6, 7, 8}) = -144
= (1^2 - 5^2) + (2^2 - 6^2) + (3^2 - 7^2) + (4^2 - 8^2) = -144
SUMX2PY2({1, 2, 3, 4}, {5, 6, 7, 8}) = 204
= (1^2 + 5^2) + (2^2 + 6^2) + (3^2 + 7^2) + (4^2 + 8^2) = -204
SUMXMY2({1, 2, 3, 4}, {5, 6, 7, 8}) = 64
= (1 - 5)^2 + (2 - 6)^2 + (3 - 7)^2 + (4 - 8)^2 = 64