パーツ化とは
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
注意点
- 二次元配列の一次元部分での最大値、最小値を取得する場合は一度切りだししましょう。
2次元配列の特定の列or行を 1次元配列に変換する【ExcelVBA】 - 動的配列、静的配列どちらも結果は同様です。
- もちろん昇順や降順に並べて一番最初の要素を取得する形でも取得可能です。
一次元配列を昇順並び替え(ソート)する【クイックソート】【ExcelVBA】
一次元配列の並びを反転させる(降順に並び替える)【ExcelVBA】
関連記事
配列の宣言(静的/動的/1次元/2次元)【ExcelVBA】
配列開始を1からスタートさせる【Option Base 1】【ExcelVBA】
配列(静的/動的)を別の配列にコピーする【ExcelVBA】
コメント