• ベストアンサー

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

nishi6の回答

  • ベストアンサー
  • 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マスターできるようにがんばります。 ありがとうございました(^_^)

関連する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にはデータは入れられない。 という感じです。 どうぞよろしくお願いします。