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件の返信