エクセルのデータがA・B列のみに入力されており、このデータをA4縦の用紙にプリントアウトしたいのです。列幅がそんなに広くないので通常の設定だと用紙の左端の部分にしか印刷されないようになってしまい、右側は余白となってしまいます。1枚の用紙に3列(3段組?)プリントしたいのですが、どこで設定すればいいのでしょうか?カット&ペーストでやろうとすればできるのですが、行数が多いものですからこんな方法では大変です。基本的なことで申し訳ないのですが、よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

以前、同様の質問に回答したことがあります。

Excelでは面倒かもしれません。
『エクセルで縦長のデータを紙の無駄なく印刷』
  http://www.okweb.ne.jp/kotaeru.php3?q=65628


今回は視点を変えて、手作業で行われているだろう『カット&ペースト』をマクロにしてみました。
ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入し、そこに下記コードを貼り付けます。
質問にあるA、B列が3個並んだカタチになります。

編集したいシートを選択してマクロを実行します。(ツール→マクロ→マクロ→下記を選択→実行)
編集したいシートのコピーを作り、実行してみてください。1ページの行数はpageModeで指定してください。
なお、1行目は表題、2行目からデータがあるとしています。2行目以降を印刷範囲の設定を行い、1行目を行タイトルに設定します。この辺りはアレンジして下さい。
『最初のデータの位置』を変更すれば、A列以外からの処理、複数タイトル行に対応できます。

Public Sub makePrintForm()
  '2列を3組の2列に編集しなおすマクロ
  Dim syoriKubun As Integer '処理区分
  Dim cutArea As Range '移動する元のセル範囲
  Dim topCell As Range '移動する元のセル範囲の左上先頭セル
  Dim topCellAddress As String '移動する元のセル範囲の左上先頭セル番地
  Dim cutRows As Long '移動する行数
  Const pageMode = 60 '1ページの行数   *** これを指定します ***

  Application.ScreenUpdating = False
  '表題をコピー
  Set topCell = ActiveSheet.Range("A2")  '*** 最初のデータの位置を指定します ***
  With topCell
    .Offset(-1, 3) = .Offset(-1, 0): .Offset(-1, 4) = .Offset(-1, 1)
    .Offset(-1, 6) = .Offset(-1, 0): .Offset(-1, 7) = .Offset(-1, 1)
  End With

  'データを分割
  Set topCell = ActiveSheet.Range("A2").Offset(pageMode, 0)
    If topCell.Offset(1, 0) = "" Then
      cutRows = 1 'データ数が1ページの行数+1の時
    ElseIf topCell.End(xlDown).Row = ActiveSheet.Rows.Count Then
      Exit Sub 'データ数が1ページの行数までの場合は終了
    Else
      cutRows = topCell.End(xlDown).Row - pageMode - 1
    End If

  'データがあるだけ繰り返す
  While cutRows > 0
    Set cutArea = topCell.Resize(cutRows, 2)

    Select Case syoriKubun 'データを移す場所の計算
      Case 0, 1: Set topCell = topCell.Offset(-pageMode, 3)
      Case 2: Set topCell = topCell.Offset(0, -6)
    End Select
    'CutするのでtopCellの番地を覚えておく
    topCellAddress = topCell.Address
    'データを移動
    cutArea.Select: Selection.Cut 'カット
    topCell.Select: ActiveSheet.Paste 'ペースト

    '次の処理
    syoriKubun = syoriKubun + 1: If syoriKubun > 2 Then syoriKubun = 0
    Set topCell = Range(topCellAddress).Offset(pageMode, 0)
    cutRows = cutRows - pageMode
  Wend
  Application.ScreenUpdating = True
  Range("A1").Select
End Sub

参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=65628
    • good
    • 0
この回答へのお礼

早速ご回答いただきありがとうございます。
おかげさまで3列づつ印刷することができました。
今までマクロを使うようなデータ処理をすることがなかったので、これから勉強しようと思っています。
どうもありがとうございました。

お礼日時:2001/12/03 02:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q印刷するとA4用紙2枚分のデータをなんとかA41枚にしたいのですが、ど

印刷するとA4用紙2枚分のデータをなんとかA41枚にしたいのですが、どうしてもA42枚になってしまいます。

印刷時に縮小して80%くらいにしてもA42枚になります。

悔しいことに3行分ほど2枚目に印刷されてしまいます。

きっと他に簡単にできる方法があるのでしょうが、判りません。

どうすればいいか教えてください。

Aベストアンサー

Excelのデータを印刷しようとされているのであれば、下記URLのページの「印刷時の拡大縮小」の項をご参照下さい。
 
「Excel(エクセル)基本講座:印刷/印刷プレビュー」
http://www.eurus.dti.ne.jp/~yoneyama/Excel/insatu.htm
 
Wordの文書であれば、下記URLのページの「用紙1枚に2ページ印刷する」の項をご参照下さい。
 
「Word(ワード)基本講座:文書の印刷(プリント)」
http://www.eurus.dti.ne.jp/~yoneyama/Word/w-print.htm

Q用紙に合わせて設定と余白に合わせて設定の違い及び使い方

Word2007を使い始めたばかりです。

「ページレイアウト」タブ・「配置」グループ・「配置」にある「用紙に合わせて設定」と「余白に合わせて設定」の違いとそれぞれの使い方を教えてください。

Aベストアンサー

オートシェイプ図形、図、テキストボックスなどのオブジェクトを、レイアウトを「行内」以外で挿入・選択しておき、配置の用紙や余白に合わせて設定を選び、再度配置の左揃え、上揃え等を指定してみると、その違いが理解できると思います。

単一の描画オブジェクトだけでなく、複数オブジェクトを整列・配置する場合に、この配置機能を使用します。
ヘルプで「整列」と入力・検索し、「図、図形、テキスト ボックス、またはワードアートを整列または配置する」にいろいろ書かれています。
 

QExcelで、自列に数字がる行の左端列の数字を加えるには?

下表で、左端は行番号、最上行は列名で、-は空白セルを表しています。
例えば、(1)=40行のGには、G列に数字がある行のF列の数字を足す式を求めています。

+FGHI
719--
81---
951--
102-5
110--5
121---

40(1)(2)  (3)

(1)=G40=1+5
(2)=H40=2
(3)=I40=0
なお、スペースが詰まった表示になりますが、Excel表をここで表示する方法があればそれも教えて下さい。以上

Aベストアンサー

40行目のG列のセル、H列のセル、I列のセルに
それぞれの列の1~39行の間で"-"以外の値が入っている行のF列のセルの値の合計を表示する方法を知りたい
という質問でよろしいでしょうか?
合計を求める際に条件をつけることのできるSUMIF関数というものがあります。
SUMIF関数には3つの引数があり、1つ目の引数には条件をつける範囲、2つ目の引数にはその条件を、3つ目の引数には合計を求める範囲を渡して使用します。
例えば今回の場合、G40には=SUMIF(G1:G39,"<>-",F1:F39)が入ります。

Qエクセルで、A列に日付をB列に曜日、C列からF列までにデータを入れるよ

エクセルで、A列に日付をB列に曜日、C列からF列までにデータを入れるように作成しています。
条件付書式で土日祭日の場合はC列からF列に色を表示させています。
この色付セル(土日祭日)の場合にはデータ入力が無いので自動で0を表示させ、なおかつデータ入力が出来ないようにしたいのですが、そのようなことは出来るでしょうか。エクセルは2003を使ってます。

Aベストアンサー

C2セルに以下の数式を入力します。

=IF(AND($A2<>"",WEEKDAY($A2,2)>5),0,"")

同様にC2セルに以下の入力規則を設定します。

「データ」「入力規則」で「ユーザー設定」にして数式欄に以下の式を入力します。

=WEEKDAY($A2,2)<6

最後にC2セルを右方向および下方向にオートフィルします。

Qエクセル2002:列の右側がA列になってしまいました。

特に何も操作していないのに、列の右側がA列になってしまいました。その場はオプションの操作で直ったのですが、新しく起動すると再びA列が右側にあります。

新しく起動した時にA列が左に表示されるようにするにはどのような操作が必要でしょうか?

起動時の設定を直すにはエクセル上でどのような操作をすればよいのでしょうか?

時間の許す方でご教示いただける方がいらっしゃいましたらよろしくお願いします。

Aベストアンサー

「ツール」-「オプション」-[インターナショナル]タブで
「現在のシートを右から左へ表示する」のチェックを外せば戻りそう。


このカテゴリの人気Q&Aランキング

おすすめ情報