未来の自分へ知識貯金

ゆーきのエンジニアブログ

約4分 Excel

【Excel】数値に連動した描画を行う方法

【Excel】数値に連動した描画を行う方法

Excel のセルに入れた数値に連動して、バーがニュッと伸び縮みする——そんな「見せる」シートを作りたくなったことはないでしょうか。ステータス表示やダッシュボード風のシートで、数値を打ち替えるだけで絵が変わってくれると、ぐっとそれらしくなります。

最終的にこんな表示が、VBA なし・グラフなし・Excel の標準機能だけで作れます。

使うのは「条件付き書式のデータバー」と「リンクされた図」の組み合わせです。この記事では作り方を順に紹介します。

なぜグラフやシェイプではないのか

最初に思いつくのは棒グラフですが、実際にやってみると Excel のグラフは回転できません。横向き・斜めに配置したデザインが作れないのです。次に「シェイプ(図形)の大きさを数値に連動させればいいのでは」と考えましたが、こちらは VBA を書かないと実現できません。

そこで行き着いたのがこの方法です。

  1. セルの中に条件付き書式のデータバーで「数値に連動するバー」を作る
  2. そのセルを「リンクされた図」として貼り付けて、自由に動かせる画像にする

リンクされた図は元のセルの表示と連動し続けるうえ、画像なので移動・拡大縮小・回転が自由です。この2つを組み合わせると「数値に連動する、どこにでも置ける絵」ができあがります。

手順1:データを用意する

まずはこんな感じで、項目と数値のデータを準備しました。

手順2:条件付き書式でデータバーを出す

値のセルを選択して、「条件付き書式 > データバー」を選びます。

とりあえずデータバーが出ました。

最小値・最大値を固定する(重要)

ただしこのままだと**「25」でもセルいっぱいまでバーが引かれてしまいます**。既定ではデータバーの最小値・最大値が「選択範囲の中での相対値」になるためです。数値の絶対値どおりにバーを伸ばしたいので、範囲を明示的に固定します。

セルを選択して「ルールの管理」をクリック。

「ルールの編集」をクリック。

種類を「数値」にして、最小値 0・最大値 100 に設定しました。

同じ要領で他のセルも設定していきます。私は「軸」は 0〜100、それ以外は 0〜1 の赤いバーにしてみました。

次の作業で図として切り出したときに見やすいよう、背景色も変えておきました(お好みで大丈夫です)。

手順3:「リンクされた図」として貼り付ける

ここがこの方法の肝です。数値のセルをコピーして——

好きな場所で右クリックし、貼り付けオプションから「リンクされた図」を選びます。

こんな感じで貼り付けられました。この図は元のセルの表示と連動するので——

元の数値を変えるとバーも一緒に動きます。しかも画像扱いなので、大きさを変えても回転させても連動は切れません。グラフではできなかった「斜め配置のバー」がこれで実現できます。

手順4:見た目をもうちょっと整える

このままだと何がどのバーか分からないので、少し工夫します。

(単純にやるなら、リンクされた図を作る際に名前のセルも一緒に選択すればそれっぽくなります)

まず元セルの文字色をグレーにしました。これでバーだけが目立ちます。

ラベルはセルの「メモ」を使って重ねることにしました。数値セルを選択して新しいメモを追加します。

メモをセルにピッタリ合わせます。Alt を押しながら図形を操作するとセルの枠に吸着するので、これを駆使すると位置合わせが楽です。あわせてメモを「常に表示」にしておきます。

メモの塗りつぶしと枠線を消して——

メモの中に好きな文字を入れて、フォントや配置を整えます。

他のバーも一通り設定して、完成です。

数値を打ち替えるだけで、この絵がそのまま連動して動きます。

(メモの右上に赤い角マークが出るのがちょっと微妙なので、こだわる場合はメモの代わりにテキストボックスを重ねる方がきれいに仕上がると思います)

まとめ

  • 数値に連動する描画は「条件付き書式のデータバー」×「リンクされた図」で、VBA なしで作れる
  • グラフは回転できないので、自由なレイアウトにはこの方法が向く
  • データバーは最小値・最大値を「数値」で固定するのを忘れずに(既定は相対値で、25 でも満杯になる)
  • 図形の位置合わせは Alt キーでセルに吸着させると楽
  • ラベルはメモよりテキストボックスの方が見た目はきれい

「Excel でここまでやるか」という小ネタですが、標準機能だけで済むので配布先の環境を選ばないのが地味な利点です。ダッシュボード風のシートを作りたくなったときにでも思い出してみてください。

この記事をシェアする

ゆーき
ゆーき

プログラマー経験10年以上。好きなプログラム言語はC#。使える言語はC++, Python他。好きな開発環境はVisual Studio。

プロフィールを見る →