【エクセルマクロ】配列の最大値とインデックスを取得:コピペで使えるコード

vba-配列の最大値とインデックスを取得-アイキャッチ ExcelVBA

エクセルマクロで、配列の最大値とインデックスを取得するVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
ぜひお試しください!

配列の最大値とインデックスを取得(一次元配列)

以下のExcelVBAを実行すると、配列の要素から最大値とindexを取得します。


Sub 配列の最大値とインデックス取得()

Dim MyList() As Variant
Dim i As Long
Dim Max As Long
Dim Max_index As String

    '配列に数値を格納
    MyList = Array(5, 100, 15, 20, 25, 100, 70, 100, 5)
    
    '配列から最大値を取得
    Max = Application.WorksheetFunction.Max(MyList)
    
    '配列をループ
    For i = 0 To UBound(MyList)

        '配列と最大値が一致したら
        If MyList(i) = Max Then

            'インデックス番号を取得
            Max_index = Max_index & i & ","

        End If
    Next i
    
    'メッセージボックス表示
    MsgBox "最大値:" & Max & vbCrLf & _
        "インデックス:" & Left(Max_index, Len(Max_index) - 1)

End Sub

 

マクロ実行後

1次元配列 [MyList] をループして、最大値を 変数 [Max] に格納します。

最大値のインデックス番号を [Max_index] に格納します。

最大値が複数ある場合も、すべてのインデックスを取得して表示します。


 
 

配列の最大値とインデックスを取得(二次元配列)

以下のExcelVBAを実行すると、配列の要素から最大値とインデックスを取得します。


Sub 配列の最大値とインデックス取得()

Dim MyList() As Variant
Dim i As Long
Dim j As Long
Dim Max As Long
Dim Max_index As String

    ReDim Preserve MyList(2, 2)

    '配列に要素を格納
    MyList(0, 0) = 100
    MyList(0, 1) = 10
    MyList(0, 2) = 15

    MyList(1, 0) = 100
    MyList(1, 1) = 25
    MyList(1, 2) = 30

    MyList(2, 0) = 35
    MyList(2, 1) = 100
    MyList(2, 2) = 45
    
    '配列から最大値を取得
    Max = Application.WorksheetFunction.Max(MyList)
    
    '配列をループ
    For i = 0 To UBound(MyList, 1)
        For j = 0 To UBound(MyList, 2)
    
            '配列と最大値が一致したら
            If MyList(i, j) = Max Then
    
                'インデックス番号を取得
                Max_index = Max_index & "(" & i & "," & j & "),"
    
            End If
        Next
    Next
    
    'メッセージボックス表示
    MsgBox "最大値:" & Max & vbCrLf & _
        "インデックス:" & Left(Max_index, Len(Max_index) - 1)

End Sub

 

マクロ実行後

2次元配列 [MyList] から、最大値とindex番号を取得して、

メッセージボックスに表示します。


 
 
この記事がお役に立てれば幸いです。
 

【エクセルマクロ】名前を付けて保存処理を自動化:超便利8選
...

 

「Excel自動化[最強]時短仕事術」
自動化の基礎と時短に役立つテクニック解説書
毎日の定型業務を手際良く行え、大幅な業務効率化を実現!