配列(一次元/二次元)

配列内の要素の最大値・最小値を取得する【MAX/MIN関数応用】【ExcelVBA】

パーツ化とは

ExcelVBAマクロ初級者からの脱却が、処理のパーツ化(プロシージャの分割)と考えています。
マクロを作る上で基本機能をパーツ化する事で、開発時間の削減に繋がります。
処理はパーツ単位で分ける事を心掛けましょう。

分かりやすく説明すると、エクセルの「関数」と同様です。
SUM関数であれば セル内に「=SUM(1+2+3)」と記載すれば、セルには「6」と表示されますよね。
値を渡せば正しい値で返ってくる動きです。

このコードをコピペでOK

配列内の要素の最大値、最小値はWorksheet関数のMAX関数、MIN関数を使用します。
これを使用しないとループする必要性が出てくるので、簡略化可能な旨理解しましょう。

'配列内の最大値、最小値を取得する(NOT要素の最大数/最小数)
Public Sub array_max_min()
    '■一次元配列の場合
    Dim arr(1 To 3) As Variant
    
    arr(1) = 5
    arr(2) = 1
    arr(3) = 10
    
    
    Debug.Print Application.WorksheetFunction.Max(arr)  '10
    Debug.Print Application.WorksheetFunction.Min(arr)  '1
    
    '■二次元元配列の場合
    Dim arr2D(1 To 2, 1 To 3) As Variant
    
    arr2D(1, 1) = 10
    arr2D(1, 2) = 20
    arr2D(1, 3) = 30
    arr2D(2, 1) = 40
    arr2D(2, 2) = 50
    arr2D(2, 3) = 60
    
    
    '■1次元目と2次元目の中での最大値、最小値を取得する
    Debug.Print Application.WorksheetFunction.Max(arr2D) '60
    Debug.Print Application.WorksheetFunction.Min(arr2D) '10
    

End Sub

注意点

関連記事

配列の宣言(静的/動的/1次元/2次元)【ExcelVBA】
配列開始を1からスタートさせる【Option Base 1】【ExcelVBA】
配列(静的/動的)を別の配列にコピーする【ExcelVBA】

コメント

タイトルとURLをコピーしました