VBAで複数のセルのデータを一覧表に転記する方法

このQ&Aのポイント
  • VBA初心者がエクセルに入力したデータを一覧表に転記する方法を教えてください。
  • シート1に入力したデータをシート2の一覧表に転記するVBAコードを作成したいです。
  • 100人分のデータを繰り返し処理するために、for-next文を使用して効率的なコードを作成したいです。
回答を見る
  • ベストアンサー

VBAに詳しい方に質問です。

VBAに詳しい方に質問です。 私はVBA初心者です、お力添えのほどよろしくお願いいたします。 エクセルで入力し、それを一覧表に転記し、最終的に出力フォームにデータを呼び出し印刷するプログラムを作成しています。 1つの項目のデータを表に転記したり、呼び出すVBAはなんとか作成できました。 しかし、複数のセルのデータを表に転記するVBAが作ることができません。 ☆シート1 入力フォームがあり、 氏名・電話番号・住所等の項目を100人ほど表で入力します。 それらをシート2へ転記します。    1     2      3    4…   1  日付    名前    年齢   電話番号 2 2010/07/01 石川花子   12才  090-×× 3 4  ↓以下100名ほど入力 5  ※列も行も数値で表すように設定してあります。 ・ ・ ・ ☆シート2 これまでに入力したデータをすべて一覧表にします。 シート1のデータはこれまでに入力されたデータの下に転記されます。    1     2     3   4… 1 日付    名前    年齢  電話番号 902010/06/28 山田太郎  33才 090-×× 912010/07/01 石川花子   12才  090-××   92  ↑このように日付欄に空白を見つけ、そこからデータを転記する。 93 ・ ・ ・ 私が考えたVBAは、 sub 転記マクロ() set 入力 = worksheet("シート1") set 一覧 = worksheet("シート2") 日付1=入力.cells(2,1) 名前1=入力.cells(2,2) 年齢1=入力.cells(2,3) 電話1=入力.cells(2,4) 日付2=入力.cells(3,1) 名前2=入力.cells(3,2) 年齢2=入力.cells(3,3) 電話2=入力.cells(3,4) '以下○○100まで ※一覧.(縦,2)に縦+1をしていき""の場所を探す。 (すみません、データを会社に置いてきたので表記の仕方を忘れてしまいました^^;) 一覧.(縦,1)=日付1 一覧.(縦,2)=名前1 一覧.(縦,3)=年齢1 一覧.(縦,4)=電話1 一覧.(縦+1,1)=日付2 一覧.(縦+1,2)=名前2 一覧.(縦+1,3)=年齢2 一覧.(縦+1,4)=電話2 '以下+100まで end sub 何も見ずに思い出しながら書いたので、もしかしたらどこか間違っているかもしれませんが、 このような感じで書いていきました。 さすがにこのようなことを100回繰り返すのは大変なので、for next関数でなんとかならないか試行錯誤したのですがなかなか解明できず困っています。 詳しい方、どうか教えてください。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

Sub 転記マクロ2()   Dim ws As Worksheet '転記先シート   Dim x As Long   'シート名は実際のシート名に変更要   Set ws = Sheets("シート2")   With Sheets("シート1")     x = .Cells(.Rows.Count, 1).End(xlUp).Row     If x > 1 Then       With .Range("A2:D2").Resize(x - 1)         .Copy ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(1)         .ClearContents       End With     End If   End With      Set ws = Nothing End Sub こんな感じです。

関連するQ&A

  • VBAに詳しい方に質問です。

    VBAに詳しい方に質問です。 私はVBA初心者です、お力添えのほどよろしくお願いいたします。 前回の質問の続きなのですが、 エクセルで入力し、それを一覧表に転記し、最終的に出力フォームにデータを呼び出し印刷するプログラムを作成しています。 そこで、一覧表から出力フォームに呼び出すVBAについて教えてください。 ☆シート2 これまでに入力したデータをすべて一覧表があります。    1     2     3   4… 1 日付    名前    年齢  電話番号 22010/06/28 山田太郎  33才 090-×× 42010/07/01 石川花子   12才  090-×× 52010/07/01 岡田君子   15才  090-××   6  7 ・ ・ ・ ☆シート3 出力.cells(1,1)に日付を入力しボタンを押すと、その日付を基準にその日付の項目すべてを出力します。     1   2    3 12010/07/01 2  3  名前  年齢  電話番号 4 石川花子 12才  090-××  5 岡田君子 15才  090-××    6  7 ・ ・ ・ このようなVBAを作り出す場合、どのような文を書いたらよいのでしょうか。 VBAに詳しい方、アドバイスのほど宜しくお願い致します。

  • エクセルのVBAについて

    ご教授下さい。 勤怠管理表を作成しています。 個人データを入力するシートがあり、出来上がったものの中から必要な事項のみを別シートの一覧表へ転記をしたいのですが、方法がわかりません。 どなたかご教授ください。 1.転記したい事項は下記の通りです。 (1)氏名 (2)出勤 (3)公休 (4)休み (5)合計 (6)給料 2.6項目をシート名(全体)に表形式で転記 3.社員番号等はなくランダムに入力するため、一覧表へは転記のみされればOKです。 よろしくお願いします。

  • ExcelのVBAに明るい方・・・

    Excelの、Sheet1 に 1日目,鈴木くん,点数,・・・ 2日目,佐藤くん,点数,・・・ 2日目,山田くん,点数,・・・ 3日目,佐藤くん,点数,・・・ 3日目,鈴木くん,点数,・・・ 4日目,山田くん,点数,・・・ ・・・ という、元ダネの一覧表があって、 このデータを日々追加入力していくごとに、自動的に、 Sheet2 には、鈴木くんのみの一覧表のデータ 1日目,鈴木くん,点数,・・・ 3日目,鈴木くん,点数,・・・ ・・・ Sheet3 には、佐藤くんのみの一覧表のデータ 2日目,佐藤くん,点数,・・・ 3日目,佐藤くん,点数,・・・ ・・・ Sheet4 には、山田くんのみの一覧表のデータ 2日目,山田くん,点数,・・・ 4日目,山田くん,点数,・・・ ・・・ が、自動的に追加入力されるVBAの記述って、 どうすればいいんでしょうか? VBAに明るい方、どうかよろしくお願いします。

  • エクセル VBA データ入力

    こんにちは、はじめまして。 エクセル・VBA初心者です。 会社に入って3ヶ月になります。 同じファイル内で、入力用シートから 違うシートに表としてデータを転送するため、 本や今まで作ったものを参考にして下のようなVBAを作成したのですがうまくいきません。 Sub 転記() Dim ws0 As Worksheet, ws1 As Worksheet, chikuseki As Range Dim nyuryoku() Set ws0 = Worksheets("Worksheet1") Set ws1 = Worksheets("Worksheet2") nyuryoku = Array("b3", "d3", "f3", "h3") '転記したいセルの位置 Set chikuseki = ws1.Range("f", "g", "k", "q" & Rows.Count).End(xlUp).Offset(1) 'データ蓄積セル For i = 0 To UBound(nyuryoku) chikuseki.Offset(0, i).Value = ws0.Range(nyuryoku(i)).Value ws0.Range(nyuryoku(i)).MergeArea.ClearContents Next masgbox "入力完了" End Sub 十何個あるデータを転送する場合、フォームから入力した方が簡単なのでしょうか? また、表にデータを転記し、そのなかのデータのいくつかを別の表に転記することは、一度の操作で可能ですか? 今週中に仕上げろと言われたので急いでいます、 どうかよろしくお願いします。 質問がまとまっていなくてわかりにくければ申し訳ないです。

  • VBAを使ってセルを検索後別シートのデータを自動入力したいです。

    見ていただきありがとうございます。 エクセルの2000VBAを使って次のようなことを考えています。 シート2に以下のようなデータがあります。 2006/7/20 コード 数量  100  200   200  400 データの数は日によって違います。 シート1には以下の表があります。横軸にはコード縦軸には日付が入っており各対応するセルに数量が入っています。       100  200  300  400 ....←コード 2006/7/1  20  40  100  800 2006/7/2  50  60  200  500   .   .   . 2007/6/30  このような場合、シート2にコマンドボタンを設けて押したときシート2の日付とコード番号によりシート1の表の検索を行って対応するセルにシート2のデータを転記したいのです。シート2のデータは本日分のデータが入った時点でシート1への転記を行います。(1日一回です) また、シート1の表は2007/6/30(これ以降は必要ないので)までの日付がすでに入力されており明日以降のデータの入るセルは空白になっております。 よろしくお願いします。

  • VBA 別シートの最終行に追記

    ExcelのSheet1で作成した表の一部項目を、Sheet2に一覧表としてまとめたいのです。 例えばSheet1にアンケート項目のような入力されていて、毎日使いまわします。 セルA1: 訪問日→固定     セルB1: (日付)→更新 セルA3: お客様指名→固定  セルB3: (氏名)→更新 使いまわすので、1度入力されたものは、Sheet2に一覧表として転記しておきたいのです。Sheet2の一覧表の最終行をみつけて追記していきたいです。 書いてみたのは以下の通り。 Private Sub 登録ボタン_Click() Dim SH1 As Worksheet, SH2 As Worksheet Dim GYO As Long Set SH1 = ThisWorkbook.Worksheets("回答内容") Set SH2 = ThisWorkbook.Worksheets("情報シート") ' Sheet2の最終行を取得 GYO = SH2.Range("$A$65536").End(xlUp).Row ' 最終行の次行を取得 If SH2.Cells(GYO, 1).Value <> "" Then GYO = GYO + 1  ' 現在の収容位置の下に転記 SH2.Cells(GYO, 1).Resize(1, 20).Value = SH1.Range("$c$2:$D$10").Value With SH1 .Range("A3").Copy Destination:=SH2.Range("A2") .Range("B3").Copy Destination:=SH2.Range("B2") End With End Sub 項目は飛び飛びのセルに入力されていて、それらをまとめて一覧表の1行にまとめたいと思っています。 ここでは例としてSheet1[A3][B3]セルをSheet2へ転記していますが、項目はもっといっぱいあります。 記載したコードで実行すると、1回目は転記されますが、2回目以降が追記されていきません。 ' 現在の収容位置の下に転記 のところに問題があると思っています。 全くの初心者が、コードを書くのには無理があると思いますが、どなたか教えていただけないでしょうか。宜しくお願いします。

  • エクセルの自動転記について

    エクセル2003です。 行動予定一覧表を作成中です。 シート1に一覧表 シート2には日付別になっており、 その日付別のを一覧表に自動転記させたいと思っています。 画像をご覧になっていただくのが解りやすいと思うのですが、 項目は、一覧表も日付別も同じものです。 ただ、一覧表にはシート2では欄がなかった日付を加えたいのですが、 これも計算式にて表示出来たらと思っています。 一覧表には、日付別シートの表の中で空欄の場合は、転記されないようにしたいのですが、 可能でしょうか? VBAは苦手なので、出来れば計算式で乗り切りたいと思っています。 何かいい案等があれば教えていただきたいです。 よろしくお願いします。

  • エクセルでデータを蓄積するVBA

    蔵書管理用の一覧表です。 エクセルでデータ入力用のフォームは作ることができたのですがシートに転記するVBAをどのように書けばよいのか分かりません。 データは次々に増えていきます。 A列には番号を入力せずに自動的に番号が増えていくようにしたい。 3番まで入力済みのあとは、自動で「4」と番号が付与されて、下の行に転記されるようにしたい。 VBA初心者です。よろしくお願いします。 A    B      C          D 番号 分類     図書名      冊数 1   文庫本    日本の歴史   3 2   週刊誌    新潮        1 3   月刊誌    月刊ゴルフ    1

  • VBA別シートの同じ日付に値を転記したいのですが

    元データに日付・名前・開始時間・終了時間が入力されていて、人数が150人ほどいます。画像のように元データから別シートの同じ日付に開始時間と終了時間を個人別に転記したいのですが、どうすればいいか悩んでいます。 元データから転記したいデータが1つであれば下記URLを参考にできたのですが、転記したいデータが3つあり、Aさんの4/1~4/30までのあとにBさんの4/1~4/30まで…のように転記したいと思っています。 大変伝わりにくい文章で申し訳ないうえの、VBA初心者のためコピペできる形でお答えいただけると大変助かります。 どなたかご教授いただけないでしょうか…よろしくお願い致します。 参考URL:https://kirinote.com/excelvba-sheet-samedate/

  • 〖緊急〗エクセルのVBAについて質問です。

    エクセルのVBAを使用して、下記の動作を実行したいのですがうまくいきません。 おしえてください。 sheet1に移動したいシート名の一覧を作成し、一覧を参照してシートを移動したいです。 RangeにカーソルをあてるとA1に入力したシート名前が反映しているようなのですが・・・。 sheet1のセルA1に移動させたいシート名を入力しています。 Sub Worksheet() Worksheets(Range("A1")).Activate End Sub ※❝インデックスが有効範囲にありません❞とエラーがでます。 ※同一のBOOK内での作業です。 よろしくおねがいします。

専門家に質問してみよう