95627


エクセルで次のような表がシートにあったとします。

グループ |  値  
---|---  
A | 3  
A | 4  
A | 5  
B | 4  
B | 7  
B | 8  
  
この時、SQLで言う所の

[code]

    select MIN(値) 
    from table
    where グループ='A'
    
[/code]

のようなことをエクセルVBAでやりたいのですが、どのようなコードを組めばよいでしょうか？  
よろしくお願いします。


CC BY-SA 4.0
2023-07-14T03:51:08.603
95605
2023-07-15T02:50:31.103
2023-07-14T04:18:40.893
3060
18637
question
vba excel
エクセルVBAで条件を満たすもののうち最小のものを取得する


Officeのバージョンが365または2019なら、MinIfs関数を使えばいいでしょう。

その表がA1から始まっているとして、

[code]

    Public Sub Sample()
        Dim tbl As Range
        Set tbl = Cells(1).CurrentRegion
        
        Dim minValue
        minValue = WorksheetFunction.MinIfs(tbl.Columns(2), tbl.Columns(1), "A")
        MsgBox "グループAの最小値: " & minValue
    End Sub
    
[/code]

MinIfs関数が使えないバージョンならループで最小値を取得するといいでしょう。

[code]

    Public Sub Sample2()
        Dim tbl As Range
        Set tbl = Cells(1).CurrentRegion
        
        Dim minValue, R As Range
        For Each R In tbl.Rows
            If R.Cells(1) = "A" Then
                If R.Cells(2) < minValue Or IsEmpty(minValue) Then
                    minValue = R.Cells(2)
                End If
            End If
        Next
        MsgBox "グループAの最小値: " & minValue
    End Sub
    
[/code]


CC BY-SA 4.0
2023-07-15T02:50:31.103
95627
2023-07-15T02:50:31.103
42240
95605
answer