Tương tự như hàm MAXIF()

Sa DQ

Thành viên năng động
Tham gia
17/6/14
Bài viết
76
Điểm tích cực
16
Điểm thành tích
8
Mình có CSDL được trích dẫn như bảng dưới đây

PHP:
        Strip|  X  | Mom_Left | . . . 
         170 | 70  |123.456   |
         170 | 77  |652.123   |
         170 | 78  |752.569   |
         170 | 73  |193.456   |
         170 | 79  |452.123   |
         170 | 73  |702.569   |
         180 | 70  |120.456   |
         180 | 77  |652.123   |
         180 | 80  |752.069   |
         180 | 39  |103.456   |
         180 | 90  |452.123   |
         180 | 38  |702.569   |

Nhiệm vụ đề ra là tìm giá trị lớn nhất của cột Mom_Left ứng với mỗi giá trị trong cột Strip & trong 1 khoảng giới hạn nào đó của x,
như 60< x <78

Hàm người dùng có nội dung như sau:

PHP:
Option Explicit

Function FindMAXInt(CSDL As Range, sTrip, Min_ As Double, Max_ As Double, Optional Col As Byte = 5)
 Dim tMax As Double, Rws As Long, J As Long
 Dim Rng As Range, sRng As Range
 
 Rws = CSDL.Rows.Count + 9
 Set Rng = CSDL(1).Resize(Rws)
 Set sRng = Rng.Find(sTrip, , xlFormulas, xlWhole)
 If sRng Is Nothing Then
    FindMAXInt = "Nothing":             Exit Function
 Else
    Set Rng = sRng.Resize(Rws - sRng.Row)
    ReDim Arr(1 To Rng.Rows.Count, 1 To 5)
    Arr() = Rng.Resize(, 5).Value
    For J = 1 To Rws
        If Arr(J, 1) <> sTrip Then Exit For
        If Arr(J, 4) > Min_ And Arr(J, 4) < Max_ Then
            If Arr(J, 5) > tMax Then tMax = Arr(J, 5)
'            If J Mod 9 = 8 Then MsgBox Arr(J, 4)'
        End If
    Next J
 End If
 FindMAXInt = tMax
End Function

Xin các bạn xem file sẽ rõ hơn.
 

File đính kèm

Back
Top