• ベストアンサー

至急なんです~(>_<)!エクセル差込印刷(連番とんでる編)

過去の質問で差込印刷などの要領はわかったのですが、同じような質問がないのでこちらから質問させていただきます。 sheet1に元データ sheet2が帳票用(印刷用)となってます。 sheet1のA列に連番が入ってますが、 こちらはA1=1、A2=空欄、A3=2、A4=3 などとランダムな行にに連番が入ってます。 B列に会員番号が入ってます。 なのでA列の連番の1.2.3.4.5.6のすぐ右横のセルB列(会員番号)をsheet2のA1セルに入れて連続印刷していきたいのです。 2500人ほどの会員への手紙を明日中に発送しなくちゃいけなくて困ってます。 ちなみに「sheet2」は「A1」のセルにさえ会員番号が入れば出来上がるようになってます。 どうかわかる方がいましたらお力添え宜しくお願いいたします。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。KenKen_SP です。 >2500人ほどの会員への手紙を明日中に発送しなくちゃいけなくて困ってます。 そりゃ大変だ。取り急ぎですが、、 Sub Sample()   Dim Sh1 As Worksheet, Sh2 As Worksheet   Dim rngCel As Range   Dim rngDat As Range        Set Sh1 = ThisWorkbook.Sheets("Sheet1") '元データシート   Set Sh2 = ThisWorkbook.Sheets("Sheet2") '印刷用シート      'Sheet1 の A列のデータ範囲を取得   Set rngDat = Intersect(Sh1.Columns(1), Sh1.UsedRange)   If rngDat Is Nothing Then     Exit Sub   End If      'Sheet1 のA1~A列最終セルまでループ   For Each rngCel In rngDat     'A列が空なら処理しない     If Not IsEmpty(rngCel) Then       'Sheet2 の A1 に会員番号を転記       Sh2.Range("A1").Value = rngCel.Offset(0, 1).Value       '印刷       Sh2.PrintOut     End If   Next rngCel   Set rngCel = Nothing: Set rngDat = Nothing   Set Sh1 = Nothing: Set Sh2 = Nothing End Sub

maa2525
質問者

補足

早々の回答ありがとうございます。 すばらしいですね!いつも頭のなかがすっきりと整頓されているのだなぁっと感心してしましました。 これでいけそうなのですが、実際はsheet1のA1じゃなくてE1に連番、F1に会員番号なのですがその場合は →Sh1.Columns(1)を変えればよろしいのでしょうか? 色々変えて試したのですが動かなかったので・・・ 宜しくお願いいたします。

その他の回答 (4)

  • zenjee
  • ベストアンサー率47% (50/106)
回答No.5

>連番のパターンは2になっております。 連番になっていれば並べ替えする必要も列挿入する必要もなく、そのままSheet2のA列に一連番号を振ることによって同じ作業を行えば一連番号に応じた会員番号がすべて自動的に入力されるので、問題なく処理可能と思います。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

#2 です。 > ...実際はsheet1のA1じゃなくてE1に連番、F1に会員番号なのですが > その場合は→Sh1.Columns(1)を変えればよろしいのでしょうか? E 列は列番号で言えば A 列 から数えて 5 番目なので、 Sh1.Columns(5) に変更して下さい。うまくいくといいですね。 頑張ってください。

maa2525
質問者

お礼

できました(>_<)すご~い!!! 去年一枚ずつ印刷したのが馬鹿のようです!(ちなみに1週間かかりましたが、これなら半日でできました) すばらしいです。これを他の帳票のも応用すれば、今の仕事量の半分以下になりそうです。本当にありがとうございました。

  • zenjee
  • ベストアンサー率47% (50/106)
回答No.3

>sheet1のA列に連番が入ってますが、 こちらはA1=1、A2=空欄、A3=2、A4=3 などとランダムな行にに連番が入ってます。 1、A列の空欄を除いた会員へ発送するということでしょうか。 2、またSheet1,A列の番号は空欄を除けば一連番号になっているのでしょうか。 その辺がいまいち分かりませんが、1はそのとおり、2は連番になっていないと仮定して、VBAによらない次の方法はいかがでしょうか。 まずSheet1のA列を降順に並べ替え、一旦、発送分だけの表にまとめます。 ABの間に作業列を挿入し、1を起点とする一連番号を振ります。 Sheet2も最左列に作業列を挿入し、A1に「1」を入力します。 A1を検索値としてB1に変更された会員番号のセルに次の式を入力します。 =VLOOKUP(B1,Sheet1!B:C,2,FALSE) この式を、Sheet2の帳票の2葉目のセル(例えばB21とします)にコピーするとともに、A21に =A1+1 と入力します。 A21:B40をコピー、A41以下必要な行までペーストします。 すると会員番号が全部に入る筈なので、印刷範囲を1葉毎になるよう設定して(20行毎に改ページになるよう)印刷すればOKでしょう。 もちろん他の必要データは会員番号が入ればVLOOKUP関数等で自動的に反映されるようになっているとの前提です。

maa2525
質問者

補足

早々のお返事ありがとうございます。 連番のパターンは2になっております。 並び替えをするとくずれてしまうような数式が入っていて並び替え不可能なのです。 VBAの初歩的な知識ならあります。 でも光が見えてきましたありがとうございます。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

エクセルだけで差込印刷をするのですか? VBAを書かないと出来ないと思いますけど、、、 ワードと併用して、ワードの差込みでエクセルファイルを指定した方が簡単ですよ。

maa2525
質問者

お礼

ありがとうございます。VBA苦手なんですよね・・・・ 数式がからみあってて、ワードでは無理なようです。 ご心配ありがとうございます(*^_^*)

関連するQ&A

  • 一覧 → 帳票へ転記 → 自動差込印刷

    Excel2013使用 シートAに一覧表があり、それをシートBの帳票に vlookupを使って転記をしています。 現在の状況です↓ 【シートA】(一覧表) ・A列には、1~30の通し番号があらかじめ入っています ・1行目は、項目名が入っています よって、実際のデータは「B2」から始まります 【シートB】(帳票) ・セル「B6」に、シートAのA列の番号を入力すると、その他の  項目がvlookupによって自動で反映されます ここからが本題です。 現在、シートBの帳票を印刷する際は、セルB6に手で「1」と入力→「印刷」 次に「2」と入力→印刷・・・という風にしています。 日によっては20以上になる事もあるので、自動で印刷が出来れば…と思います。 なにとぞよろしくお願いいたします。

  • エクセルです。至急教えてもらえませんか!!

    はじめまして。よろしくお願いします。 エクセルである名簿を作っています。 <sheet1> A列に会員番号、B列に氏名、C列に住所・・・・というような表にしています。 <sheet2> sheet2のあるセルに<sheet1>の会員番号を入力するとその会員のデータが決められた様式ででてくるようにしました。 今から、この会員全員分のデータを全て<sheet2>の様式で印刷したいのですが、手作業で会員番号を入力して、印刷をしてというやり方だとかなり時間がかかりそうです。また他にも今から仕事があるので、何かよい方法を教えてください。マクロでできるのだろうとは思うのですが、昔使ったことが少しあるだけで全然覚えていません。よろしくお願いいたします。 *会員番号順に並んでいますが、数はとんでいます。例えば、1、5,19,28,29,50・・・・という具合です。

  • エクセルで、条件の合うものだけに連番をつけたいです。

    A列に連番があります。この番号は変えることができません。 B列に、条件を満たすセルだけに別の連番をつけたいです。例えば、D列がTRUEである行が1,5,6…とあったとすれば、B1が1、B5が2、B6が3…といった具合にです。 よろしくお願いします。

  • エクセルで印刷

    エクセルのシートに名簿があります。 A列に番号(1~70)、B列に住所、C列に氏名・・G列まであります。 シート2の指定したセル(c3.c5・・)にシート1の指定した 番号の住所、氏名を印刷したいのです。 同じシートでも構いません。 シート上側に印刷フォーム、下側に名簿を移します。 番号指定、印刷、1枚づつの印刷でも構いません。 過去の質問を見たのですが難しくて理解できません。 PC初心者ですが宜しくお願いします。

  • エクセルで、○について連番を自動で振るには?

    エクセルで、○と入力したら、○の数の連番を振ることはできますか? エクセル初心者です。 _ A列 1 ○1 2 ○2 3 4 ○3 5 6 ○4 出来ればつけた連番は○より小さくなるとありがたいです。 B列ではなく、A列の○の右横に反映させたいです。 マクロなら可能でしょうか?

  • エクセルの連番について

    例えばA列が商品コード番号を入力する行でB列が伝票番号を入力する行だとします。A列に入力すると自動的にB列に連番が入るようにしたいのですが・・・   A  B 1 11  1 2 23  2 3 54  3 こんな感じですが。

  • エクセルで連番をマクロで

    こんにちは いつもお世話になっています。 Windows7、エクセル2010で教えてください。  B3から仮にB100まで文字列があるとします、空白セルはありません。 この状態でA3からA100まで1から始まる連番をマクロで実行したいのです。 実際はB列のデータの最終行は不定です。つまり、B列にデータがなくなるまで(空白セルになるまで)A列に連番をつけたいのです。現在はA3,A4に1,2と入力し、オートフィルで該当セルを選択し「予測」で連番をつけています。 マクロ記録ではB列にデータがなくなる判断ができなくて作れません。 この作業が頻繁にあるものですからマクロができれば助かります。 よろしくお願いいたします。

  • Excelで連番(ナンバリング)印刷

    ExcelでWordの差し込み印刷のような感じで1ページだけ基本となるシートを作り、1セルを連番印刷したいのですができますか? 例えば、1シート(ページ)を作った上で、ページ指定か何かで50~100と印刷を掛けたら指定した場所(セル)のところが印刷する毎に50~100と変わって印刷するといった感じで。 宝くじみたいな感じで、番号枠のところだけ変わる感じです。 どなたか助言をお願いいたします。

  • エクセルで自動連番の式について

    エクセルの計算式を教えて下さい。 シート1に   A列 B列 1 0001 りんご 2 0002 みかん の様にB列に入力がされたらA列に自動的に連番が振られる様に A列に =IF(LEN(B1),TEXT(COUNTA($B$1:B1),"0000"),"") と式を入れました。 シートが変わっても、連番になるようにするには、どうすれば良いでしょうか?

  • ExcelのCOUNTA関数で数えた数だけ連番を付けるには

    ExcelでB列から下の行にデータが入力されています。 そのデータ数を数えるために,B4セルに=COUNTA(B5:B100)関数を入力します。 B4セルで数えた数を元にして,A5,A6,A7・・・と下方向にその数まで1,2,3・・・と連番を付けていきます。 もしB4セルの値が0なら連番は付けません。 以上のマクロをシートに貼り付けるにはどのようにしたらよいでしょうか? 教えてください。お願いします。

専門家に質問してみよう