Tìm giá trị lớn nhất của bảng thỏa mãn nhiều điều kiện. (1 người xem)

Liên hệ QC

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

dinhdaokt

Thành viên mới
Tham gia
11/9/09
Bài viết
7
Được thích
0
Thân gửi các anh chị trên GPE.
Em mới chập chững đến với VBA nên chưa biết viết thế nào. Em gửi các anh chị file trong đó có ví dụ và các câu hỏi của em. Chả là em muốn tìm trong bảng tiền thưởng cuối tháng, số tiền lớn nhất của người có tên A, số tuổi 22 nhận được là bao nhiêu? Vì đây chỉ là ví dụ để dễ hình dung, còn thực tế còn nhiều vấn đề phát sinh nên trước mắt em muốn nhờ các anh chị giải đáp dùm em khúc mắc đầu tiên này để em dần hoàn thiện được đề án và khả năng lập trình của mình.
Cảm ơn anh chị rất nhiều.
 

File đính kèm

Thân gửi các anh chị trên GPE.
Em mới chập chững đến với VBA nên chưa biết viết thế nào. Em gửi các anh chị file trong đó có ví dụ và các câu hỏi của em. Chả là em muốn tìm trong bảng tiền thưởng cuối tháng, số tiền lớn nhất của người có tên A, số tuổi 22 nhận được là bao nhiêu? Vì đây chỉ là ví dụ để dễ hình dung, còn thực tế còn nhiều vấn đề phát sinh nên trước mắt em muốn nhờ các anh chị giải đáp dùm em khúc mắc đầu tiên này để em dần hoàn thiện được đề án và khả năng lập trình của mình.
Cảm ơn anh chị rất nhiều.
Nếu viết theo ý bạn, đại khái code là thế này
Phương án 1:
Mã:
Public Function PhuongAn1(Bang, Ten, Tuoi) As Double
    Dim I As Long, iMax As Double
        For I = 1 To Bang.Rows.Count
            If Bang(I, 1) = Ten Then
                If Bang(I, 2) = Tuoi Then
                    iMax = IIf(Bang(I, 3) > iMax, Bang(I, 3), iMax)
                End If
            End If
        Next I
    PhuongAn1 = iMax
End Function
Phương án 2:
Mã:
Public Function PhuongAn2(Bang, Ten, Tuoi) As Double
    Dim I As Long, Tam As Variant, K As Long
    ReDim Tam(1 To Bang.Rows.Count, 1 To 1)
        For I = 1 To Bang.Rows.Count
            If Bang(I, 1) = Ten Then
                If Bang(I, 2) = Tuoi Then
                    K = K + 1
                    Tam(K, 1) = Bang(I, 3)
                End If
            End If
        Next I
    PhuongAn2 = Application.WorksheetFunction.Max(Tam)
End Function
Thân
 

File đính kèm

Upvote 0
Cảm ơn anh rất nhiều nhiều... Cả 2 phương án đều chuẩn mà ko phải chỉnh gì cả. Một lần nữa cảm ơn anh rất nhiều. Em về cố gắng học tập cho bằng anh bằng em mới được.@$@!^%
 
Upvote 0
Nếu viết theo ý bạn, đại khái code là thế này
Phương án 1:
Mã:
Public Function PhuongAn1(Bang, Ten, Tuoi) As Double
    Dim I As Long, iMax As Double
        For I = 1 To Bang.Rows.Count
            If Bang(I, 1) = Ten Then
                If Bang(I, 2) = Tuoi Then
                  [COLOR=#ff0000]  iMax = IIf(Bang(I, 3) > iMax, Bang(I, 3), iMax)[/COLOR]
                End If
            End If
        Next I
    PhuongAn1 = iMax
End Function
Phương án 2:
Mã:
Public Function PhuongAn2(Bang, Ten, Tuoi) As Double
    Dim I As Long, Tam As Variant, K As Long
    ReDim Tam(1 To Bang.Rows.Count, 1 To 1)
        For I = 1 To Bang.Rows.Count
            If Bang(I, 1) = Ten Then
                If Bang(I, 2) = Tuoi Then
                    K = K + 1
                    Tam(K, 1) = Bang(I, 3)
                End If
            End If
        Next I
    PhuongAn2 = Application.WorksheetFunction.Max(Tam)
End Function
Thân

Các anh chị ơi, dòng chữ em đánh dấu đỏ cú pháp nó em ko hiểu lắm. Em nghĩ cú pháp của VB chỉ có If....then thôi chứ. Còn thể hiện như trên giống hàm Excel If( dk, bt nếu đúng, bt nếu sai). Mà sao lại có biến i ( iMax = IIf(Bang(I, 3) > iMax, Bang(I, 3), iMax))ở trước vậy? Hàm này có thể tìm hiểu ở đâu? Các anh chị chỉ bảo em với ạ.
 
Upvote 0
Các anh chị ơi, dòng chữ em đánh dấu đỏ cú pháp nó em ko hiểu lắm. Em nghĩ cú pháp của VB chỉ có If....then thôi chứ. Còn thể hiện như trên giống hàm Excel If( dk, bt nếu đúng, bt nếu sai). Mà sao lại có biến i ( iMax = IIf(Bang(I, 3) > iMax, Bang(I, 3), iMax))ở trước vậy? Hàm này có thể tìm hiểu ở đâu? Các anh chị chỉ bảo em với ạ.
Mở cửa sổ VBA ==> phang vào chữ "iif" ==> bôi đen chữ ấy ==> bấm F1 ==> đọc
Nếu....hổng hiểu ==> hỏi tiếp
Thân
 
Upvote 0

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

Back
Top Bottom