• ベストアンサー

<エクセル>マクロを使ってデータを入力したいのですが・・

エクセル初心者のため、 どなたかご存知の方がいらっしゃいましたら教えていただけないでしょうか。 エクセルで、ある申込書のフォームにデータ(氏名・フリガナ・生年月日・年齢等を入力したいのですが100名分くらいあるためマクロを作って元データからコピーできれば・・と考えています。 100人分の元データはSheet1にあり、 1名につき1行で、A1に氏名、B1にフリガナ、C1に生年月日・・・(~F1まで)となっています。(~100行目まで) そのデータをSheet2にある申込書フォームの該当欄にコピーしたいのですが、簡単な方法はありますでしょうか。 Sheet2には10名分の入力欄があるので、、 Sheet1の1行目の人のA1(氏名)のデータをSheet2のB12(氏名入力欄)へ、 Sheet1の2行目の人のA2(氏名)のデータをSheet2のB14(氏名入力欄)へ、 ・・・・・ Sheet1の10行目の人のA10(氏名)のデータをSheet2のB30(氏名入力欄)へ、 という感じでコピーしていきたいです。 (フリガナ、生年月日、年齢などそれぞれ欄があります) とりあえず10人分ずつSheet2にコピーできるマクロが組めれば大変助かるのすが・・・。 説明も上手にできず申し訳ないのですが・・・。 私の知識レベルでは100人分こぴぺこぴぺする方が早いのかもしれませんが どなたかアドバイスをいただければ大変うれしいです。 どうか、宜しくお願いいたします。

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

  • ベストアンサー
  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.5

マクロじゃありませんけど Sheet2の B1 =0 (仮)とし B12 =OFFSET(Sheet1!$A$1,(ROW()-12)/2+$B$1*10,0) とし B14 以下に同じものをコピーします するとSheet2の入力欄にSheet1の10名分の氏名が転記されたと思います この状態でSheet2のB1に1を入れて見てください すると、次の10名分が転記されると思います この様にB1に0~9を入れるだけで、10名分ずつ転記出来ます B1が既に使用済の場合は空いている所に変更できます その場合は、式の  $B$1 を変更してください

その他の回答 (4)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

No1 merlionXXです。 > このA1の転記先と同じパターンでB1、C1と繰り返していけばよいのですね。 繰り返し一個ずつ書く方法もありますが、転記先が連続している等、規則性があるならもっと簡単に書けます。B1~F1の転記先がどこになるのかをちゃんと書いてくれればアドバイスできるのですが・・・。

  • kuma56
  • ベストアンサー率31% (1423/4528)
回答No.3

マクロが組める人ならそれほど難しい作業ではないと思いますが。それが解らない段階の初心者に説明しても、どのようなレベルで理解できているのかがよく判りません。 親切な回答者ならば、ここで手本のマクロを記述して"これをコピーしてやれば使えますよ!"・・・みたいな回答をくれるかもしれないけど、このサイトは根本的にマクロの作成を依頼する場所ではなく、そういう事は規約違反になり削除の対象になりかねません。 ある程度まで自分でマクロを組んでみて、うまくいかない場合にその記述のどこがおかしいのか質問できるくらいなら、マクロで処理した方がいいだろうけど、質問文からするとこの質問の答えを待ってマクロに挑んで処理するよりも、手作業でやったほうがずっと早く出来上がると思います。 っとはいえ、100人分のコピーはやはり大変そうだから、チョットだけ楽になりそうな方法として・・・・ まずsheet1のa1~a10のコピーを取り、sheet2のB12に張り付ける。 B13~B112までを選択してマウスでドラッグして一行分空白を作るように下げる。 同じようにしてB15~B113までを選択してマウスでドラッグして一行分下げる。 これを繰り返せばsheet1とsheet2の間でコピーペーストを何度も繰り返す事はしなくてもよくなる。

mizuki1104
質問者

お礼

おっしゃることごもっともです~。 丁寧にご回答くださりうれしいです。 かなり甘えがあるので、マクロについてはもう少し勉強してから、 と思います。 ヒントもいただけて助かりました。 どうもありがとうございました!

回答No.2

マクロに関しての知識がないのであれば、フォームをwordで作成して、wordの差込印刷を使用してはいかがですか? 今後もこの様な事をしたいのであれば、この機会にVBAを学習されてはいかがですか。

mizuki1104
質問者

お礼

Word・・・ ほんとうですよね~。 正しいご指摘ありがとうございます。 かなり甘えてしまってお恥ずかしいです。 ご回答ありがとうございました!

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

お書きになった情報だけでは氏名(A1)の転記先しか書いてないのでB~Fは無視しています。 要はSheet2、B12以降に1行おきに転記すればいいのでしょうか? ならば、 Sub 隔行転記() For i = 1 To 100 Sheets("Sheet2").Cells(i * 2 + 10, "B") = Sheets("Sheet1").Cells(i, "A") Next i End Sub

mizuki1104
質問者

お礼

ご回答いただきありがとうございます! このA1の転記先と同じパターンでB1、C1と繰り返していけばよいのですね。 とっかかりをいただけてとても助かります。 迅速なご回答、感謝いたします~。

関連するQ&A