複数の人に同じエクセルファイルを配って記入してもらい、後日エクセルファイルを回収するような業務はよくあることだと思います。
集めたファイルが少量であればひとつずつ開いて転記していくことは簡単かもしれませんが、数十人、数百人となると1日では終わりません。転記する項目が多ければさらに大変でしょう。
こんな時はマクロを使いましょう。数秒~数分で終わるでしょう。
今回は集めたエクセルファイルを自動で転記するマクロを紹介します。
やりたいこと
複数のエクセルを1つのエクセルにまとめる。
やりたいことをくわしく
転記元ファイルの例。下記のように4つの項目が入力されたエクセルファイルが複数あると想定します。
複数のエクセルファイルを1つのエクセルファイルに転記する。
つくりかた
1.デスクトップにフォルダを1つ作ってください。
2.集めたエクセルファイルを、上記で作成したフォルダに入れてください。
- ファイル名が同じだと、「上書き」されますので注意してください。
- フォルダには、転記したいエクセルファイル以外のファイルをいれないようにしましょう。
3.転記先のエクセルファイルを作ります。エクセルを起動してください。※すでに転記先のエクセルファイルがある場合はそれを開いてください。
4.転記先のエクセルファイルが起動したら、「開発」タブの「Visual Basic」ボタンをクリックしてください。
5.起動した画面のメニューから「挿入」の「標準モジュール」をクリックしてください。
6.白いウィンドウが現れます。
7.白いウィンドウに、下記をコピーして貼り付けてください。
Sub tenki() Dim folder As String Dim file As String Dim book As Workbook Dim i As Integer i = 2 With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then folder = .SelectedItems(1) End If End With file = Dir(folder & "\*.xlsx") Do While file <> "" Set book = Workbooks.Open(folder & "\" & file) ThisWorkbook.Worksheets("Sheet1").Range("A" & CStr(i)).Value = book.Worksheets("Sheet1").Range("B3").Value ThisWorkbook.Worksheets("Sheet1").Range("B" & CStr(i)).Value = book.Worksheets("Sheet1").Range("C3").Value ThisWorkbook.Worksheets("Sheet1").Range("C" & CStr(i)).Value = book.Worksheets("Sheet1").Range("D3").Value ThisWorkbook.Worksheets("Sheet1").Range("D" & CStr(i)).Value = book.Worksheets("Sheet1").Range("C4").Value file = Dir() i = i + 1 book.Close Loop End Sub
8.以上で完成です。マクロを動かす方法は、下記ボタンをクリックして確認してください。
9.マクロを動かすと、フォルダを選択するウィンドウが出ますので、「2.」で作ったフォルダを選んでください。
改造ポイント
この部分が転記しているプログラムです。主にこの部分を改造します。
ThisWorkbook.Worksheets("Sheet1").Range("A" & CStr(i)).Value = book.Worksheets("Sheet1").Range("B3").Value ThisWorkbook.Worksheets("Sheet1").Range("B" & CStr(i)).Value = book.Worksheets("Sheet1").Range("C3").Value ThisWorkbook.Worksheets("Sheet1").Range("C" & CStr(i)).Value = book.Worksheets("Sheet1").Range("D3").Value ThisWorkbook.Worksheets("Sheet1").Range("D" & CStr(i)).Value = book.Worksheets("Sheet1").Range("C4").Value ThisWorkbook.Worksheets("Sheet1").Range("E" & CStr(i)).Value = book.Worksheets("Sheet1").Range("C8").Value
1.転記元のエクセルファイルのシート名を変更する場合。
2.転記元のセル番地を変更する場合。
3.転記する項目を増やす場合。
3.1.行をコピペして改造します。
3.2.貼り付けた方を下記のように改造します。
3.3.上記の例であれば、1行増えて下図のように改造することになります。
このプログラムは1回の集計を想定しています。転記元のファイルが増えて再集計するときは転記先ファイルに記入されているデータを削除してからマクロを動かしましょう。
さいごに
アンケートや、日報などをエクセルで管理しているケースはよくあります。これらは入力には便利ですが、集計するとなると大変手間になります。今回のマクロを使って少しでも効率化が成功できればと思います。
逆に1つのファイルからデータの分だけエクセルファイルを作りたい時はこちら