GIúp hàm tìm số ( Nhỏ hơn hoặc bằng số cần tìm ) (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

minhtuan55

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
23/3/16
Bài viết
705
Được thích
52
Chào cả nhà GPE ! Em mò cả đêm mà chưa ra hàm như thế này. Mong cả nhà giúp em. Em xin chân thành cảm ơn !

215219
 
Rỗi việc viết để bạn nào muốn tham khảo:
PHP:
Function TSGN(CSDL As Range, Optional Num As Integer = 13)
Dim sRng As Range, WF As Object
Dim Max_ As Integer, Min_ As Integer, J As Integer

Set WF = Application.WorksheetFunction
Max_ = WF.Max(CSDL):                    Min_ = WF.Min(CSDL)
If Num > Max_ Then
    TSGN = Max_:                               Exit Function
End If
If Num < Min_ Then
    TSGN = "Nothing!":                        Exit Function
End If
For J = Num To Min_ Step -1
    Set sRng = CSDL.Find(J, , xlFormulas, xlWhole)
    If Not sRng Is Nothing Then
        TSGN = J:                              Exit Function
    End If
Next J
End Function
 
Lần chỉnh sửa cuối:
Thử:
=AGGREGATE(14,6,(C4:C12<=E4)*C4:C12,1)

Công thức anh vô cùng chính xác. Em cảm ơn anh rất nhiều. Trường hợp tìm số >= ( Lớn hoặc bằng số cần tìm ) em có đổi lại sao nó không hiểu anh =AGGREGATE(14,6,(C4:C120>=E4)*C4:C120,1)
Bài đã được tự động gộp:

Rỗi việc viết để bạn nào muốn tham khảo:
PHP:
Function TSGN(CSDL As Range, Optional Num As Integer = 13)
Dim sRng As Range, WF As Object
Dim Max_ As Integer, Min_ As Integer, J As Integer

Set WF = Application.WorksheetFunction
Max_ = WF.Max(CSDL):                    Min_ = WF.Min(CSDL)
If Num > Max_ Then
    TSGN = Max_:                               Exit Function
End If
If Num < Min_ Then
    TSGN = "Nothing!":                        Exit Function
End If
For J = Num To Min_ Step -1
    Set sRng = CSDL.Find(J, , xlFormulas, xlWhole)
    If Not sRng Is Nothing Then
        TSGN = J:                              Exit Function
    End If
Next J
End Function

Code rất hay. Cảm ơn bác. bác giúp em trường hợp >= thì sữa chổ nào hả bác
 
PHP:
Function TSGN(CSDL As Range, Optional Num As Integer = 35)
Dim sRng As Range, WF As Object
Dim Max_ As Integer, Min_ As Integer, J As Integer

Set WF = Application.WorksheetFunction
Max_ = WF.Max(CSDL):                    Min_ = WF.Min(CSDL)
If Num > Max_ Then
    TSGN = Max_:                               Exit Function
End If
If Num < Min_ Then
    TSGN = Min_:                              Exit Function
End If
For J = Num To Max_
    Set sRng = CSDL.Find(J, , xlFormulas, xlWhole)
    If Not sRng Is Nothing Then
        TSGN = J:                              Exit Function
    End If
Next J
End Function
 
Công thức anh vô cùng chính xác. Em cảm ơn anh rất nhiều. Trường hợp tìm số >= ( Lớn hoặc bằng số cần tìm ) em có đổi lại sao nó không hiểu anh =AGGREGATE(14,6,(C4:C120>=E4)*C4:C120,1)
Mã:
=AGGREGATE(15,6,C4:C120/(C4:C120>=E4),1)
 
Công thức anh vô cùng chính xác.
Theo tôi công thức không chính xác.
Khi mọi số đều lớn hơn E4 thì theo yêu cầu phải trả về lỗi vì mọi số đều lớn hơn E4, không có số thỏa. Không thể coi 0 tương đương với lỗi được vì nếu 0 là 1 số trong mảng còn các số còn lại > E4 thì số 0 này là kết quả đúng theo yêu cầu. Nếu dữ liệu ít thì nhìn có thể biết là 0 trong trường hợp cụ thể là kết quả đúng hay là kết quả sai. Nhưng khi dữ liệu nhiều thì dễ không để ý.
Theo tôi dùng phép chia thay cho phép nhân thôi.

Thậm chí nếu dữ liệu luôn chỉ có số dương thì cũng nên trả về lỗi khi mọi số đều > E4 chứ không phải trả về 0.
 
Web KT

Bài viết mới nhất

Back
Top Bottom