Excel VBAで最小値と最大値のセルを検索する:Min・Max・Find

指定した範囲内の最小値と最大値のあるセルを取得するVBAを掲載しています。




Homeに戻る > Excel セルのTipsへ

下記のExcel VBAコードでは最小値・最大値を探し、見つかったセル位置をFindで検索ししています。

最小値の取得はMinワークシート関数を使用しています。

最大値の取得はMaxワークシート関数を使用しています。

関数の引数は検索する範囲をrangeで指定します。

関連するTipsの「範囲内の最大値を取得する関数 : Excel」も参照してください。



最小値を求めるExcelシートコード

  1. コマンドボタンをクリックすると、最小値を求めるプロシージャーを呼び出します。
  2. 最小値が見つかればセル位置を、見つからなければ「Not Found」をコマンドボタンに表示します。
コマンドボタンクリックイベント
Private Sub CommandButton1_Click()
    Dim sr As String
    
    If FindMin(sr) Then
        CommandButton1.Caption = "Find Min Cell: " & sr
    Else
        CommandButton1.Caption = "Not Found"
    End If
End Sub

  1. Rangeオブジェクトに検索範囲をセットします。
  2. WorksheetFunctionを使い、ワークシート関数のMinで最小値を取得します。
  3. 見付かればセル位置を返します。
'指定範囲から最小値を検索
Private Function FindMin(ByRef srow As String) As Boolean
    Dim ans As Long
    Dim tRange As Range
    
    FindMin = False
    '最小値を捜す
    Set tRange = ActiveSheet.Range("D5:D100")
    ans = Application.WorksheetFunction.Min(tRange)
    
    '最小値のセルを取得
    Set tRange = tRange.Find(What:=ans, LookIn:=xlValues, LookAt:=xlWhole)
    If Not tRange Is Nothing Then
        srow = tRange.Address
        FindMin = True
    End If
End Function

最大値を求めるExcelシートコード

  1. コマンドボタンをクリックすると、最大値を求めるプロシージャーを呼び出します。
  2. 最大値が見つかればセル位置を、見つからなければ「Not Found」をコマンドボタンに表示します。
コマンドボタンクリックイベント
Private Sub CommandButton2_Click()
    Dim sr As String
    
    If FindMax(sr) Then
        CommandButton2.Caption = "Find Max Cell: " & sr
    Else
        CommandButton2.Caption = "Not Found"
    End If
End Sub

  1. Rangeオブジェクトに検索範囲をセットします。
  2. WorksheetFunctionを使い、ワークシート関数のMaxで最大値を取得します。
  3. 見付かればセル位置を返します。
'指定範囲から最大値を検索
Private Function FindMax(ByRef srow As String) As Boolean
    Dim ans As Long
    Dim tRange As Range
    
    FindMax = False
    '最大値を捜す
    Set tRange = ActiveSheet.Range("D5:D100")
    ans = Application.WorksheetFunction.Max(tRange)
    
    '最大値のセルを取得
    Set tRange = tRange.Find(What:=ans, LookIn:=xlValues, LookAt:=xlWhole)
    If Not tRange Is Nothing Then
        srow = tRange.Address
        FindMax = True
    End If
End Function


Excel実行画面

・見つかった場合

D5:D100のセル範囲から検索し、最小値のセルはD7、最大値のセルはD8が取得できました。

見つかった場合

・見つからなかった場合

D5:D100のセル範囲から最小値と最大値を検索しましたが、数値がないので見つかりませんでした。

見つからなかった場合

Homeに戻る > Excel セルのTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved