minhnc
Nguyễn Công Minh
- Tham gia
- 13/1/07
- Bài viết
- 160
- Được thích
- 489
- Nghề nghiệp
- Lang thang
Option Explicit
'
'Tim Max theo dieu kien
Public Function DMax_GPE(Database As Range, Field As Long, Criteria) As Double
Dim i As Long
Dim SubData As Range
Set SubData = Range(Cells(Database.Row, Database.Column), Cells(Database.Rows.Count + Database.Row - 1, Database.Column))
DMax_GPE = WorksheetFunction.Index(Database, WorksheetFunction.Match(Criteria, SubData, 0), Field)
For i = 1 To Database.Rows.Count
If UCase(Database.Cells(i, 1)) = UCase(Criteria) And _
DMax_GPE < Database.Cells(i, Field) Then _
DMax_GPE = Database.Cells(i, Field)
Next i
End Function
'
'Tim Min theo dieu kien
Public Function DMin_GPE(Database As Range, Field As Long, Criteria) As Double
Dim i As Long
Dim SubData As Range
Set SubData = Range(Cells(Database.Row, Database.Column), Cells(Database.Rows.Count + Database.Row - 1, Database.Column))
DMin_GPE = WorksheetFunction.Index(Database, WorksheetFunction.Match(Criteria, SubData, 0), Field)
For i = 1 To Database.Rows.Count
If UCase(Database.Cells(i, 1)) = UCase(Criteria) _
And DMin_GPE > Database.Cells(i, Field) Then _
DMin_GPE = Database.Cells(i, Field)
Next i
End Function
Bạn tham khảo thử hàm mảng sau nha:Còn vấn đề nữa xin chỉ giáo.
Tìm được giá trị max cuả 1 mặt cắt nào đó rồi nhưng mặt cắt đó cũng có nhiều giá trị trùng với giá trị max đó, vấn đề là tôi muốn biết là có bao nhiêu giá trị của mặt cắt đó bằng giá trị với giá trị max vừa tìm
Option Explicit
[b]Function DDmax(CSDL As Range, Field As Range, Criteria As Range)[/b]
[color="Blue"]'=DMAX(A1:B13,B1,F1:F2)[/color]
Dim TMax, iJ As Integer, iDem As Integer
ReDim MDLieu(1 To 9, 1 To 2)
For iJ = 1 To 9
MDLieu(iJ, 1) = "": MDLieu(iJ, 2) = ""
Next iJ
TMax = WorksheetFunction.DMax(CSDL, Field, Criteria)
Application.ScreenUpdating = 0: iJ = 0
Do
iJ = 1 + iJ
If Len(CSDL.Cells(iJ, 1)) < 1 Then Exit Do
If CSDL.Cells(iJ, 2) = TMax Then
iDem = iDem + 1
MDLieu(iDem, 1) = CSDL.Cells(iJ, 1)
MDLieu(iDem, 2) = CSDL.Cells(iJ, 2)
End If
Loop
Application.ScreenUpdating = True
DDmax = MDLieu
[b]End Function[/b]
DIỄN ĐÀN GIẢI PHÁP EXCEL