EXCEL VBA で複数の散布図を敷き詰めて並べる

 EXCEL で散布図を描く際,ワークシートに複数,かつ同じ書式で並べて描きたいということがある.ダッシュボードのようなものを想像すると分かりやすい.

 ループ内で位置を指定することになるが,重要なのは Left プロパティと Top プロパティになる.今回はそこを備忘録がてら公開する.

都道府県は47ある

 縦長に敷き詰める場合だと横 6 個,縦 8 個に並べると収まりが良いと思われる.左上から右へ,一段下がってまた右へ,という順で並べるのが妥当と思われる.EXCEL の Left プロパティと Top プロパティが左上を基準にしているためである.

剰余と商が鍵

 ループカウンタは 1 から 47 まで.横に 6 個並べるのだから 6 で除した剰余と商が鍵になりそうな気がする.

 ループカウンタが 1 増えると剰余は 1 増えるので Left プロパティに関係しそうだ.ループカウンタが 6 増えると商が 1 増えるので,Top プロパティに関係しそうだ.

 …というところまで頭の中だけで思いつく人なら,いきなりコードを書き始めることができるだろうが,俺は一旦紙に書き出さないと思いつかなかった.

ロジックの中心

For i = 1 To 47
    Debug.Print i, (i - 1) Mod 6, (i - 1) \ 6
Next i

 上記コードがロジックの中心である.イミディエイトウィンドウに結果を書き出してみると良い.

サンプルコード

 実際のコードは下記のようになる.一辺 150 ポイントの正方形の散布図をワークシートの左上から 47 個敷き詰めるコードである.

With Worksheets.Add
For i = 1 To 47
    Set myCht = .Shapes.AddChart2(Style:=247, _
                            XlChartType:=xlXYScatter, _
                                   Left:=150 * ((i - 1) Mod 6), _
                                    Top:=150 * ((i - 1) \ 6), _
                                  Width:=150, _
                                 Height:=150).Chart
Next i
End With

 具体的なデータ系列や書式の指定はこの大枠の中で行うことになる.最も重要なロジックの骨格をまずは理解しておきたい.

“EXCEL VBA で複数の散布図を敷き詰めて並べる” への1件の返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください