VBA22_グラフの欠測は空白にしよう

おはようございます! Benです。
今日はExccelのグラフを作るうえで大変苦労したことを紹介します。
20151204a.gif
これはがよく使う気温の推移を表したグラフですが、観測する機械の調子が思わしくないとしばしば欠測が出ます。そういう時、数字以外になっているとこのように値がないのにゼロになってしまいます。

20151204b.gif
そこで、値があるときはその値、無い時は空白としようとして、関数でセルに=IF(ISNUMBER(B5),B5,"")とか入力したとしましょう。これはIf関数で=If(条件式,合致した場合の値,不合致の場合の値)という文法です。Isnumberは数値として認識できるか、という判定をする関数です。VBAのIsnumericと同じです。これでもゼロになります。「何もない」という意味で文字列を囲うダブルクォーテーションを二つ並べましたが、もしかしたら長さ0の文字列データとして認識され、何もないとは別の扱いかもしれません。

20151204c.gif
ネットで調べますと、わざとN/Aエラーを出させて、グラフで認識させない方法もあるようです。これもやってみましたが、なぜか、補間とかしないモードにしているのに、Excel2010ではなぜか勝手に補間されてしまいます。

Sub 空白変換()
  Dim a As Range
  For Each a In Selection
    If IsNumeric(a.Value) = False Then a.Value = Empty
  Next
End Sub
じゃあ、これをVBAで解決できるか? 実はほんのちょっとですぐ解決できるのです。御覧のコードはセルを選択しているところで数値として認識でくないところはEmptyにしなさい。というものです。For Each (A) In (B)は(B)のコレクション(複数のオブジェクト)からオブジェクトを一つずつ順に(a)に格納して繰り返しなさいというもので繰り返し処理の一つです。この場合Selectionは選択しているセルの集合体で、その中から順に1セルずつ変数aに格納してNextまでの処理を繰り返します

20151204d.gif
作ったマクロを実行するボタンの設置方法です。開発タブから挿入、左上のボタンをクリックして設置したいところにドラッグします。

20151204e.gif
そのあと出てくるマクロの選択画面で自分が作ったSubプロシージャをクリックして紐づけます。

20151204f.gif
グラフの元データをドラッグして選択してから実行ボタンを押すと、数値以外(この場合欠測)は完全なEmptyとなります。関数も値も何も入っていないセルが、Excelが認める「空白セル」というものなのでしょう。見事にグラフは途切れて空白になっていますデータのない部分は表示してはならないとちもあるので、あえてグラフを途切れさせることも必要です。時と場合によって「つなげる」、「空白にする」、「ゼロにする」をうまく使い分けて効果的な資料を作りたいですね。今日のノートはここまでです

この記事へのコメント


この記事へのトラックバック