• ベストアンサー

差し込み印刷ができるようなエクセルデータについて

上図のように、A列に同じ番号が複数ありB列、C列にそれぞれ別の番号が付いています。 上図の状態を、下図のように差し込み印刷ができるようなデータにしたいのですが、そのためどのようなVBAを作ればいいのか困っています。 詳しい方からのアドバイスをいただけますと幸いです。よろしくお願いします。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

元データがSheet1にあり、例示されたようなシートのレイアウトで、目的が単純に数字を表示したいだけが目的なら、以下のような関数を別シートのB1セルに入力して右方向および下方向にオートフィルすればご希望の表示(数字は文字列数字になります)ができます。 =INDEX(INDEX(Sheet1!$B:$C,,1+MOD(COLUMN(A1)-1,2)),SMALL(INDEX((Sheet1!$A$1:$A$100<>$A1)*10000+ROW($1:$100),),(1+COLUMN(A1))/2))&"" データを文字列数字ではなく計算などに利用したい場合や、実際のシートのレイアウトが違う場合は数式を微妙に変更する必要がありますので、ひとまず例示されたデータで試してみてください。

jugyou1
質問者

お礼

ありがとうございました。参考になりました。もし分からないことがありましたらまた質問版を作成させていただきます。その時は勝手ながらアドバイスをいただけると幸いです。よろしくお願いします。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

回答No1です。大変失礼いたしました。 シート1には作業列を作って対応します。 E1セルには次の式を入力して下方にドラッグコピーします。 =IF(A1="","",A1*100+COUNTIF(A$1:A1,A1)) その上でシート2の操作に移ります。回答No1と同じ操作となります。

jugyou1
質問者

お礼

ありがとうございました。参考になりました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

マクロというよりも次のようにすれば関数で対応することができます。 シート1ではA列からE列までの1行目から下方にお示しのデータが入力されているとします。 シートのA1セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。 =IFERROR(INDEX(Sheet1!$A:$C,MATCH(ROW(A1)*100+ROUNDUP(IF(COLUMN(A1)<=3,COLUMN(A1)/3,(COLUMN(A1)-1)/2),0),Sheet1!$E:$E,0),IF(COLUMN(A1)<=3,MOD(COLUMN(A1)-1,3)+1,MOD(COLUMN(A1),2)+2)),"") エクセル2007よりも前のバージョンでしたら次の式になりますね。 =IF(ISERROR(INDEX(Sheet1!$A:$C,MATCH(ROW(A1)*100+ROUNDUP(IF(COLUMN(A1)<=3,COLUMN(A1)/3,(COLUMN(A1)-1)/2),0),Sheet1!$E:$E,0),IF(COLUMN(A1)<=3,MOD(COLUMN(A1)-1,3)+1,MOD(COLUMN(A1),2)+2))),"",INDEX(Sheet1!$A:$C,MATCH(ROW(A1)*100+ROUNDUP(IF(COLUMN(A1)<=3,COLUMN(A1)/3,(COLUMN(A1)-1)/2),0),Sheet1!$E:$E,0),IF(COLUMN(A1)<=3,MOD(COLUMN(A1)-1,3)+1,MOD(COLUMN(A1),2)+2)))

jugyou1
質問者

お礼

ありがとうございました。参考になりました。もし分からないことがありましたらまた質問版を作成させていただきます。その時は勝手ながらアドバイスをいただけると幸いです。よろしくお願いします。

関連するQ&A