Formulas & Functions Excel 2007 - 11. Working with Math Functions

Liên hệ QC

BNTT

Bùi Nguyễn Triệu Tường
Thành viên danh dự
Tham gia
3/7/07
Bài viết
4,946
Được thích
23,206
Nghề nghiệp
Dạy đàn piano
Phỏng dịch từ cuốn Formulas and Functions with Microsoft Office Excel 2007 của Paul McFedries

Part II: HARNESSING THE POWER OF FUNCTIONS - Tận dụng sức mạnh của các hàm
---------------------------------------------------------------------------------------



PART II - HARNESSING THE POWER OF FUNCTIONS
Phần II - Tận dụng sức mạnh của các hàm



Chapter 11 - WORKING WITH MATH FUNCTIONS

Chương 11 - Làm việc với các hàm toán học
Excel’s mathematical underpinnings are revealed when you consider the long list of math-related functions that come with the program. Functions exist for basic mathematical operations such as absolute values, lowest and greatest common denominators, square roots, and sums. Plenty of high-end operations also are available for things such as matrix multiplication, multinomials, and sums of squares. Not all of Excel’s math functions are useful in a business context, but a surprising number of them are. For example, operations such as rounding and generating random numbers have their business uses.
Những bí mật toán học của Excel sẽ được phơi bày ra khi bạn xem xét danh sách các hàm liên quan đến toán học đính kèm với chương trình. Các hàm này dùng cho các phép tính cơ bản như tìm các giá trị tuyệt đối, mẫu số chung lớn nhất và nhỏ nhất, tính căn bậc hai, và tính tổng. Nhiều phép tính cao cấp cũng có sẵn như phép tính ma trận, đa thức, và tính tổng các bình phương. Không phải tất cả các hàm toán học của Excel đều hữu dụng trong một bối cảnh kinh doanh, nhưng có một số hàm sẽ gây ngạc nhiên thì rất hữu dụng. Ví dụ, các phép tính làm tròn số và tạo ra các số ngẫu nhiên có những công dụng chuyên môn của nó.

Table 11.1 lists the Excel math functions, but this chapter doesn’t cover the entire list. Instead, I just focus on those functions that I think you’ll find useful for your business formulas. Remember, too, that Excel comes with many statistical functions, covered in Chapter 12, "Working with Statistical Functions."
Bảng 11.1 liệt kê các hàm toán học trong Excel, nhưng chương này không đề cập đến tất cả các hàm đó. Mà thay vào đó, tôi chỉ tập trung vào những hàm mà tôi nghĩ rằng bạn sẽ thấy hữu dụng cho các công thức trong công việc kinh doanh của bạn. Cũng nên nhớ rằng, Excel còn có nhiều hàm về thống kê, sẽ được đề cập đến ở chương 12, "Làm việc với các hàm thống kê".


Table 11.1 - Excel’s Math Functions
Bảng 11.1 - Các hàm toán học trong Excel


ABS (number): Returns the absolute value of number
Tính trị tuyệt đối của number

CEILING (number, significance) : Rounds number up to the nearest integer
Làm tròn number lên đến số nguyên gần nhất

COMBIN (number, number_chosen) : Returns the number of possible ways that number objects can be combined in groups of number_chosen
Trả về số cách mà các number có thể kết hợp trong các nhóm number_chosen

EVEN (number) : Rounds number up to the nearest even integer
Làm tròn numberđến số nguyên chẵn gần nhất

EXP (number) : Returns e raised to the power of number
Trả về lũy thừa cơ số e của number

FACT (number) : Returns the factorial of number

Tính giai thừa của number

FLOOR (number, significance) : Rounds number down to the nearest integer
Làm tròn number xuống số nguyên gần nhất

GCD (number1 [, number2,...]) : Returns the greatest common divisor of the specified numbers
Trả về ước số chung lớn nhất của các số đã xác định

INT (number) : Rounds number down to the nearest integer
Làm tròn number xuống số nguyên gần nhất

LCM (number1 [, number2,...]) : Returns the least common multiple of the specified numbers
Trả về bội số chung nhỏ nhất của các số đã xác định

LN (number) : Returns the natural logarithm of number
Tính logarit tự nhiên của number

LOG (number [, base]) : Returns the logarithm of number in the specified base
Tính logarit của number theo cơ số base đã xác định

LOG10 (number) : Returns the base-10 logarithm of number
Tính logarit cơ số 10 của number

MDETERM (array) : Returns the matrix determinant of array
Trả về định thức ma trận của array

MINVERSE (array) : Returns the matrix inverse of array
Trả về ma trận nghịch đảo của array

MMULT (array1, array2) : Returns the matrix product of array1 and array2
Trả về tích ma trận của array1array2

MOD (number, divisor) : Returns the remainder of number after dividing by divisor
Trả về phần dư của number sau khi chia cho divisor

MROUND (number, multiple) : Rounds number to the desired multiple
Làm tròn number đến bội số của multiple

MULTINOMIAL (number1 [, number2,...]) : Returns the multinomial of the specified numbers
Trả về tỷ lệ giữa giai thừa tổng và tích giai thừa của các số đã xác định


(To be continued)
 
Lần chỉnh sửa cuối:
Chapter 11 - WORKING WITH MATH FUNCTIONS


Table 11.1 - Excel’s Math Functions
(continued)
Bảng 11.1 - Các hàm toán học trong Excel


ODD (number): Rounds number up to the nearest odd integer
Làm tròn number đến số nguyên lẻ gần nhất

PI () : Returns the value pi
Trả về giá trị Pi

POWER (number, power) : Raises number to the specified power
Tính lũy thừa mũ power của number

PRODUCT(number1 [, number2,...]) : Multiplies the specified numbers
Tính tích của các số đã xác định

QUOTIENT (numberator, denominator) : Returns the integer portion of the result obtained by dividing numerator by denominator (that is, the remainder is discarded from the result)
Trả về phần nguyên của kết quả phép chia numerator cho denominator (nghĩa là, bỏ phần dư của kết quả)

RAND () : Returns a random number between 0 and 1
Trả về một số ngẫu nhiên giữa 0 và 1

RANDBETWEEN (bottom, top) : Returns a random number between bottom and top
Trả về một số ngẫu nhiên giữa bottomtop

ROMAN (number [, form]) : Converts the Arabic number to its Roman numeral equivalent (as text)
Chuyển một số Ả-rập về dạng số La-mã tương đương (theo định dạng text)

ROUND (number, num_digits) : Rounds number to a specified number of digits
Làm tròn number đến một số được chỉ định

ROUNDDOWN (number, num_digits) : Rounds number down, toward 0
Làm tròn number theo hướng về phía số 0

ROUNDUP (number, num_digits) : Rounds number up, away from 0
Làm tròn number theo hướng cách xa số 0

SERIESSUM (x, n, m, coefficients) : Returns the sum of a power series
Tính tổng của một chuỗi lũy thừa

SIGN (number) : Returns the sign of number (1 = positive, 0 = zero, -1 = negative)
Trả về dấu của number (1 = dương, 0 = zero, -1 = âm)

SQRT (number) : Returns the positive square root of number
Tính căn bậc hai của number

SQRTPI (number) : Returns the positive square root of the result of the expression number * Pi
Tính căn bậc hai của kết quả của biểu thức number * Pi

SUBTOTAL (function_num, ref1 [, ref2,...]) : Returns a subtotal from a list
Trả về một tổng con từ một danh sách

SUM (number1 [, number2,...]) : Adds the arguments
Tính tổng các đối số

SUMIF (range, criteria [, sum_range]) : Adds only those cells in range that meet the criteria
Tính tổng các ô trong range thỏa mãn điều kiện criteria

SUMPRODUCT (array1, array2 [, array3,...]) : Multiplies the corresponding elements in the specified arrays and then sums the resulting products
Nhân các phần tử trong những mảng được chỉ định lại với nhau, và sau đó tính tổng của kết quả các phép nhân này

SUMSQ (number1 [, number2,...]) : Returns the sum of the squares of the arguments
Tính tổng của bình phương của các đối số

SUMX2MY2 (array_x, array_y) : Squares the elements in the specified arrays and then sums the differences between the corresponding squares
Tính tổng của hiệu bình phương của các phần tử trong hai mảng đã xác định

SUMX2PY2 (array_x, array_y) : Squares the elements in the specified arrays and then sums the corresponding squares
Tính tổng của tổng bình phương của các phần tử trong hai mảng đã xác định

SUMXMY2 (array_x, array_y) : Squares the differences between the corresponding elements in the specified arrays and then sums the squares
Tính tổng của bình phương của hiệu các phần tử trong hai mảng đã xác định

TRUNC (number [, num_digits]) : Truncates number to an integer
Lấy phần nguyên của number
Xem thêm: Các hàm Toán học

You can download the workbook that contains this chapter’s examples here:
Bạn có thể tải về bảng tính với những ví dụ trong chương này tại đây:

Trong chương này, do hầu hết các hàm tôi đã trình bày chi tiết ở topic: Các hàm Toán học, nên tôi sẽ không trình bày lại cú pháp và chú giải các đối số của hàm nữa (không theo như nguyên bản cuốn sách này). Trong các bài dịch sau đây, khi nói đến một hàm nào, tôi sẽ tạo liên kết (link) đến bài viết về hàm đó. Nếu muốn tìm hiểu kỹ hơn về cú pháp và cách sử dụng các đối số (argument), các bạn theo những liên kết này để xem.
 
Lần chỉnh sửa cuối:
Chapter 11 - WORKING WITH MATH FUNCTIONS


11.1. Understanding Excel’s Rounding Functions
Tìm hiểu các hàm làm tròn số của Excel

Excel’s rounding functions are useful in many situations, such as setting price points, adjusting billable time to the nearest 15 minutes, and ensuring that you’re dealing with integer values for discrete numbers, such as inventory counts.
Các hàm làm tròn số của Excel thì hữu dụng trong nhiều tình huống, như là thiết lập các mức giá, điều chỉnh thời gian lập hóa đơn lên sớm hơn 15 phút, và bảo đảm rằng bạn đang xử lý các giá trị số nguyên cho những số riêng biệt, các số lượng kiểm kho chẳng hạn.

The problem is that Excel has so many rounding functions that it’s difficult to know which one to use in a given situation. To help you, this section looks at the details of — and differences between — Excel’s 10 rounding functions: ROUND(), ROUNDUP(), ROUNDDOWN(), MROUND(), CEILING(), FLOOR(), EVEN(), ODD(), INT(), and TRUNC().
Vấn đề là Excel có quá nhiều hàm dùng để làm tròn, đến nỗi khó mà biết cái nào sử dụng cho một tình huống nào. Để trợ giúp cho bạn, phần này trình bày chi tiết 10 hàm làm tròn của Excel — và những điểm khác biệt giữa chúng — là: ROUND(), ROUNDUP(), ROUNDDOWN(), MROUND(), CEILING(), FLOOR(), EVEN(), ODD(), INT(), và TRUNC().



11.1.1. The ROUND FunctionHàm ROUND

The rounding function you’ll use most often is ROUND():
Hàm làm tròn số mà bạn sẽ sử dụng nhiều nhất là ROUND():

ROUND (number, num_digits)

Table 11.2 demonstrates the effect of the num_digits argument on the results of the ROUND() function. Here, number is 1234.5678
Bảng 11.2 minh họa tác dụng của đối số num_digits trên kết quả của hàm ROUND(). Ở đây, number là 1234.5678
Table 11.2. Effect of the num_digits argument on the ROUND() Function Result
Tác dụng của đối số num_digits trên kết quả của hàm ROUND
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



11.1.2. The MROUND FunctionHàm MROUND

MROUND() is a function that rounds a number to a specified multiple:
MROUND() là một hàm làm tròn một số đến một bội số được xác định:

MROUND (number, multiple)

Table 11.3 demonstrates MROUND() with a few examples.
Bảng 11.3 minh họa hàm MROUND() với vài ví dụ:
Table 11.3. Examples of the MROUND() Function
Những ví dụ của hàm MROUND()
MROUND(5, 2) = 6

MROUND(11, 5) = 10

MROUND(13, 5) = 15

MROUND(5, 5) = 5

MROUND(7.31, 0.5) = 7.5

MROUND(-11, -5) = -10

MROUND(-11, 5) = #NUM!
 
Lần chỉnh sửa cuối:

11.1.3. The ROUNDDOWN and ROUNDUP FunctionsHàm ROUNDDOWN
& Hàm ROUNDUP
The ROUNDDOWN() and ROUNDUP() functions are very similar to ROUND(), except that they always round in a single direction: ROUNDDOWN() always rounds a number toward 0, and ROUNDUP() always rounds away from 0. Here are the syntaxes for these functions:
Hàm ROUNDDOWN() và hàm ROUNDUP() khá giống hàm ROUND(), ngoại trừ việc chúng luôn làm tròn theo một hương: ROUNDDOWN() luôn làm tròn một số về phía số 0, và ROUNDUP() luôn làm tròn xa ra khỏi số 0. Sau đây là các cú pháp cho những hàm này:

ROUNDDOWN (number, num_digits)

ROUNDUP (number, num_digits)

Table 11.4 tries out ROUNDDOWN() and ROUNDUP() with a few examples.
Bảng 11.4 thử nghiệm hàm ROUNDDOWN() và hàm ROUNDUP() với vài ví dụ:
Table 11.4. Examples of the ROUNDDOWN() and ROUNDUP() Functions
Những ví dụ của hàm ROUNDDOWN() và hàm ROUNDUP()
053.jpg



11.1.4. The CEILING and FLOOR FunctionsHàm CEILING
& Hàm FLOOR
The CEILING() and FLOOR() functions are an amalgam of the features found in MROUND(), ROUNDDOWN(), and ROUNDUP(). Here are the syntaxes:
Hàm CEILING() và hàm FLOOR() là một hỗn hợp những chức năng của các hàm MROUND(), ROUNDDOWN(), và ROUNDUP(). Đây là cú pháp của chúng:

CEILING (number, significance)

FLOOR (number, significance)

Both functions round the value given by number to a multiple of the value given by significance, but they differ in how they perform this rounding:
Cả hai hàm đều làm tròn giá trị đã cho đến bội số của giá trị được cho trước ở đối số significance, nhưng chúng khác nhau về cách mà chúng thực hiện việc làm tròn:
  • CEILING() rounds away from 0. For example, CEILING(1.56, 0.1) returns 1.6, and CEILING(–2.33, –0.5) returns –2.5.
    CEILING() làm tròn ra xa số 0. Ví dụ, CEILING(1.56, 0.1) trả về 1.6, còn CEILING(–2.33, –0.5) trả về –2.5.

  • FLOOR() rounds toward 0. For example, FLOOR(1.56, 0.1) returns 1.5, and FLOOR(–2.33, –0.5) returns –2.0.
    FLOOR() làm tròn về số 0. Ví dụ, FLOOR(1.56, 0.1) trả về 1.5, còn FLOOR(–2.33, –0.5) trả về –2.0.
CAUTION:
For the CEILING() and FLOOR() functions, both arguments must have the same sign, or they’ll return the error value #NUM!. Also, if you enter 0 for the second argument of the FLOOR() function, you’ll get the error #DIV/0!.
Đối với hàm CEILING() và FLOOR(), cả hai đối số phải có cùng dấu (dấu đại số), nếu không chúng sẽ trả về giá trị lỗi
#NUM!. Cũng vậy, nếu bạn nhập 0 cho đối số thứ hai của hàm FLOOR(), bạn sẽ nhận được lỗi #DIV/0!
 
Lần chỉnh sửa cuối:
11.1. Understanding Excel’s Rounding Functions


11.1.5. Determining the Fiscal Quarter in Which a Date Falls
Xác định quý tài chính tại một thời điểm

When working with budget-related or other financial worksheets, you often need to know the fiscal quarter in which a particular date falls. For example, a budget increase formula might need to alter the increase depending on the quarter.
Khi làm việc với các bảng tính liên quan đến ngân sách, ngân quỹ hay các bảng tính tài chính khác, bạn thường cần biết quý tài chính hiện tại của một ngày đặc biệt nào đó. Ví dụ, một công thức để tăng ngân quỹ có thể cần phải thay đổi mức tăng phụ thuộc trong một quý.

You can use the CEILING() function combined with the DATEDIF() function to calculate the quarter for a given date:
Bạn có thể dùng hàm CEILING() kết hợp với hàm DATEDIF() để tính quý hiện tại của một ngày đã biết:

= CEILING((DATEDIF(FiscalStart, MyDate, "m") + 1) / 3, 1)

Here, FiscalStart is the date on which the fiscal year begins, and MyDate is the date you want to work with. This formula uses DATEDIF() with the "m" parameter to return the number of months between the two dates. The formula adds 1 to the result (to avoid getting a 0th quarter) and then divides by 3. Applying CEILING() to the result gives the quarter in which MyDate occurs.
Ở đây, FiscalStart là ngày bắt đầu năm tài chính, và MyDate là ngày mà bạn muốn làm việc với nó. Công thức này dùng hàm DATEDIF() với đối số "m" để trả về số tháng giữa hai ngày này. Công thức cộng thêm 1 vào kết quả (để tránh nhận được quý 0) và rồi chia tất cả cho 3. Áp dụng hàm CEILING() để có kết quả là quý đang chứa ngày MyDate.



11.1.6. Calculating Easter Dates
Tính ngày lễ Phục Sinh

If you live or work in the United States, you’ll rarely have to calculate for business purposes when Easter Sunday falls because there is no statutory holiday associated with Easter. However, if Good Friday or Easter Monday is a statutory holiday where you live (as it is in Canada and Britain, respectively), it can be handy to calculate when Easter Sunday falls in a given year.
Nếu bạn sống hoặc làm việc tại Mỹ, bạn sẽ ít khi phải tính toán ngày lễ Phục Sinh trong việc kinh doanh của mình bởi vì không có quy định pháp lý về việc nghỉ lễ Phục Sinh. Tuy nhiên, nếu ngày Thứ Sáu Thánh hoặc Thứ Hai Phục Sinh là một ngày nghỉ lễ theo quy định ở nơi bạn sống (ở Canada và Anh chẳng hạn), thì việc tính toán ngày lễ Phục Sinh là ngày nào trong một năm đã biết là một việc có ích.

Unfortunately, there is no straightforward way of calculating Easter. The official formula is that Easter falls on the first Sunday after the first ecclesiastical full moon after the spring equinox. Mathematicians have tried for centuries to come up with a formula, and although some have succeeded (most notably, the famous mathematician Carl Friedrich Gauss), the resulting algorithms have been hideously complex.
Nhưng không may, chẳng có một cách nào trực tiếp để tính ngày lễ Phục Sinh. Công thức chính thức để tính là: Lễ Phục Sinh rơi vào ngày Chủ Nhật đầu tiên sau một ngày trăng tròn (ngày rằm) đầu tiên sau ngày xuân phân. Các nhà toán học đã cố gắng hằng thế kỷ để đưa ra được một công thức, và cho dù có một số đã thành công (đáng chú ý nhất là nhà toán học Carl Friedrich Gauss), thì những giải thuật để có được kết quả rất là phức tạp.

Here’s a relatively simple worksheet formula that employs the FLOOR() function and that works for the years 1900 to 2078 for date systems that use the mm/dd/yyyy format:
Đây là một công thức tương đối đơn giản sử dụng hàm FLOOR() và chỉ làm việc trong khoảng thời gian từ năm 1900 đến năm 2078, cho những hệ thống sử dụng định dạng ngày tháng theo kiểu mm/dd/yyyy:

= FLOOR("5/" & DAY(MINUTE(B1 / 38) / 2 + 56) & "/" & B1, 7) - 34 + 1

This formula assumes that the current year is in cell B1.
Công thức này giả định năm hiện hành đang ở ô B1.

For date systems that use the dd/mm/yyyy format, use this formula instead:
Với những hệ thống dùng định dạng ngày tháng theo kiểu dd/mm/yyyy, dùng công thức sau đây:

= FLOOR(DAY(MINUTE(B1 / 38) / 2 + 56) & "/5/" & B1, 7) - 34
 
Lần chỉnh sửa cuối:
11.1. Understanding Excel’s Rounding Functions


11.1.7. The EVEN and ODD FunctionsHàm EVEN
& Hàm ODD
The EVEN() and ODD() functions round a single numeric argument:
Hàm EVEN() và hàm ODD() làm tròn một đối số đơn:

EVEN (number)

ODD (number)

Both functions round the value given by number away from 0, as follows:
Cả hai hàm đều làm tròn ra xa số 0 giá trị đã cho ở number như sau:
  • EVEN() rounds to the next even number. For example, EVEN(14.2) returns 16, and EVEN(–23) returns –24.
    EVEN() làm tròn đến số chẵn gần nhất. Ví dụ, EVEN(14.2) trả về 16, còn EVEN(–23) trả về 24.

  • ODD() rounds to the next odd number. For example, ODD(58.1) returns 59 and ODD(–6) returns –7.
    ODD() làm tròn đến số lẻ gần nhất. Ví dụ, ODD(58.1) trả về 59, còn ODD(–6) trả về -7.



11.1.8. The INT() and TRUNC() FunctionsHàm INT
& Hàm TRUNC
The INT() and TRUNC() functions are similar in that you can use both to convert a value to its integer portion:
Hàm INT() và hàm TRUNC() giống nhau ở chỗ bạn có thể dùng cả hai để lấy phần nguyên của một giá trị:

INT (number)

TRUNC (number [, num_digits])

For example, INT(6.75) returns 6, and TRUNC(3.6) returns 3. However, these functions have two major differences that you should keep in mind:
Ví dụ, INT(6.75) trả về 6, và TRUNC(3.6) trả về 3. Tuy nhiên, những hàm này có 2 điểm khác nhau cơ bản mà bạn phải nhớ:
  • For negative values, INT() returns the next number away from 0. For example, INT(–3.42) returns –4. If you just want to lop off the decimal part, you need to use TRUNC() instead.
    Đối với các giá trị âm, INT() trả về số nguyên tiếp theo theo hướng ra xa số 0. Ví dụ, INT(-3.42) trả về -4. Nếu bạn chỉ muốn cắt bỏ phần thập phân mà thôi, thì bạn dùng hàm TRUNC().

  • You can use the TRUNC() function’s second argument — num_digits — to specify the number of decimal places to leave on. For example, TRUNC(123.456, 2) returns 123.45, and TRUNC(123.456, –2) returns 100.
    Bạn có thể dùng đối số thứ hai của hàm TRUNC() — num_digits — để xác định con số thập phân sẽ giữ lại. Ví dụ, TRUNC(123.456, 2) trả về 123.45, còn TRUNC(123.456, -2) trả về 100.
 
11.1. Understanding Excel’s Rounding Functions


11.1.9. Using Rounding to Prevent Calculation Errors
Sử dụng việc làm tròn để ngăn ngừa các lỗi tính toán

Most of us are comfortable dealing with numbers in decimal — or base-10 — format (the odd hexadecimal-loving computer pro notwithstanding). Computers, however, prefer to work in the simpler confines of the binary — or base-2 — system. So when you plug a value into a cell or formula, Excel converts it from decimal to its binary equivalent, makes its calculations, and then converts the binary result back into decimal format.
Hầu hết chúng ta đều có thói quen xử lý các con số theo hệ thập phân (cơ số 10) . Tuy nhiên, máy tính thích làm việc trong các giới hạn đơn giản của hệ nhị phân (cơ số 2) hơn. Do đó khi bạn nhập một giá trị vào một ô hay một công thức, Excel chuyển đổi nó từ hệ thập phân sang hệ nhị phân tương đương, thực hiện các phép tính của nó, rồi lại chuyển kết quả nhị phân trở lại hệ thập phân.

This procedure is fine for integers because all decimal integer values have an exact binary equivalent. However, many noninteger values don’t have an exact equivalent in the binary world. Excel can only approximate these numbers, and this approximation can lead to errors in your formulas. For example, try entering the following formula into any worksheet cell:
Những thủ tục trên đối với các số nguyên thì không sao, bởi vì tất cả các giá trị nguyên của hệ thập phân có một giá trị tương đương chính xác ở hệ nhị phân. Tuy nhiên, những giá trị không phải là số nguyên thì không có một giá trị tương đương chính xác ở thế giới nhị phân. Excel chỉ có thể tính xấp xỉ những số này, và sự tính xấp xỉ đó có thể dẫn đến những lỗi trong các công thức của bạn. Ví dụ, bạn thử nhập giá trị sau đây vào bất kỳ ô nào trong bảng tính:

= 0.01 = (2.02 - 2.01)

This formula compares the value 0.01 with the expression 2.02 - 2.01. These should be equal, of course, but when you enter the formula, Excel returns a FALSE result. What gives?
Công thức này so sánh giá trị 0.01 với biểu thức 2.02 - 2.01. Dĩ nhiên những giá trị này bằng nhau, nhưng khi bạn nhập công thức, Excel trả về kết quả FALSE. Sao vậy?

The problem is that, in converting the expression 2.02 - 2.01 into binary and back again, Excel picks up a stray digit in its travels. To see it, enter the formula = 2.02 - 2.01 in a cell and then format it to show 16 decimal places. You should see the following surprising result:
Vấn đề là ở chỗ, khi chuyển đổi biểu thức 2.02 - 2.01 thành hệ nhị phân và chuyển ngược trở lại, Excel đã chọn thêm một chữ số rải rác trên đường đi. Để thấy điều này, bạn nhập công thức = 2.02 - 2.01 vào trong một ô và định dạng ô đó sao cho thấy được 16 chữ số sau dấu thập phân. Bạn sẽ thấy một kết quả kỳ lạ sau đây:

0.0100000000000002

That wanton 2 in the 16th decimal place is what threw off the original calculation. To fix the problem, use the TRUNC() function (or possibly the ROUND() function, depending on the situation) to lop off the extra digits to the right of the decimal point. For example, the following formula produces a TRUE result:
Cái số 2 vô duyên ở vị trí thứ 16 sau dấu thập phân là cái cần phải loại bỏ ra khỏi phép tính gốc. Để giải quyết vấn đề này, sử dụng hàm TRUNC() (hoặc hàm ROUND() cũng được, tùy tình huống) để cắt xén các chữ số dư thừa nằm bên phải dấu thập phân. Ví dụ, công thức sau đây sẽ tạo ra kết quả là TRUE:

= 0.01 = TRUNC(2.02 - 2.01, 2)
 
Lần chỉnh sửa cuối:

11.1.10. Setting Price Points
Thiết lập mức giá

One common worksheet task is to calculate a list price for a product based on the result of a formula that factors in production costs and profit margin. If the product will be sold at retail, you’ll likely want the decimal (cents) portion of the price to be .95 or .99, or some other standard value. You can use the INT() function to help with this "rounding." For example, the simplest case is to always round up the decimal part to .95. Here’s a formula that does this:
Một trong những bảng tính thông thường là bảng báo giá cho một sản phẩm dựa trên kết quả của một công thức nhân chi phí và lợi nhuận với một hệ số. Nếu sản phẩm sẽ được bán lẻ, bạn sẽ muốn giá bán có một con số lẻ (tính theo cent) như .95, .99, hoặc là một giá trị chuẩn nào đó. Bạn có thể dùng hàm INT() với kiểu "làm tròn" của nó. Ví dụ, một trường hợp đơn giản nhất là luôn luôn làm tròn phần thập phân đến .95. Đây là công thức:

= INT(RawPrice) + 0.95

Assuming that RawPrice is the result of the formula that factors in costs and profit, the formula simply adds 0.95 to the integer portion. (Note, too, that if the decimal portion of RawPrice is greater than .95, the formula rounds down to .95.
Giả định rằng RawPrice là kết quả của công thức nhân chi phí và lợi nhuận với một hệ số, công thức trên chỉ đơn giản cộng thêm .95 vào phần nguyên. (Lứu ý rằng nếu phần thập phân của RawPrice lớn hơn .95, công thức sẽ làm tròn xuống .95).

Another case is to round up to .50 for decimal portions less than or equal to 0.5 and to round up to .95 for decimal portion greater than 0.5. Here’s a formula that handles this scenario:
Một trường hợp khác là làm tròn lên .50 cho những phần thập phân nhỏ hơn hay bằng .05 và làm tròn lên .95 cho những phần thập phân lớn hơn .05. Đây là một công thức để xử lý trường hợp này:

= VALUE(INT(RawPrice) & IF(RawPrice - INT(RawPrice) <= 0.5, ".50", ".95"))

Again, the integer portion is stripped from the RawPrice. Also, the IF() function checks to see if the decimal portion is less than or equal to 0.5. If so, the string .50 is returned; otherwise, the string .95 is returned. This result is concatenated to the integer portion, and the VALUE() function ensures that a numeric result is returned.
Nói lại, phần nguyên (của giá) được lấy ra từ RawPrice; và hàm IF() kiểm tra xem phần thập phân có nhỏ hơn hay bằng 0.5 hay không. Nếu đúng, chuỗi .50 được trả về, còn nếu không, chuỗi .95 được trả về. Kết quả này được kết hợp với phần nguyên, và hàm VALUE() dùng để bảo đảm rằng kết quả trả về là một giá trị số.
 
Chapter 11 - WORKING WITH MATH FUNCTIONS

11.2. Summing Values
Tính tổng các giá trị

Summing values — whether it’s a range of cells, function results, literal numeric values, or expression results — is perhaps the most common spreadsheet operation. Excel enables you to add values using the addition operator (+), but it’s often more convenient to sum a number of values by using the SUM() function, which you’ll learn more about in this section.
Tính tổng các giá trị — bất cứ giá trị gì: một dãy các ô, những kết quả của các công thức, những giá trị của các ký tự số, những kết quả của biểu thức,... — có lẽ là một phép tính thông thường nhất trong một bảng tính. Excel cho phép bạn cộng những giá trị với nhau bằng toán tử cộng (+), nhưng cộng các giá trị với nhau bằng hàm SUM() mà bạn sẽ tìm hiểu trong phần này thì tiện lợi hơn.



11.2.1. The SUM FunctionHàm SUM
Here’s the syntax of the SUM() function:
Đây là cú pháp của hàm SUM():

SUM (number1 [, number2,...])

In Excel 2007, you can enter up to 255 arguments into the SUM() function. (In previous versions of Excel, the maximum number of arguments is 30.) For example, the following formula returns the sum of the values in three separate ranges:
Trong Excel 2007, bạn có thể nhập đến 255 đối số trong hàm SUM(). (Với những phiên bản trước của Excel, con số tối đa các đối số là 30). Ví dụ, công thức sau đây trả về tổng của các giá trị trong ba dãy riêng biệt:

=SUM(A2:A13, C2:C13, E2:E13)
 
11.2. Summing Values


11.2.2. Calculating Cumulative Totals
Tính tổng tích lũy (phép cộng lũy tiến)

Many worksheets need to calculate cumulative totals. Most budget worksheets, for example, show cumulative totals for sales and expenses over the course of the fiscal year. Similarly, loan amortizations often show the cumulative interest and principal paid over the life of the loan.
Có nhiều bảng tính cần phải tính tổng tích lũy. Ví dụ, hầu hết các bảng tính ngân sách đều trình bày tổng tích lũy cho doanh số và chi phí trong suốt năm tài chính. Tương tự, những khoản trả dần cho một khoản vay thường hiển thị số tiền lãi và số tiền gốc đã trả trong suốt thời hạn của khoản vay.

Calculating these cumulative totals is straightforward. For example, see the worksheet shown in Figure 11.1. Column F tracks the cumulative interest on the loan, and cell F7 contains the following SUM() formula:
Tính toán những cái tổng tích lũy này thì đơn giản thôi. Ví dụ, bạn xem bảng tính minh họa ở hình 11.1. Cột F theo dõi những khoản lãi tích lũy cho khoản vay, và ô F7 chứa công thức SUM() sau đây:

=SUM($D$7:D7)

Figure111.jpg

Figure 11.1 - Math Functions.xlsx
This formula just sums cell D7, which is no great feat. However, when you fill the range F7:F54 with this formula, the left part of the SUM() range ($D$7) remains anchored; the right side (D7) is relative and, therefore, changes. So, for example, the corresponding formula in cell F10 would be this:
Công thức này chỉ tính tổng của ô D7, không có gì lớn hơn. Tuy nhiên, khi bạn kéo (fill) công thức này trong dãy F7:F54, phần bên trái của dãy tính tổng trong SUM() ($D$7), được neo cố định; còn phần bên phải (D7) là địa chỉ tương đối, và do đó nó thay đổi. Ví dụ, công thức trong ô F10 sẽ là:

=SUM($D$7:D10)

In case you’re wondering, column G tracks the percentage of the total principal that has been paid off so far. Here’s the formula used in cell G7:
Trong trường hợp bạn thắc mắc trường hợp tỷ lệ phần trăm của tổng vốn vay đã được trả cho đến bây giờ trong cột G thì theo dõi như thế nào, đây là công thức trong ô G7:

=SUM($E$7:E7) / $B$4 * -1

The SUM($E$7:E7) part calculates the cumulative principal paid. To get the percentage, divide by the total principal (cell B4). The whole thing is multiplied by –1 to return a positive percentage.
Phần SUM($E$7:E7) tính tổng tích lũy cho khoản vốn vay đã trả. Để có được tỷ lệ phần trăm, chia nó cho tổng vốn vay (ô B4). Rồi toàn bộ được nhân với -1 để trả về một tỷ lệ phần trăm dương.
 
Lần chỉnh sửa cuối:
11.2. Summing Values


11.2.3. Summing Only the Positive or Negative Values in a Range
Chỉ tính tổng các giá trị dương hoặc các giá trị âm trong một dãy

If you have a range of numbers that contains both positive and negative values, what do you do if you need a total of only the negative values? Or only the positive ones? You could enter the individual cells into a SUM() function, but there’s an easier way that makes use of arrays.
Nếu bạn có một dãy số trong đó có những giá trị dương lẫn những giá trị âm, bạn phải làm thế nào nếu chỉ muốn tính tổng những giá trị âm? Hoặc chỉ muốn tính tổng những giá trị dương? Bạn có thể nhập vào trong hàm SUM() từng ô riêng lẻ, nhưng, có một cách dễ hơn, là tận dụng các mảng.

To sum the negative values in a range, you use the following array formula:
Để tính tổng những giá trị âm trong một dãy, bạn dùng công thức mảng sau đây:

{=SUM((range < 0) * range)}

Here, range is a range reference or named range. The range < 0 test returns TRUE (the equivalent of 1) for those range values that are less than 0; otherwise, it returns FALSE (the equivalent of 0). Therefore, only negative values get included in the SUM().
Ở đây, range là một dãy tham chiếu hay là một tên dãy. Phép thử range < 0 trả về TRUE (hay là 1) cho những giá trị nhỏ hơn 0 trong dãy, và trả về FALSE (hay là 0) cho những giá trị khác. Do đó, chỉ có các giá trị âm được đưa vào hàm SUM().

Similarly, you use the following array formula to sum only the positive values in range:
Tương tự, bạn dùng công thức mảng sau đây để chỉ tính tổng những giá trị dương trong một dãy:

{=SUM((range > 0) * range)}
 
Chapter 11 - WORKING WITH MATH FUNCTIONS


11.3. The MOD Function
Hàm MODE

The MOD() function calculates the remainder (or modulus) that results after dividing one number into another. Here’s the syntax for this more-useful-than-you-think function:
Hàm MOD() tính số dư của phép tính chia một số cho một số khác. Đây là cú pháp của hàm hữu-dụng-hơn-là-bạn-nghĩ này:

MOD (number, divisor)

For example, MOD(24, 10) equals 4 (that is, 24/10 = 2, with remainder 4). The MOD() function is well suited to values that are both sequential and cyclical. For example, the days of the week (as given by the WEEKDAY() function) run from 1 (Sunday) through 7 (Saturday) and then start over (the next Sunday is back to 1). So, the following formula always returns an integer that corresponds to a day of the week:
Ví dụ, MOD(24, 10) bằng 4 (nghĩa là, 24/10 = 2, dư 4). Hàm MOD() rất thích hợp cho các giá trị vừa theo một trình tự nào đó vừa tuần hoàn. Ví dụ, những ngày trong tuần (được cho bởi hàm WEEKDAY) chạy từ 1 (Chủ Nhật) đến 7 (thứ Bảy), và sau đó bắt đầu lại (Chủ Nhật tiếp theo quay trở lại 1). Do đó, công thức sau đây luôn trả về một số nguyên dương tương ứng với một ngày trong tuần:

= MOD(number, 7) + 1

If number is any integer, the MOD() function returns integer values from 0 to 6, so adding 1 gives values from 1 to 7. You can set up similar formulas using months (1 to 12), seconds, or minutes (0 to 59), fiscal quarters (1 to 4), and more.
Nếu number là một số nguyên, hàm MOD() sẽ trả về một giá trị nguyên từ 0 đến 6, do đó cộng thêm 1 sẽ cho ra các giá trị từ 1 đến 7. Bạn có thể thiết lập những công thức tương tự sử dụng các tháng (1 đến 12), giây, phút (0 đến 59), quý tài chính (1 đến 4), v.v...
 
11.3. The MOD Function


11.3.1. A Better Formula for Time Differences
Một công thức tốt hơn để tính sự chênh lệch thời gian

In Chapter 10, I told you that subtracting an earlier time from a later time is problematic if the earlier time is before midnight and the later time is after midnight. Here’s the expression I showed you that overcomes this problem:
Ở chương 10, tôi đã nói với bạn việc lấy một thời gian sau trừ đi một thời gian trước sẽ gây ra vấn đề nếu như thời gian trước là trước nửa đêm còn thời gian sau là nửa đêm. Đây là biểu thức mà tôi đã trình bày với bạn để khắc phục vấn đề này:

IF(EndTime < StartTime, 1 + EndTime - StartTime, EndTime - StartTime)

However, time values are sequential and cyclical: They’re real numbers that run from 0 to 1 and then start over at midnight. Therefore, you can use MOD() to greatly simplify the formula for calculating the difference between two times:
Tuy nhiên, những giá trị thời gian thì có tính trình tự và tuần hoàn: Chúng là các số thực chạy từ 0 đến 1 và trở lại từ đầu lúc nửa đêm. Do đó, bạn có thể dùng hàm MOD() để đơn giản đáng kể công thức tính sự chênh lệch giữa hai thời gian:

= MOD(EndTime - StartTime, 1)

This works for any value of EndTime and StartTime, as long as EndTime comes later than StartTime.
Công thức này làm việc với mọi giá trị của EndTime và StartTime, miễn là EndTime đến sau StartTime.
 
11.3. The MOD Function


11.3.2. Summing Every nth Row
Tính tổng của những hàng cách đều nhau n hàng

Depending on the structure of your worksheet, you might need to sum only every nth row, where n is some integer. For example, you might want to sum only every 5th or 10th cell to get a sampling of the data.
Phụ thuộc vào cấu trúc của bảng tính, bạn có thể cần phải tính tổng của những hàng cách nhau n hàng, với n là một số nguyên nào đó. Ví dụ, bạn muốn tính tổng của mỗi ô thứ 5 hoặc thứ 10 để lấy ra một mẫu dữ liệu.

You can accomplish this by applying the MOD() function to the result of the ROW() function, as in this array formula:
Bạn có thể thực hiện điều này bằng cách áp dụng hàm MOD() vào kết quả của một hàm ROW(), trong một công thức mảng:

{= SUM(IF(MOD(ROW(Range), n) = 1, Range, 0))}

For each cell in Range, MOD(ROW(Range), n) returns 1 for every nth value. In that case, the value of the cell is added to the sum; otherwise, 0 is added. In other words, this sums the values in the 1st row of Range, the n + 1st row of Range, and so on. If instead you want the 2nd row of Range, the n + 2nd row of Range, and so on, compare the MOD() result with 2, like so:
Với mỗi ô trong Range, MOD(ROW(Range), n) trả về 1 cho mỗi giá trị thứ n, trong trường hợp này, giá trị của ô được thêm vào trong tổng; còn không, thì 0 được thêm vào. Nói cách khác, công thức này tính tổng các giá trị trong hàng thứ nhất của Range, trong hàng thứ n + 1 của Range, trong hàng thứ 2n + 1, v.v... Thay vì bắt đầu từ hàng thứ nhất, bạn muốn tính tổng của những giá trị trong hàng thứ hai của Range và trong những hàng cách đều hàng thứ hai này n hàng trong Range, thì bạn so sánh kết quả của MOD() với 2, giống như vầy:

{= SUM(IF(MOD(ROW(Range), n) = 2, Range, 0))}



  • Special Case No. 1: Summing Only Odd Rows
    Trường hợp đặc biệt 1: Chỉ tính tổng những hàng lẻ
If you want to sum only the odd rows in a worksheet, use this straightforward variation in the formula:
Nếu bạn chỉ muốn tính tổng của những hàng lẻ trong một bảng tính, bạn sử dụng một sự biến đổi đơn giản sau đây trong công thức:

{= SUM(IF(MOD(ROW(Range), 2) = 1, Range, 0))}



  • Special Case No. 2: Summing Only Even Rows
    Trường hợp đặc biệt 2: Chỉ tính tổng những hàng chẵn
To sum only the even rows, you need to sum those cells where MOD(ROW(Range), 2) returns 0:
Để tính tổng chỉ những hàng chẵn, bạn cần cộng tất cả những ô mà MOD(ROW(Range), 2) trả về 0:

{= SUM(IF(MOD(ROW(Range), 2) = 0, Range, 0))}
 
11.3. The MOD Function


11.3.3. Determining Whether a Year Is a Leap Year
Xác định một năm nhuận

If you need to determine whether a given year is a leap year, the MOD() function can help. Leap years (with some exceptions) are years divisible by 4. So, a year is (usually) a leap year if the following formula returns 0:
Nếu bạn muốn xác định xem một năm có phải là năm nhuận hay không, hàm MOD() có thể giúp bạn. Năm nhuận (với một số ngoại lệ) là năm có số năm chia hết cho 4. Vậy, một năm (thường) là nhuận khi công thức sau đây trả về 0:

= MOD(year, 4)

In this case, year is a four-digit year number. This formula works for the years 1901 to 2099, which should take care of most people’s needs. The formula doesn’t work for 1900 and 2100 because, despite being divisible by 4, these years aren’t leap years. The general rule is that a year is a leap year if it’s divisible by 4 and it’s not divisible by 100, unless it’s also divisible by 400. Therefore, because 1900 and 2100 are divisible by 100 and not by 400, they aren’t leap years. The year 2000, however, is a leap year. If you want a formula that takes the full rule into account, use the following formula:
Trong trường hợp này, số chỉ năm là một số có 4 chữ số. Công thức trên làm việc cho những năm từ 1901 đến 2099, đủ để đáp ứng được đa số nhu cầu sử dụng. Công thức này không làm việc với năm 1900 và năm 2100 bởi vì, cho dù chia hết cho 4, nhưng những năm này không phải là năm nhuận. Quy luật chung của một năm nhuận là nó phải chia hết cho 4 nhưng không chia hết cho 100, ngoại trừ chia hết cho 400. Do đó, bởi vì năm 1900 và 2100 chia hết cho 100 mà không chia hết cho 400, nên chúng không phải là năm nhuận. Tuy nhiên, năm 2000 là một năm nhuận. Nếu bạn muốn có một công thức tính được với quy tắc chung này, bạn dùng công thức sau:

= (MOD(year, 4) = 0) - (MOD(year, 100) = 0) + (MOD(year, 400) = 0)

The three parts of the formula that compare a MOD() result to 0 return 1 or 0. Therefore, the result of this formula always is 0 for leap years and nonzero for all other years.
Ba phần của công thức này so sánh kết quả của MOD() với 0 trả về 1 hay là 0. Do đó, kết quả của công thức luôn là 0 cho những năm nhuận và khác 0 cho tất cả những năm khác.
 
11.3. The MOD Function


11.3.4. Creating Ledger Shading
Tạo một Ledger Shading

(Chữ này khó dịch quá, đại khái nó giống như cái hình 11.2 ở trong bài, nếu dịch là "Tô bóng Sổ cái" thì nghe không ổn, nên tôi để nguyên chữ tiếng Anh)

Ledger shading is formatting in which rows alternate cell shading between a light color and a slightly darker color (for example, white and light gray). This type of shading is often seen in checkbook registers and account ledgers, but it’s also useful in any worksheet that presents data in rows because it makes it easier to differentiate each row from its neighbors. Figure 11.2 shows an example.
Ledger Shading là một loại định dạng mà trong đó mỗi hàng được luân phiên tô xen kẽ màu sáng và màu ít sáng hơn (ví dụ, trắng và xám nhạt). Loại tô màu này thường được thấy trong các bảng đăng ký sổ séc và các sổ cái kế toán, nhưng nó cũng hữu dụng trong bất kỳ bảng tính nào trình bày dữ liệu theo hàng, vì nó làm cho dễ phân biệt từng hàng với các hàng lân cận hơn. Hình 11.2 minh họa một ví dụ.
Figure112.jpg

Figure 11.2 - Math Functions.xlsx
However, ledger shading isn’t easy to work with by hand:
Tuy nhiên, Ledger Shading không dễ thực hiện bằng tay:
  • It can take a while to apply if you have a large range to format.
    Rất mất thời gian nếu như bạn định dạng một dãy lớn.

  • If you insert or delete a row, you have to reapply the formatting.
    Nếu bạn chèn thêm hay xóa một dòng, bạn phải định dạng lại.

To avoid these headaches, you can use a trick that combines the MOD() function and Excel’s conditional formatting. Here’s how it’s done:
Để tránh những rắc rối này, bạn có thể sử dụng một thủ thuật kết hợp hàm MOD() và tính năng định dạng có điều kiện của Excel. Sau đây là cách thực hiện:
  1. Select the area you want to format with ledger shading.
    Chọn vùng mà bạn muốn định dạng kiểu Ledger Shading

  2. Choose Home, Conditional Formatting, New Rule to display the New Formatting Rule dialog box.
    Chọn Home, Conditional Formatting, New Rule để hiện thị hộp thoại New Formatting Rule.

  3. Click Use a Formula to Determine Which Cells to Format.
    Chọn Use a Formula to Determine Which Cells to Format.

  4. In the text box, enter the following formula:
    Trong textbox ở dưới, nhập công thức sau đây:

    = MOD(ROW(), 2)

  5. Click Format to display the Format Cells dialog box.
    Nhấn Format để hiển thị hộp thoại Format Cells.

  6. Select the Fills tab, click the color you want to use for the nonwhite ledger cells, and then click OK to return to the New Formatting Rule dialog box (see Figure 11.3).
    Chọn tab Fill, chọn màu bạn muốn dùng cho những ô không có màu trắng, và nhấn OK để quay về hôp thoại New Formatting Rule (xem hình 11.3)

  7. Click OK.
    Nhấn OK.
    Figure113.jpg

    Figure 11.3 - Math Functions.xlsx

The formula =MOD(ROW(), 2) returns 1 for odd-numbered rows and 0 for even-numbered rows. Because 1 is equivalent to TRUE, Excel applies the conditional formatting to the oddnumbered rows and leaves the even-numbered rows as they are.
Công thức =MOD(ROW(), 2) trả về 1 cho những hàng được đánh số lẻ và 0 cho những hàng được đánh số chẵn. Bởi vì 1 tương tự như TRUE, nên Excel áp dụng định dạng có điều kiện cho những hàng được đánh số lẻ và bỏ qua những hàng được đánh số chẵn.
NOTE:
If you prefer to alternate shading on coluns, instead, use the following formula in the Conditional Formatting dialog box:
Nếu bạn muốn tô màu xen kẽ cho các cột, bạn sử dụng công thức sau đây trong hộp thoại Conditional Formatting:

=MOD(COL(), 2)

If you prefer to have the even rows shaded and the odd rows unshaded, use the following formula in the Conditional Formatting dialog box:
Nếu bạn thích tô màu cho các hàng đánh số chẵn, còn hàng đánh số lẻ thì không tô, bạn sử dụng công thức sau đây trong hộp thoại Conditional Formatting:

=MOD(ROW() + 1, 2)
 
Chapter 11 - WORKING WITH MATH FUNCTIONS


11.4. Generating Random Numbers
Tạo các số ngẫu nhiên

If you’re using a worksheet to set up a simulation, you’ll need realistic data on which to do your testing. You could make up the numbers, but it’s possible that you might skew the data unconsciously. A better approach is to generate the numbers randomly using the worksheet functions RAND() and RANDBETWEEN().
Khi bạn dùng bảng tính để thiết lập những sự mô phỏng, bạn sẽ cần các dữ liệu thật để thực hiện thự nghiệm. Bạn có thể tự tạo ra các con số, nhưng bạn có thể vô ý làm sai lệch dữ liệu. Một phương pháp tốt hơn là tạo ra những số ngẫu nhiên bẳng hàm RAND() và RANDBETWEEN().


11.4.1. The RAND FunctionHàm RAND
The RAND() function returns a random number that is greater than or equal to 0 and less than 1. RAND() is often useful by itself (for example, it’s perfect for generating random time values). However, you’ll most often use it in an expression to generate random numbers between two values.
Hàm RAND() trả về một số ngẫu nhiên lớn hơn hoặc bằng 0 và nhỏ hơn 1. Bản thân hàm RAND() rất hữu dụng (ví dụ, nó hoàn hảo trong việc tạo ra ngẫu nhiên các giá trị thời gian). Tuy nhiên, bạn sẽ thường sử dụng nó trong môt biểu thức để tạo ra các số ngẫu nhiên giữa hai giá trị.

In the simplest case, if you want to generate random numbers greater than or equal to 0 and less than n, use the following expression:
Trong trường hợp đơn giản nhất, khi bạn muốn tạo ra những số ngẫu nhiên lớn hơn hoặc bằng 0 và nhỏ hơn n, bạn dùng biểu thức sau:

RAND() * n

For example, the following formula generates a random number between 0 and 30:
Ví dụ, công thức sau đây tạo ra một số ngẫu nhiên giữa 0 và 30:

=RAND() * 30

The more complex case is when you want random numbers greater than or equal to some number m and less than some number n. Here’s the expression to use for this case:
Trường hợp phức tạo hơn là khi bạn muốn những số ngẫu nhiên lớn hơn hoặc bằng một số m nào đó, và nhỏ hơn một số n nào đó. Đây là biểu thức cho trường hợp này:

RAND() * (n - m) + m

For example, the following formula produces a random number greater than or equal to 100 and less than 200:
Ví dụ, công thức sau đây tạo ra một số ngẫu nhiên lớn hơn hoặc bằng 100 và nhỏ hơn 200:

=RAND() * (200 - 100) + 100
CAUTION:
RAND() is a volatile function, meaning that its value changes each time you recalculate or reopen the worksheet, or edit any cell on the worksheet. To enter a static random number in a cell, type =RAND(), press F9 to evaluate the function and return a random number, and then press Enter to place the random number into the cell as a numeric literal.
RAND() là một hàm động, nghĩa là giá trị của nó sẽ thay đổi mỗi khi bạn tính toán lại hoặc mở lại bảng tính, hay khi bạn sửa đổi bất kỳ ô nào trong bảng tính. Để nhập một số ngẫu nhiên tĩnh (cố định) trong một ô, bạn gõ =RAND(), nhấn F9 để lượng giá hàm, và rồi nhấn Enter để đặt con số ngẫu nhiên vào trong ô dưới dạng một ký tự số.
 
11.4.1. The RAND Function

  • Generating Random n-Digit Numbers
    Tạo ngẫu nhiên các số có n chữ số
It’s often useful to create random numbers with a specific number of digits. For example, you might want to generate a random six-digit account number for new customers, or you might need a random eight-digit number for a temporary filename.
Tạo ngẫu nhiên các số với số chữ số cố định là một việc hữu ích. Ví dụ, bạn có thể muốn tạo ngẫu nhiên một số tài khoản có 6 chữ số cho một khách hàng mới, hoặc bạn cần có một số ngẫu nhiên với 8 chữ số cho môt file tạm.

The procedure for this is to start with the general formula from the previous section and apply the INT() function to ensure an integer result:
Thủ tục cho điều này là bắt đầu với việc tạo ra một công thức chung (đã nói ở bài trước) và áp dụng hàm INT() để bảo đảm kết quả là một số nguyên:

INT(RAND() * (n - m) + m)

In this case, however, you set n equal to 10n, and you set m equal to 10n-1:
Tuy nhiên, trong trường hợp này, bạn đặt n = 10n và đặt m = 10n-1:

INT(RAND() * (10n - 10n-1) + 10n-1)

For example, if you need a random eight-digit number, this formula becomes the following:
Ví dụ, nếu bạn cần một số ngẫu nhiên có 8 chữ số, công thức trên trở thành:

INT(RAND() * (100000000 - 10000000) + 10000000)

This generates random numbers greater than or equal to 10,000,000 and less than or equal to 99,999,999.
Công thức này sẽ tạo ra một số ngẫu nhiên lớn hơn hoặc bằng 10,000,000 và nhỏ hơn 99,999,999.
 
11.4.1. The RAND Function

  • Generating a Random Letter
    Tạo những ký tự ngẫu nhiên
You normally use RAND() to generate a random number, but it’s also useful for text values. For example, suppose that you need to generate a random letter of the alphabet. There are 26 letters in the alphabet, so you start with an expression that generates random integers greater than or equal to 1 and less than or equal to 26:
Bình thường thì bạn dùng hàm RAND() để tạo một số ngẫu nhiên, nhưng nó cũng có thể tạo tra một giá trị chữ. Ví dụ, giả sử bạn muốn tạo một ký tự ngẫu nhiên của bảng chữ cái. Có 26 ký tự trong bảng chữ cái, vậy bạn bắt đầu với một biểu thức tạo ra một số nguyên ngẫu nhiên lớn hơn hoặc bằng 1 vả nhỏ hơn hoặc bằng 26:

INT(RAND() * 26 + 1)

If you want a random uppercase letter (A to Z), note that these letters have character codes that run from ANSI 65 to ANSI 90, so you take the above formula, add 64, and plug the result into the CHAR() function:
Nếu bạn muốn ký tự ngẫu nhiên là chữ hoa (A-Z), bạn hãy chú ý rằng mã ký tự của những chữ hoa trong bảng mã ANSI chạy từ 65 đến 90, vậy bạn lấy công thức trên cộng thêm 64, và đặt nó vào kết quả của hàm CHAR():

=CHAR(INT(RAND() * (26) + 1) + 64)

If you want a random lowercase letter (a to z), instead, note that these letters have character codes that run from ANSI 97 to ANSI 122, so you take the above formula, add 96, and plug the result into the CHAR() function:
Và thay vì vậy, bạn muốn ký tự ngẫu nhiên là chữ thường, bạn hãy chú ý rằng mã ký tự của những chữ thường trong bảng mã ANSI chạy từ 97 đến 122, vậy bạn lấy công thức trên cộng thêm 96, và cũng đặt nó vào kết quả của hàm CHAR():

=CHAR(INT(RAND() * (26) + 1) + 96)
 
11.4. Generating Random Numbers


11.4.2. The RANDBETWEEN FunctionHàm RANDBETWEEN

Excel also offers the RANDBETWE$$EN() function, which can simplify working with certain sets of random numbers. RANDBETWEEN() lets you specify a lower bound and an upper bound, and then returns a random integer between them:
Excel cũng cung cấp hàm RANDBETWEEN() để đơn giản hóa việc làm việc với tập hợp các số ngẫu nhiên nhất định nào đó. RANDBETWEEN() cho bạn xác định một cận dưới và một cận trên, và trả về một số nguyên ngẫu nhiên giữa hai cận đó:

RANDBETWEEN (bottom, top)

For example, the following formula returns a random integer between 0 and 59:
Ví dụ, công thức sau đây trả về một số ngẫu nhiên giữa 0 và 59:

=RANDBETWEEN(0, 59)



------------------------------------- End Of Chapter 11 -------------------------------------
 
Web KT
Back
Top Bottom