[[20100329144036]] 『フィルタをかけた印刷』(とももかもも) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『フィルタをかけた印刷』(とももかもも)
 こんにちは。お分かりになれば教えてください。

 下記のような表があります。全て罫線付→田(罫線)
  No. 店番   品名   個   価格  通しNo.
 1  12345  タンス   2    5000   A-1
 2  67890  ベッド   1   10000    C-2
 3  12345  ボックス  3    2000   A-2
 4  12345  ラック   4    3000   V-5
 5  34567  ハンガー 10     500   H-4 
 続く・・・ 

 「店番」でフィルタをかけようと思います。
 A4サイズの用紙に印刷をしたいのですが、現在1頁に50行印刷出来るようにしています。
 フィルタで選択された数が30行分だとして、印刷時に残り20行分ブランクで罫線のみの
 表を印刷するように出来ますか?(毎回50行の表が表示されるように)
 今の状態だとフィルタで選ばれた部分のみの表になってしまいます。
 入力が無かったとしても何も記載されてないセルも表示させたいと思います。

 こういうことは出来るのでしょうか?教えて頂ければ助かります。

 50行印刷のフォーマットを別のシートに作って、
 フィルタリングしたデータをコピペするのが
 一番簡単な方法と思います。
 作業列を使えば、コピペしなくても数式でリンク可能です。
 データのシートと印刷するシートを別にするという発想ですね。
 
(純丸)(o^-')b

 純丸様、コメントどうもありがとうございます。
 印刷ページを別シートにして作ってみようと思いますが、
 フィルタリングしたデータのコピペではなく、
  「作業シートでフィルタリング→印刷ページに表示」というような事は出来ますか?
 フィルタしたデータを別シートに表示させる関数とかがあるんですか?
 不勉強ですいませんm(__)m 宜しければ教えてください。(とももかもも)

 >フィルタしたデータを別シートに表示させる関数
ダイレクトにそういうことができる関数はありません。
「店番」をセルに入力したら、その店番のデータを検索してくる、
というつくりではいかがでしょう。
元のリストがSheet1、印刷用がSheet2として、Sheet2のレイアウトは以下。
	A	B	C	D	E	F
[1]	No.	店番	品名	個	価格	通しNo.
[2]	1	12345	タンス	2	5000	A-1
[3]	3	12345	ボックス	3	2000	A-2
[4]	4	12345	ラック	4	3000	V-5
[5]						
[6]						
[7]						
この時、B2に店番を入力するとします。
A2に次の数式。
=IF(COUNTIF(Sheet1!$B$2:$B$6,$B$2)<ROW($A1),"",INDEX(Sheet1!A$2:A$6,SMALL(INDEX((Sheet1!$B$2:$B$6<>$B$2)*9^9+ROW($A$1:$A$5),),ROW($A1))))
 
これをB2以外のセルにコピー貼り付けします。
 
【関連ログ】
[[20100120171452]] 『エクセルで顧客の未納者一覧を作成したい』(ぶる)
 
(みやほりん)(-_∂)b

 みやほりん様
 色々教えて頂きどうもありがとうございます。
 やってみます!!(とももかもも)

 データシートに作業列を使い、フィルタリングしたデータを
 反映させる方法です。

 下記のような配置として、

     A     B         C        D        E        F         G  ←G列を作業列
 1   No. 店番   品名   個    価格  通しNo.    
 2   1  12345  タンス   2    5000   A-1       =SUBTOTAL(3,B$1:B2)
 3   2  67890  ベッド   1   10000    C-2
 4   3  12345  ボックス  3    2000   A-2
 5   4  12345  ラック   4    3000   V-5
 6   5  34567  ハンガー 10     500   H-4 

 G2セルに =SUBTOTAL(3,B$2:B2) と入力して下方向にコピーします。
 すると、上から順に 1,2,3・・ となります。フィルタリングしても
 1,2,3・・となるはずです。

 これを利用して、印刷シートにデータを表示させます。
 印刷シートがデータシートと同じレイアウトだとして、
 印刷シートの A2セルに
 =IF(ROW(A2)>MAX(Sheet1!$G$2:$G$6),"",INDEX(Sheet1!A$1:A$6,MATCH(ROW(A2),Sheet1!$G$1:$G$6,FALSE)))
 (データシートをSHeet1としています)

 まずは、少ないデータでお試し下さい。
 
(純丸)(o^-')b ※遅くなった(^^;

 オートフィルタを使い、かつ、50行だけ罫線を引く方法です。
 どこか(例えばA列)に1を入力した列を作り非表示にする。
 条件付き書式で、=SUBTOTAL(9,$A$1:$A1)<51 のときに罫線を引けば、常に50行だけ引けます。
 1を入力した列を非表示にしないと、2ページ目に白紙が印刷されてしまう場合があるので注意。
 また、1を入力する列は本来の「表」から離さないと、1が入っているところ最下部までを「オート
 フィルタ」の範囲としてしまうことがあるので注意。
 頑張ってください。
 2010/03/30 12:30 (ちゅうねん)

 >皆様
 色々教えていただきありがとうございます。
 期末のゴタゴタでお礼遅くなりました。これから全部試してみます!!
 また良い方法があれば教えてください。(とももかもも)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.