[[20091129001100]] 『印刷の方法を教えてください』(aoyama) ページの最後に飛ぶ

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

 

『印刷の方法を教えてください』(aoyama)

 A1A2・B1-D1がセルの結合がしてあり項目が入れてあります
 B2,C2,D2にも項目が入っています。
 ここに、約5000件のデータがあるのですが、印刷をしなくてはならなくなりました
 これを印刷するととても見づらいので、何件でもいいのですが例えば40件になったら
 横に(改行というのでしょうか)いき、横にいっぱいになるようにして、
 横がいっぱいになったら次のページにいき、また横に・・・というように、
 用紙を無駄なくでも見やすいように印刷したいのです。
 何かいい方法があるでしょうか?
 できたら項目は全てに入れたいです
 excel2003,Xp,です


 答えにはなっていないですが
http://www.wanichan.com/pc/excel/2000/excel15.htm#e
 項目を入れる設定 ↑ (行のタイトルを指定で良さそうです)だけですが 参考になるかな?
 (hs)

 ありがとうございます
 この項目を入れる設定は分かるのですが このまま設定すると表のA〜Dまでを
 一列としてみると一列が細長く、用紙の横は隙間が多いのに枚数が膨大です。
 なので、表の40行(用紙の縦ぎりぎりの行)までになったら、列の右に表示する
 というようにして、横の空白部分も使って、なるべく用紙を節約したいのです。

 A1 B1 C1 D1 A41 B41 c41 D41  A81 B81 C81 D81  A121 B121 C121 D121 
 A2 B2 C2 D2  A42 B42 C42 D42  A82 B82 C82 D82  A122 B122 C122 D122
 A3 B2 C2 D2  A43 B43 C43 D43  A83 B83 C83 D83  A123 B123 C123 C123
 ・
 ・
 イメージとしてはこのような感じで(タイトルはそれぞれにいれたいのですが)
 用紙がいっぱいになったら次の用紙に・・という印刷がしたいです。
 (aoyama)


 縦長のレイアウトなので、ワードの段組み印刷のようにしたいということかな?
[[20070408093733]] 『細く長いデータを詰めて印刷するには』(まみむ)
[[20070718095001]] 『件数を数える』(のの2)
[[20040107091212]] 『Excelで段組印刷は?』(kerokerokeroppi)
[[20040626124302]] 『印刷を左右にまとめて1ページに設定したい』(キリキ)
[[20050117163738]] 『エクセルのシート4枚を1枚の用紙に印刷』(若葉のあん)
 
私なら迷わず、印刷用のシートを別に作ります。
一時的な印刷なら、段組み設定したワード文書に縦長の範囲を貼り付けるのが
最もお手軽です。
(みやほりん)


 みやほりん様
 ありがとうございます。 最初にリンクされているものがイメージにぴったりです。

 ここで、追加の質問をしてもいいのでしょうか?
 この式の 
 OFFSET(Sheet3!$A$1,MOD(ROW()-1,50)+(ROUNDUP(COLUMN()/4,0)-1)*50,MOD(COLUMN()-1,4))
 を説明するとどういった意味のものでしょうか?
 こういう印刷は今後でてきそうなので、応用できるように式を理解したいと思っています。

 (aoyama)

 OFFSET関数に付いては調べてみましたか?

 その式をどの行に入れるのか分からないですが。。。
 A1セルなら ROW() とか COLUMN() の中を「A1」にして
 例えば「MOD(COLUMN()-1,4)」の部分なら
 A1セルに =COLUMN(A1)
 A2セルに =A1-1
 A3セルに =MOD(A2,4)
 として、横方向にフィルドラッグしてみるとか

 「MOD(ROW()-1,50)」の部分なら
 それぞれ分解して入力したら
 下方向へフィルドラッグですね。
  (横方向へフィルドラッグしても、値は変わりませんので。)

 他の部分に関しても 自分で分かるところまで分解して
 それぞれセルにいれて、戻り値を確認してみられると
 何か分かるかも知れません。

 (HANA)

HANA様
 コメントありがとうございます
 それぞれの関数についてみてはみたのですが
 「切り上げ」「余りを求める」とか 式の中の 掛け算、割り算、足し算等も
 なぜこの中に計算式があるのかな?といったおそらく初歩以前の疑問なのだと思います。
 書いてもらったように一度分解して確認してみます

 (aoyama)


 難しいですね。。。
 小さい表で考えてみると、どうでしょう。
 A1:B12のデータを、D1:I5の様に5行ずつにする場合
	[A]	[B]	[C]	[D]	[E]	[F]	[G]	[H]	[I]
[1]	い	¢		い	¢	へ	*	る	○
[2]	ろ	£		ろ	£	と	@	を	●
[3]	は	%		は	%	ち	§		
[4]	に	#		に	#	り	☆		
[5]	ほ	&		ほ	&	ぬ	★		
[6]	へ	*							
[7]	と	@		↓A1を基準にした時、OFFSETする 行,列					
[8]	ち	§		 0 , 0	 0 , 1	 5 , 0	 5 , 1	10 , 0	10 , 1
[9]	り	☆		 1 , 0	 1 , 1	 6 , 0	 6 , 1	11 , 0	11 , 1
[10]	ぬ	★		 2 , 0	 2 , 1	 7 , 0	 7 , 1		
[11]	る	○		 3 , 0	 3 , 1	 8 , 0	 8 , 1		
[12]	を	●		 4 , 0	 4 , 1	 9 , 0	 9 , 1		

 D1セルには =OFFSET($A$1,行,列)の様な式を入れてコピーしますが
 この 行,列 の部分だけを、D8:I12に取りだしてみました。

 まず、行(,より前)だけを考えると
 1セット目(1,2列目)は、0,1,2,3,4
 2セット目(3,4列目)は、5+ 0,1,2,3,4 ←0,1・・それぞれに 5を足す と読んでください。
 3セット目(5.6列目)は、10+ 0,1,・・・←0,1・・それぞれに10を足す と読んでください。
 ですから、○セット と言う単位で考えると
 ◆(○-1)*5+ROW(A1)-1
 で表せます。
 1セット目の1行目なら (1-1)*5+1-1 = 0
 2セット目の1行目なら (2-1)*5+1-1 = 5

 そして、この ○セットを求めるのに
 ▲ROUNDUP(COLUMN(A1)/2,0)
 と言った式を使います。

 1列目なら 1/2 = 0.5 を切り上げて 1
 2列目なら 2/2 = 1   の切り上げで 1
 3列目なら 3/2 = 1.5 の切り上げで 2
 :
 って感じで ○セット が得られます。

 ですから、◆の該当部分に▲を入れると・・・・
 ◆(ROUNDUP(COLUMN(A1)/2,0)-1)*5+ROW(A1)-1

 >MOD(ROW()-1,50)+(ROUNDUP(COLUMN()/4,0)-1)*50
 この式に近づいてきましたね!!
 (前後が逆になっていますが。。。)

 前後を入れ替えると
 ◆ROW(A1)-1+(ROUNDUP(COLUMN(A1)/2,0)-1)*5
   ~~~~~~~~~ここで MOD(・・・)をやっているか居ないかの違いです。
 現在のこの式を、どこかの列の1行目に入れて6行目までコピーすると
 1,2,3,4,5,6,・・・ と、際限なく値が増えていきます。

 例えば、これを最初の式と同じようにMOD関数の中に入れると
 MOD(ROW(A1)-1,5)
 1行目なら 0/5 のあまり 0
 2行目なら 1/5 のあまり 1
 3行目なら 2/5 のあまり 2
 4行目なら 3/5 のあまり 3
 5行目なら 4/5 のあまり 4
 6行目なら 5/5 のあまり 0
 7行目なら 6/5 のあまり 1
 :
 の様に 0〜4を繰り返す様な値を得ることが出来ます。
 「必要行以上はコピーしないから」であればそのままでも良いですし
 「下にも同じ表が同じように欲しい」であれば、その様な処理をしておいても良いと思います。

 最初の式は、50行ずつ4列ずつ だったので
 >MOD(ROW()-1,50)+(ROUNDUP(COLUMN()/4,0)-1)*50
 今回の式は、5行ずつ2列ずつ なので
 ◆MOD(ROW(A1)-1,5)+(ROUNDUP(COLUMN(A1)/2,0)-1)*5 

 次に列(,より後)の方を見ると
 列が 1,2,3,4 とあがるたびに
      0,1,0,1 と成る値が欲しいです。
 これって
 >> 0〜4を繰り返す様な値を得る
 に似てますよね。
 その式が↓
 ◆MOD(COLUMN(A1)-1,2)
 今回の式は、2列ずつ なので上記です。
 前回の式は、4列ずつ なので
 >MOD(COLUMN()-1,4)

 こういった規則性の有る物は
 MOD関数や、ROUNDUP関数(INT関数)等で
 ROW関数やCOLUMN関数を処理して
 希望する規則性のある値が得られる式を作る事を
 考えていきます。

 1,2,3,1,2,3 の様に繰り返したい場合は MOD関数
 1,1,2,2,3,3 の様に同じ値を続けながら増やして行きたい場合は
       ROUNDUP関数やINT関数を
 使います。

 (HANA)

コメント返信:

[ 一覧(最新更新順) ]


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