[Chia sẻ] Hàm UDF tìm số lớn gần nhất và số nhỏ gần nhất
Nếu như công thức trong Excel ta tính được số lớn gần nhất:
{=MIN(IF(C3:F3>G3,C3:F3))}
và số nhỏ gần nhất:
{=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:
=FindClosestNumber(C3:F3,G3)
và số nhỏ gần nhất:
=FindClosestNumber(C3:F3,G3,1)
Và đây là hàm FindClosestNumber:
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:
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.
www.giaiphapexcel.com/diendan/threads/chia-s%E1%BA%BB-h%C3%A0m-udf-t%C3%ACm-s%E1%BB%91-l%E1%BB%9Bn-g%E1%BA%A7n-nh%E1%BA%A5t-v%C3%A0-s%E1%BB%91-nh%E1%BB%8F-g%E1%BA%A7n-nh%E1%BA%A5t.157802/#post-1047664
Kỹ năng giải quyết vấn đề hiệu quả
Mô tả Nội dung Đánh giá Tài nguyên KỸ NĂNG GIẢI QUYẾT VẤN ĐỀ HIỆU QUẢHiểu đúng vấn đề là một nửa của giải...
Xem khóa học
Bình luận