Powered By Blogger

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

2014年7月7日月曜日

印刷範囲をいくつかのパターンから選択したい

予定通りに、今回も同じく印刷範囲について。

事例:
複数の表が同じシートにあるが、訳ありで、どれかの表を印刷するときは、他の表は、一緒に印刷したくない。1回だけなら、手動で印刷範囲指定でもいいが、何度もとなると面倒くさい。それに印刷範囲を指定出来ない人に、印刷だけ頼む場合も。
やっぱり簡単に印刷範囲を切り替えられると便利。

解決策:
下のような2つの表がある場合を考えてみる。

  A B C D E F G
1

         
2
3 表1       表2    
4 AAA BBB CCC   EEE FFF GGG
5 1 1 1   1 1 1
6 2 2 2   2 2 2
7 3 3 3   3 3 3
8 4 4 4   4 4 4
9 5 5 5   5 5 5
10 6 6 6        
11 7 7 7        
12 8 8 8        
13 9 9 9        
14 10 10 10        
15              
これも名前の定義
Print_Area
でなんとかなるだろう。

1.表1のエリアと表2のエリアをそれぞれ名前を定義しておく。
2.表1の名前と表2の名前をセレクトできるように、入力規則にリストを設定したセルを配置する。
3.Print_Areaの参照範囲に、2でセレクトされている名前によって、1で定義した名前のどっちを使うか切り替えるような式を入力する。

というような感じだろう。

具体的には
1.表1と表2の名前の定義
 名前の定義で、
 表1・・・・名前:表1、参照範囲:$A$3:$C$13
 表2・・・・名前:表2、参照範囲:$E$3:$G$9
 とする。
2.印刷範囲選択用のセルを配置。
 適当なセルを選び、データの入力規則の設定で、
 入力値の種類:リスト
 ドロップダウン リストから選択する:チェック
 元の値:表1,表2
 とする。
3.名前の定義にPrint_Areaを設定。
 参照範囲の式としては、IF関数で切り替えるようにしよう。
 名前:Print_Area
 範囲:シート
 参照範囲:

  IF(Sheet1!$B$1="表1",Sheet1!表1,IF(Sheet1!$B$1="表2",Sheet1!表2,Sheet1))

 なお、$B$1は表選択用のセル。

 ちなみに、Sheet1などのシート名はエクセルが勝手につけてくれるようだ。
 ここでは、何も選択されていなかった場合にシート全体を印刷範囲とするために、入れ子の中のIF関数の偽の場合に必要なので、明示的につけある。
 ・・・・のはずだったが、ためしに省略してみたら、それでも印刷範囲は全体になった。

 結局こういうことだ。
  IF($B$1="表1",表1,IF($B$1="表2",表2,))
 と入力すると、エクセルが勝手に

  IF(Sheet1!$B$1="表1",Sheet1!表1,IF(Sheet1!$B$1="表2",Sheet1!表2,))

 とシート名をつけてくれる。

これで、$B$1セルでリストから表1か2を選択すれば、印刷する表を切り替えることができるようになる。なお、全体を印刷したい場合は、$B$1でDeleteキーを押してクリアすれば良い。

また、前回のようなOFFSET関数を組み合わせれば(表1、2の名前の定義の参照範囲にOFFSET関数を使うということ)、データ数によって表1、2それぞれの範囲を可変にすることもできるだろう。

さて、次回はどんな内容にしようか?

0 件のコメント:

コメントを投稿