動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2112 ビルド14729.20260 Microsoft Store)
「VBA 系列の最大値 選択 SeriesCollection(1).Points」
という検索キーワードでアクセスがありました。
グラフのデータ系列の中で、値が最大のデータ要素をExcel VBAで選択するには、どのようなコードを書けばいいのかを探していらしたのでしょうか。
値が最大のデータ要素を選択するサンプルマクロ
グラフがアクティブな状態で以下のSubプロシージャを実行すると、1つ目のデータ系列の中で、値が最大のデータ要素が選択されます。
Sub 値が最大のデータ要素を選択する()
With ActiveChart.SeriesCollection(1)
Dim arr_val As Variant
arr_val = .Values
For idx = 1 To UBound(arr_val)
If arr_val(idx) = max_val Then Exit For
Next
.Points(idx).Select
End With
End Sub
With ActiveChart.SeriesCollection(1)
Dim arr_val As Variant
arr_val = .Values
Dim max_val As Double
max_val = WorksheetFunction.Max(arr_val)
For idx = 1 To UBound(arr_val)
If arr_val(idx) = max_val Then Exit For
Next
.Points(idx).Select
End With
End Sub
サンプルマクロで行っている処理
まず、系列を表すSeriesオブジェクトのValuesプロパティを使って、
系列値を要素として含む配列を作成します。
With ActiveChart.SeriesCollection(1) Dim arr_val As Variant arr_val = .Values
次に、その配列の中で最大の値を、ワークシート関数のMAX関数で取得します。
Dim max_val As Double max_val = WorksheetFunction.Max(arr_val)
つづいて、系列値の格納されている配列に対してFor~Nextループを回し、最大値がみつかったらFor~Next文を抜けます。
Dim idx As Long For idx = 1 To UBound(arr_val) If arr_val(idx) = max_val Then Exit For
最後に、Seriesオブジェクトに用意されているPointsメソッドの引数に、
先ほどのFor~Next文を終了したときのカウンター変数を指定することで、最大値を持つデータ要素を表すPointオブジェクトを取得して、PointオブジェクトのSelectメソッドで
選択しています。
.Points(idx).Select
最終更新日時:2022-07-15 16:36
[スポンサードリンク]
Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » 値が最大のデータ要素をVBAで選択する