エクセルマクロで、配列の最大値とインデックスを取得する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) = 10
MyList(1, 1) = 25
MyList(1, 2) = 100
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番号を取得して、
メッセージボックスに表示します。
最大値が複数ある場合も、すべてのインデックスを取得してメッセージボックスに表示します。
この記事がお役に立ちますと幸いです。
・【エクセルマクロ】配列処理を自動化する使用例まとめ
【エクセルマクロ】配列処理を自動化する:使用例16選
...
「Excel自動化[最強]時短仕事術」
自動化の基礎と時短に役立つテクニック解説書
毎日の定型業務を手際良く行え、大幅な業務効率化を実現!
リンク