Powered By Blogger

暇がない。自力じゃ無理な人はこちらへ。

2014年7月18日金曜日

図形をセルに入力されている値によって自動変更

事例:
ワードアートや図形のテキストをセルの内容によって自動変更する。
これは、数式バーに参照セルを指定してやればOK。
(ただし、ここで直接、数式を使っての文字列合成はできないようだ。あくまでも参照するセルを指定するということ。)

これは単純で解りやすいのだが、図形そのもの、例えば、○を△にするとか、というような変更するとなると・・・あれ?

解決策:
というわけで、今回は、リンクされた図形について。
これは、貼り付けオプションの1つで、コピー元のセルを”図形”として、リンクするという機能だ。

左の例では、D6、D7、D8にAAA・・・、BBB・・・、CCC・・・とそれぞれ入力されている状態で、D6:E8の範囲をコピー(Ctrl+C)、そして、D1:E3の範囲を選択して、貼り付け→その他の貼り付けオプション→リンクされた図形としている。

ちょっと解りずらいが、コピー元が図形としてコピー先にリンクされる。
ここで注意が必要なのは、あくまでも”範囲”が図形としてリンクされるというところ。左の例ではAAA・・・が選択範囲を越えているので、その部分がカットされた図形になっている。






そして、図形なので、こんな感じに色々とデザインできる。















更に、リンクなので、このように、元のセルが変更されると、それに連動して、図形の見た目も変わる。

左の例では、D8の内容をDDD・・・に変更して、さらにD6:E8の範囲にワードアートを新たに貼り付けた。すると、D1:E3の図形にもそれが反映されている。







と、いうような、非常に面白い機能だ。



具体例:
この機能と、名前の定義を使えば、今回の目的を達成できるだろう。
例として、
「セルの値を”右、上、左、下”のどれかを選択すると、それに応じた矢印を表示する」
というような機能を実装してみよう。

1.まず元になる矢印画像を用意して、どこか適当な場所に貼り付ける。
  このとき、実際に画像を表示したいセルと範囲の広さを合わせておく必要がある。
  その理由は前にも言ったように、あくまでも範囲が図形としてリンクされるため。
  今回はA1:A3に矢印画像を表示させる予定なので元の画像を3x1に収まるように調整しておく。















2.元画像を含むような範囲を選択して、この範囲に名前を付ける。
  A6:A8の範囲を選択して”右”という名前を定義する
  この名前は、後の手順7で矢印選択用リストの値として使う。




3.以下同様に、全部の元画像に名前を定義する。




4.元画像の範囲をコピー
 A6:A8の範囲をコピー(Ctrl+C)
















5.実際に画像を表示したい範囲を選択
  A1:A3を選択




6.リンクされた図形を貼り付け
 貼り付け→その他の貼り付けオプション→リンクされた図形



















そうすると、左のように、コピー元の範囲が図形としてリンクされて表示される。












7.選択リストの用意
 セルに直接でも良いが、今回はリストから選択できるようにする。
 下のように、B1に入力規則を適用
 (ここで、リストの値は先に元画像の範囲に付けた名前と同じにしておくこと。こうすることで、手順8で設定する参照範囲の式が簡単になる。)



































なお、入力規則を適用したあと、そのセルは、空欄ではなく、どれかを表示した状態にしておく。(空欄だと、このあとの手順9でエラーが起こるため)








8.表示する画像に名前を付ける。
 矢印という名前を新しく定義して、参照範囲を以下のような式にする。

     INDIRECT(矢印!$B$1)

この式の意味は、セルB1の値が示す参照を示す・・・
分かりにくいな。
要は、B1で選択されている文字列が示す範囲を返す。ということ。
例えば、B1が”右”となっていれば、”右”という文字列が示す、すなわち、”右”という名前の範囲(右という名前が定義されているので)を返すということ。
なお、この新しく定義した名前はまだ、どこにも適用されていない。手順9で使う。



















これを追加したあとの名前の管理ウィンドウはこうなる。











































9.リンクされた図形に名前を適用する。
 さて、いよいよ大詰め。
 リンクされた図形を選択して、数式バーに手順8で定義した名前を入力する。
 こうすると、この”矢印”という名前を遡っていくことにより、元画像のどれかに行き着き、その画像が表示されることになる。





















10.完成

















たまに使おうとするとやり方を忘れていたりするので、ちょっと長くなったが、詳細な手順を書いてみた。これでもう安心だ。

4 件のコメント:

  1. できませんでした…
    2016以降ではできないのでしょうか。

    返信削除
    返信
    1. 横から失礼します。
      僕の環境は Office Personal 2019 ver.2012 ですが、出来ましたよ。

      どこで詰まったのか判りませんが、僕が途中で詰まったところは次の通り。

      【1】手順6の貼り付けでオプションを間違えた
       右クリックメニューからだと「リンクされた図」は「形式を選択して貼り付け」の右側の▶の上で少し待機しないと出てきません。
       ホームタブの「貼り付け」からだと説明通りに出てきます。

      【2】手順8を省略しようとして失敗
       「矢印」の名前定義をせずに手順9で数式バーに「=INDIRECT(...」を直接書こうとしたけど構文エラー。
       面倒でも名前の定義を挟まないとダメみたいです(汗)

      手順通りに同じことをやって、どこでどうダメだったか報告すれば、もっとよい回答がもらえるかもしれません。

      蛇足ですが、手順10で完成した画像には元画像のセル範囲の罫線が含まれてしまいます。
      内側の罫線は、行の高さ・列の幅を大きくすれば消せます。
      外周の罫線は完成した画像の外側を少し「トリミング」すれば消せます。

      あ・・、今更気付きましたが元の投稿、1年前ですか(汗)
      まぁ、せっかく書いたので投稿させてもらいます。
      ありがとうございました。

      削除
  2. 参考にさせていただきました。
    一点行き詰ってしまったところが、8.の新しくIDIRECTを定義した「矢印」という名前と(恐らく)シート名が「矢印」という名前で同じだったために勘違いしました。

    8.のINDIRECT定義の名前を「矢印選択」とかにして、9.でリンクオブジェクトに名前を入力する際に「矢印選択」にすると分かりやすいかなと思いました。

    返信削除