• ベストアンサー

一列を自動的に1枚の紙に印刷する方法ってありますか?

エクセルの使い方について教えてください。 エクセルの名簿から氏名の列だけを抜き出して、 それを一つの用紙に印刷する方法はあるのでしょうか? 氏名の列だけを抜き出して印刷すると、普通は ┌------┐ |A子   |B子   |C子   |D子  └------┘ ┌------┐ |E子   |F子   |G子   |H子   └------┘ というようにひたすら下へ続いていて右側は空白で、 1ページめに入りきらなかったら2ページめに続きますよね。 ┌------┐ |A子 E子 I子  |B子 F子 J子 |C子 G子 K子 |D子 H子 L子 └------┘ ↑こういう風に自動的に1ページ内の空白が埋まってから 次のページへいくように印刷する方法というのはないのでしょうか? ネット検索してみても短縮印刷の方法しか見つけられませんでした。 字の大きさはそのままがいいんです。 今は自分でコピペを繰り返して3列にしています。 データが膨大で大変なので、 もし、なにか簡単な方法があれば教えてください。

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

  • ベストアンサー
  • jo-zen
  • ベストアンサー率42% (848/1995)
回答No.3

別シートに名前の列だけ関数を使って抜き出してあげることはできます。1ページの行数を50とかに決めてあげないといけませんが。 例えばシート1のA列に名前が入っているとして、別シート(例えばシート2)のA1セルに次のように数式を入れます。  =OFFSET(Sheet1!$A$1,(COLUMN()-1)*50+ROW()-1,0) A1セルをA2:A50にコピーし、それからA1:A50をB列、C列などにもコピーしてあげればOKです。シート2は改ページプレビューなどを使って、50行ごとに区切れるよう設定してください。印刷設定で1ページの行数を50に設定してあげてもいいかと思います。 なお、文字の大きさのからみで1ページ30行にしたい場合は上の式の50を30に変えてあげればOKです。 1ページ3列設定だと、150件表示されると思いますが、151件目は下ではなく、D列にしてください。横長になりますが、改ページプレビューで改ページの位置を指定してあげれば、印刷時ちゃんと印刷されます。 なお、シート1にデータがない場合は、0が表示されてしまいますので、それをさけるためには、 =IF(OFFSET(Sheet1!$A$1,(COLUMN()-1)*50+ROW()-1,0)<>"",OFFSET(Sheet1!$A$1,(COLUMN()-1)*50+ROW()-1,0),"") としてあげれば、0が表示されることはありません。

musasi5555
質問者

お礼

回答ありがとうございました。 試してみました!すごいすごい!元データを編集してもちゃんと反映されるんですね。 便利な方法を教えてくれてありがとうございました。

その他の回答 (2)

  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

VBAや関数を駆使すれば出来るとは思いますが、 もし、Wordをお持ちであれば、Excelのデータを元に Wordの差込印刷機能を利用し、宛名ラベルを印字する要領で 用紙に印刷されてはどうでしょうか。 見当違いの回答だった場合はご容赦下さい。

参考URL:
http://office.microsoft.com/ja-jp/word/HA010349201041.aspx
musasi5555
質問者

お礼

回答ありがとうございます。 なるほど。Wordと組み合わせるという方法もあるのですね。 差込印刷を使うなんて思いつきもしませんでした。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

データベース系のソフトならそういう設定もありますけど エクセルではありません。 下記の方法しか考え付きません。 1.別シート(印刷用)にリンク貼り付けで参照して1枚に印刷 2.プリンタに縦長の用紙設定をして、複数ページを一枚に印刷する。

musasi5555
質問者

お礼

回答ありがとうございます。 エクセルでは印刷時に設定できる方法ってないんですね・・・。