Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » 値が最大のデータ要素をVBAで選択する

値が最大のデータ要素をVBAで選択する

動作検証バージョン: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

  Dim max_val As Double
  max_val = WorksheetFunction.Max(arr_val)

  Dim idx As Long
  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プロパティを使って、

Excel.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メソッドの引数に、

Excel.Series.Pointsメソッド

先ほどのFor~Next文を終了したときのカウンター変数を指定することで、最大値を持つデータ要素を表すPointオブジェクトを取得して、PointオブジェクトのSelectメソッドで

Excel.Point.Selectメソッド

選択しています。

 .Points(idx).Select

最終更新日時:2022-07-15 16:36

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » 値が最大のデータ要素をVBAで選択する

「グラフ・Chart」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.