• ベストアンサー

エクセルで数列のプリントについて

困っています。 すごく単純に言うとA列に1万個の数字が縦一直線にあります。 これをA4の用紙に印刷したいのですが、そのまま印刷したらとんでもないことですよね。 A列以外が空白なのだから、あまりにも無駄すぎます。 数字だけが必要なのでA4用紙に入るだけ横並びに並べて印刷したい。 A列が1-50行で51から50列ごとにB列、C列へと並ぶように移動をしてみたのですが、 1万行もこれやってたら日が暮れると悟りました。 これは何か数式で工夫できるものなのでしょうか。もしくはプリント設定で・ ご教授よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.2

A1~A10000セルに数値が入っているとします。 B1セルに以下の数式を貼り付け、B50まで行方向にオートフィルで数式をコピーしてください。 =INDEX($A:$A,(COLUMN()-2)*50+ROW(),1) B1~B50セルを選択し、GS1~GS50まで列方向にオートフィルで数式をコピーしてください。 GS50セルにA10000に入っている数値が表記されていればOKです。 改ページプレビュー状態でB1~GS50のセルを選択し、右クリックから印刷範囲の設定を選択。 初期の余白設定であればB~GS列の列幅をオートフィットさせればだいたいA4用紙で16ページぐらいには収まります。(ご使用のプリンタにより前後します) 1~80行を使い81~160、161~240と表記されるのであれば、数式内の50を80に変え、 1列当たりの数式を80行までオートフィルしたうえで、列方向へオートフィルしてください。

pluto1991
質問者

お礼

ありがとうございます。 こちら、ベストアンサーです。 一番簡単に実現ができました・。 本当に助かりました。

その他の回答 (4)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 今仮に、その1万個の数字が縦一列に入力されているシートのシート名がSheet1であるものとしますと、別の適当な未使用のシートのA1セルに次の関数を入力してから、その関数を入力したセルをコピーして、そのセルと同じシートのA1~GR50のセル範囲に貼り付けてみて下さい。 =IF(ROWS(A$1:A1)>50,"",IF(INDEX(Sheet1!$A:$A,(COLUMNS($A:A)-1)*50+ROWS(A$1:A1))="","",INDEX(Sheet1!$A:$A,(COLUMNS($A:A)-1)*50+ROWS(A$1:A1))))  尚、この関数であれば、Sheet1のA列の途中に空欄となっているセルが存在していた場合にも、ちゃんと空欄が表示されます。  又、間違えて50行を超える所にまで貼り付けを行ってしまった場合でも、50行目よりも下の所には何も表示されない様になっております。  因みに、もし別シートにおいて、A1セル以外のセルから表示が始まる様にしたい場合には、上記の関数中のA$1:A1と記されている箇所と、$A:Aと記されている箇所を、適時修正して下さい。  例えば、Sheet1のA1セルの値は表示させる必要が無く、Sheet1のA2セルからの値に関して、別シートのC5セルから表示が始まる様にしたい場合には、次の様にして下さい。 =IF(ROWS(C$5:C6)>50,"",IF(INDEX(Sheet1!$A:$A,(COLUMNS($C:C)-1)*50+ROWS(C$5:C6))="","",INDEX(Sheet1!$A:$A,(COLUMNS($C:C)-1)*50+ROWS(C$5:C6))))

pluto1991
質問者

お礼

ありがとうございます。

  • msMike
  • ベストアンサー率20% (364/1805)
回答No.4

そういうときは Excel 単体でなく、Office 全体でのコラボで何とかならないかと思いを馳せるべきかと。 そう言う私は、今は Office は Excel 2013 単体しか持っていないけど、昔使っていた Office XP を引っ張り出して来て若干の実験を試みたので、参考までにご報告しておきます。ヒントにはなるでせう(^_^) 添付図左は Excel 2002 で作成した「A列に1万個の数字が縦一直線」のシートのA4サイズの印刷プレビュー画面。 添付図右は Word 2002 の[差し込み印刷]ウィザードで当該 Excelシートを読み込んで、7段組に書式設定したものの印刷プレビュー画面。 ちなみに、総ページ数はA4で 53枚に達すると表示されています。 なお、Word に関する質問には回答できません。(10年以上触っていないので)

pluto1991
質問者

お礼

ありがとうございます。

  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.3

sheet1のA列にデータ sheet2のA1~J50までに1~500行のデータ A51~J100までに501~1000行のデータ 順次10列毎にデータを取得する事も可能です。 sheet2のA1式 =OFFSET(Sheet1!$A$1,MOD((ROW(A1)-1),50)+INT((ROW(A1)-1)/50)*50*10+(COLUMN(A1)-1)*50,) J1までオートフィル 下方へオートフィル INT((ROW(A1)-1)/50)*50*10の*10で列数を指定しています。変更は自由にして下さい。但し式コピー後列数を減少させた場合は減少分の列を削除して下さい 10から9列に変更の場合は10列目のJ列削除。 印刷を前提としているのであれば別紙にデータ抽出した方が良いでしょうし、印刷時には行番号及び列番号も印刷しないとデータ確認もしずらいでしょう。

pluto1991
質問者

お礼

ありがとうございます。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

INDIRECT関数でR1C1の参照で任意の列と行に並べ替えてみてください。

pluto1991
質問者

お礼

ありがとうございます。

関連するQ&A

専門家に質問してみよう