- Tham gia
- 17/8/08
- Bài viết
- 8,662
- Được thích
- 16,718
- Giới tính
- Nam
Nếu như công thức trong Excel ta tính được số lớn gần nhất:
và số nhỏ gần nhất:
Thì hàm tự tạo mà tôi sẽ trình bày dưới đây cũng có thể tính được như công thức trên:
tính số lớn gần nhất:
và số nhỏ gần nhất:
Và đây là hàm FindClosestNumber:
Ai có nhu cầu thì sử dụng, không có thì thôi, và nếu ai có hàm nào hay hơn, ngắn gọn hơn thì chia sẻ.
P/s: Giải thích các tham số trong hàm:
1) rngData: Vùng dữ liệu cần so sánh
2) dblNumber: Giá trị dạng số cần so sánh
3) bytNum: Nếu bằng 0 thì hàm trả về giá trị gần nhất lớn hơn giá trị cần so sánh và nếu khác 0 thì hàm trả về giá trị gần nhất nhỏ hơn giá trị cần so sánh. Mặc định là 0 nên không cần ghi ra tham số nếu tìm giá trị lớn gần nhất.
Như vậy FindClosestNumber tìm 2 kiểu giá trị lớn hơn hoặc nhỏ hơn gần nhất so với giá trị cần so sánh tùy thuộc vào bytNum.
Mã:
{=MIN(IF(C3:F3>G3,C3:F3))}
Mã:
{=MAX(IF(C3:F3<G3,C3:F3))}
Thì hàm tự tạo mà tôi sẽ trình bày dưới đây cũng có thể tính được như công thức trên:
tính số lớn gần nhất:
Mã:
=FindClosestNumber(C3:F3,G3)
Mã:
=FindClosestNumber(C3:F3,G3,1)
Và đây là hàm FindClosestNumber:
Mã:
Function FindClosestNumber(ByVal rngData As Range, dblNumber As Double, Optional ByVal bytNum As Byte) As Double
Dim arrNum()
Dim n As Long
Dim rng As Range
If bytNum = 0 Then
For Each rng In rngData
If Val(rng.Value) > dblNumber Then
n = n + 1
ReDim Preserve arrNum(1 To n)
arrNum(n) = Val(rng.Value)
End If
Next
If n Then FindClosestNumber = WorksheetFunction.Min(arrNum)
Else
For Each rng In rngData
If Val(rng.Value) < dblNumber Then
n = n + 1
ReDim Preserve arrNum(1 To n)
arrNum(n) = Val(rng.Value)
End If
Next
If n Then FindClosestNumber = WorksheetFunction.Max(arrNum)
End If
End Function
Ai có nhu cầu thì sử dụng, không có thì thôi, và nếu ai có hàm nào hay hơn, ngắn gọn hơn thì chia sẻ.
P/s: Giải thích các tham số trong hàm:
PHP:
Function FindClosestNumber(ByVal rngData As Range, dblNumber As Double, Optional ByVal bytNum As Byte) As Double
1) rngData: Vùng dữ liệu cần so sánh
2) dblNumber: Giá trị dạng số cần so sánh
3) bytNum: Nếu bằng 0 thì hàm trả về giá trị gần nhất lớn hơn giá trị cần so sánh và nếu khác 0 thì hàm trả về giá trị gần nhất nhỏ hơn giá trị cần so sánh. Mặc định là 0 nên không cần ghi ra tham số nếu tìm giá trị lớn gần nhất.
Như vậy FindClosestNumber tìm 2 kiểu giá trị lớn hơn hoặc nhỏ hơn gần nhất so với giá trị cần so sánh tùy thuộc vào bytNum.
Lần chỉnh sửa cuối: