• ベストアンサー

エクセルで縦長のデータを紙の無駄なく印刷

生年月日 お名前       ★↓紙が無駄★   1    A   2    B   3    C --------------ページ区切り-------------------   4    D   5    E   6    F --------------ページ区切り-------------------   7    G ★↑のようなデータを★ ★↓のように自動で折り返して印刷★ 生年月日 お名前 生年月日 お名前    1    A     4    D   2    B     5    E   3    C     6    F --------------ページ区切り------------------- 生年月日 お名前 生年月日 お名前   7    G     10    J   8    H        ↓ずーっと続く   9    I ・質問は上記の図のとおりです  項目名はヘッダーでなんとかなるのですが  データを折り返す方法がわかりません。  なにか上手い方法ございましたら  アドバイスお願いいたします。  宜しくお願いします。

noname#20962
noname#20962

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.5

会社でよくこのようなことができないか聞かれます。手っ取り早いのがAccessでExcelのデータをインポートし、詳細部を作り、ページ設定→レイアウト→列数で指定の列数にして印刷します。ただ、ヘッダー、フッタについては見栄えのいいレポートとはいえないかもしれません。 さてExcelでの解決方法ですが、私は、データを入力したシートとは別に印刷用シートを作成しマクロで印刷しています。下記がそれです。条件を説明します。 1.Sheet1のA1、B1に"生年月日"、"お名前"の表題が入力されていて、データは2行目から入力されていると仮定しています。 2.印刷する表はSheet2に作成し、その縦データ行数をPRTrow、その横データ組数をPRTcolにセットしてください。このマクロは質問にある、縦3×横2を想定しています。 3.また、Sheet2の縦3×横2の範囲には、"pArea"の範囲名をつけてください。 4.Sheet2からこのマクロを実行します。今はプレビューです。PrintPreviewをPrintOutにすれば印刷します。 印刷の形を違えるにはCellsの座標を修正してください。 入力データ数から印刷ページ数を求め、各データに対する印刷部分の座標を求め印刷しています。人が転記し仕上げていくような感覚です。 Public Sub Insatu() Dim rg As Range 'データの基準位置 Set rg = Worksheets("Sheet1").Range("A1") Dim pArea As Range '印刷データ部分 Set pArea = Worksheets("Sheet2").Range("prtArea") Dim Datanum As Long 'データ数 Dim PRTrow As Integer '1頁行数 Dim PRTcol As Integer '1頁列数(データの組数) Dim modePage As Integer '1頁印刷件数 Dim maxPage As Integer '最大印刷頁 ' Dim pgCot As Integer '頁カウンタ Dim yokoCot As Integer 'カウンタ(印刷の横) Dim tateCot As Integer 'カウンタ(印刷の縦) Dim pINDEX As Long 'データは何行目か ' Datanum = Worksheets("Sheet1").UsedRange.Rows.Count - 1 PRTrow = 3 '***これをセットする*** PRTcol = 2 '***これをセットする*** modePage = PRTrow * PRTcol maxPage = Int((Datanum - 1) / modePage) + 1 ' For pgCot = 1 To maxPage For yokoCot = 1 To PRTcol For tateCot = 1 To PRTrow pINDEX = pINDEX + 1 pArea.Cells(tateCot, (yokoCot - 1) * 2 + 1) = rg.Offset(pINDEX, 0) pArea.Cells(tateCot, yokoCot * 2) = rg.Offset(pINDEX, 1) Next Next ActiveSheet.PrintPreview '.PrintOut Next End Sub

noname#20962
質問者

お礼

返事が遅れてしまいってすいませんでした。 Accessから印刷は、おもいつきませんでした 見栄えはともかく、便利ですね。 EXCELのほうは、VBAを使ってるんで 理解するのにちょっと勉強しないと駄目ですね(^^; いい機会なんで、VBAマスターできるようにがんばります。 ありがとうございました(^_^)

その他の回答 (5)

  • marsah
  • ベストアンサー率42% (3/7)
回答No.6

強引ですが、 用紙がA4横なら、印刷設定をA5縦にして、プリンタ側の縮小印刷機能で2ページを1枚にまとめる。 用紙がA4縦なら、印刷設定をA6縦にして、プリンタ側の縮小印刷機能2~4ページを1枚にまとめる。 という横着な手もありかも…

  • yuu200
  • ベストアンサー率20% (5/24)
回答No.4

プリンタの"拡張機能"の中に、"集約"っていうのがあります。これで1ページに2ページ分入れることができます。・・・が、プリンタによって、出来るものと出来ないものがあります・・・

noname#20962
質問者

補足

集約機能というのはあるのですが それを使うと1枚目と2枚目の間が やはりすごく空いてしまいます(^^; でもなにかと便利な機能ですよねこれ

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

lenon204さんの質問は2つに分けて考えたほうが良いのでは? 1.見出しをつけるためには? 2.用紙1ページにデータ2ページ分を印刷するためには? 1.はxaxaさんの回答のとおりでしょう。 2.は、私も同じことをしたかったけど、わからなかったので   プリンタの縮小印刷機能を利用しています。   (用紙1ページにデータ複数ページを印刷できる機能つき)   プリンタのマニュアルでご確認ください。 ではでは。

noname#20962
質問者

補足

bin-chanさんのおっしゃるとおりです 見出しは問題無くいけてます。 質問を見やすくしようと思ったんですが よけいややこしかったですかね?(^^; 問題は1ページに、1、2ページ分のデータを いれる方法なんです。(縮小とかではなくて) プリンタのオプションも、いろいろ試してみます

  • xaxa
  • ベストアンサー率14% (6/42)
回答No.2

こんにちは ファイル→ページ設定とすすみ、 シートのタブで印刷タイトル(R)に、 例えば1行目だったら、$1:$1のように、 項目の行を指定してください。 縦長のデータならそれで自動的に、 各ページの一行目に項目行が印刷されます。

  • goo_0102
  • ベストアンサー率17% (48/279)
回答No.1

計算,集計用とは別に 印刷用のシートを作成すれば いかがでしょう。 幾つか項目が たまったら、行替えも「自動」で したいのでしょうか?

noname#20962
質問者

補足

その行替えを「自動」でやりたいのですが やはりページの設定とかでは無理なんでしょうか 印刷用シートを作成して元シートを参照する方法も試してみましたが。1ページの式を作ったら後のページは同じ式を貼りつけというふうにはゆかず困っています。 ↓大元データを参照した式が入っています   1   4   7   2↓ 5↓ 8↓ 3   6   9 2ページ目に上の式コピーすると 4   7   10 5↓ 8↓ 11↓ 6   9   12 4.5.6.7.8.9がダブる。 結局全部の改行の式を設定してやらないと 駄目なんです。 もうすこし手順を減らす うまい方法ありますでしょうか?

関連するQ&A

  • excelファイルからaccessへのデータ移管

    Accessのフィールド名がA、B、C、D、E、F、GとなっているものにExcelのヘッダがA、B、C、D、E、E、Gとなっている物を強制的に読み込ませたいです。Excel側のデータは弄る事が出来ません。Access側を弄って読み込ませる方法はありませんか?

  • エクセルでのデータの並べ替えについて

    質問があります。下記のように並んでいるデータがあるとします。   前年   今年 a 10 b 20 d 30 a 40 e 50 c 30 c 40 f 35 g 55 これを、  前年 今年 a 10 40 b    20 c 40 30 d 30 e 50 f    35 g 55 という様に並べ替える方法を教えてください。(データは多数あります。)

  • テキストファイルのデータをエクセルへコピーのやり方

    よろしくお願いします。 エクセル2000を使っています。 テキストのデータで A1/B1/C1    /はスペースです。 D1/E1/F1    データの長さは全部違います。 A2/B2/C2     D2/E2/F2 A3/B3/C3     D3/E3/F3      ・    ・(続く) といったものがあります。これをエクセルで    A列 B列 C列 D列 E列 1行 A1 B1 C1 D1 E1 2行 A2 B2 C2 D2 E2  ・・・ 3行 A3 B3 C3 D3 E3  (続く)          ・          ・(続く) という感じで別々のセルにいれて貼り付けしたいのです。 テキストデータを別々のセルに貼り付けする方法は 過去ログで「区切り位置」というのをつかえばいいというのはわかりましたが、この場合の複数行にわたるテキストデータをエクセルの1行に貼り付けする方法がわかりません。また、データの長さが違うために「区切り位置」もうまくいきません。 良い解決法をお願いします。

  • Excel 2007 1列のデータを1行にしたい

    いつもお世話になっています. 早速質問なんですが A B C D E F G 1 あ 2 い 3 う 4 え 5 お 6 か のような あ~か を A B C D E F G 1 あ い う え お か 2  3  4  5  6  みたいにしたいのですがやり方が分かりません. 2*2以上のデータを入れ替える方法はWeb上にあるのですが,1列のみを1行に変換する方法が載ってません.誰か教えてください.宜しくお願い致します.

  • エクセルでデータの抽出する際に困っています

    エクセルで特定の行のデータを抽出する方法を教えてください。 抽出方法を以下に示します。     A   B   C   D   E   F   G   ---------------------------------- 1l  10   11   0   0   0   0   0 2l  12   13   0   0   0   0   0 3l  14   15   1   2   3   4   5 4l  16   17   0   0   0   0   0 5l  18   19   0   0   0   0   0 6l  20   21   6   7   8   9   10 7l  22   23   0   0   0   0   0 というような感じのエクセルデータに対して、     A   B   C   D   E   F   G    ---------------------------------- 1l  14   15   1   2   3   4   5 2l  20   21   6   7   8   9   10 というように、C~G列が0でない行のA~Gのデータを別シートに抽出したいのですが、 簡単な方法があれば教えていただきたいです。 よろしくお願いします。

  • excelでの行列データの並び替え

    excelで表形式のデータの並び替えをおこないたいのですがいい方法が思いつきません。 どなたか教えて下さい。 具体的には 元のデータは以下の様なフォーマット a b c d e f g h i これを並び替えて a b c d e f g h i としたいということです。 元データの列数は決まっていますが 行数は任意です。

  • エクセルのデータを入れ替えたいのですが。

    エクセル2010で下記のデータがあり、C2とD2はaの1回目のデータで続きがE2とF2 となります、これがY2とZ2まで続き、そのあとC4とD4と続きます。 この横につながるデータを縦に入れ替えたい(一番下のように入れ替えたい)のですが、 よい方法を教えてください。 今まで、コピーと貼り付けでやっていたのですが、量が多く時間が足りません。 マクロでも関数でもどちらでもいいです。 よろしくお願いいたします。 ---A--B----C-------D-------E------F--------G------H-------I-------J--・・・Y--Z 1----------上限----下限----上限---下限-----上限----下限----上限----下限 2-----a----3500----3400----3750----3650----4000----3900----3150----3100 3-----b----3800----3750----3350----3300----5300----5100----3600----3550  4-----a----2900----2850----2850----2800----3600----3500----3550----3500 5-----b----3200----3150----3100----3000----3700----3600----7000----6500 6-----a 7-----b 下のように入れ替えたい。 ------A------B------C-----D-- 1---------a-------------b----- 2----上限---下限---上限---下限 3----3500---3400---3800---3750 4----3750---3650---3350---3300 5----4000---3900---5300---5100 6----3150---3100---3600---3550  7-----K2-----L2-----K3----L3 8-----M2-----N2-----M3----N3 ・ ・ ・ ・-----Y2------Z2-----Y3----Z3 ・-----C4------D4-----C5---D5 ・-----E4------F4-----E5----F5 ・ ・ ・

  • テキストデータの並べ方を変える

    すみません、エクセル操作で困っております。 エクセルは全くの初心者です。 たとえばa,b,c,d,e,f,gと並んでいるtxtデータがあるのですが、 これをExcel2007で開くと a,b,c,d,e,f,gという感じで横方向のセルに従って開いてしまうのですが、 これを a b c d e f g という感じで縦に並べ替えて読み込ませる方法はありませんでしょうか?

  • エクセルのデータ並び替え

    列(A)に1000個あるデータを、4列X250行に自動的に並び替える方法はありますか? つまり A   A B C D B   E F G H C ⇒ I J K L D   M N O P E   ・ ・ ・ ・ ・ ・ ・ と、並べかえたいのですが、いい方法はありませんでしょうか?

  • エクセルで1行に1データ以上入力されたらエラー表示

    A1からG1の行で7つのセルがありますが、 その行で1データ以上入れたらエラー表示させることは出来ますか? 例えば A1にデータを入れたらB1・C1・D1・E1・F1・G1にはデータは入れられない。 D1にデータを入れたらA1・B1・C1・E1・F1・G1にはデータは入れられない。 という感じです。 どうぞよろしくお願いします。

専門家に質問してみよう