複数シートのデータを一つのシートに集約する。

いきなりエクセルVBA!

こんばんは!

最近めっきり寒いですね(>_<。)

風が冷たくなってきて手ぶくろ必須ですね。

先日、訓練校の仲間にとてもカワイイ”バスソルト詰め合わせ”を頂きまして、

凍えて帰ってもぬくぬくできる楽しみがあるので、北風に負けず強く生きれています(笑)。

ありがとう。。(*´ー`*)

PixelAnarchyによるPixabayからの画像

「スタンフォード式最高の睡眠」によると、睡眠の質を上げるには

「寝始めから90分の質を高める事が大切!!」なのだそうです。

質を高める為には体の内部、深部体温を寝るタイミングで下がるようにしなければならず、

『寝る90分前にお風呂に入る』というのが良いらしいのです。

(シャワーの場合は30分位前で良いらしい。あとは同じ時間に寝る事6時間以上寝る事も大事だそうです!)

さて、前置きが長くなりましたが、

今日は最近Udemyで勉強中のエクセルのマクロです。

「エクセル兄さん」のマクロ教材の説明が丁寧でわかりやすくておすすめしたいです。

エクセル兄さんの教材をジワジワ進め、やっと職場のNさんから依頼されていた「複数のブックデータを簡単に統合できるマクロ」の作成の所まで来ました:)

いつも沢山のデータをエクセルで集計されている方への情報共有です。

以下コードで複数のブックのデータを一つのエクセルシートに纏める事ができます。

エクセルの開発タブからVBEを開いて張り付けるだけ。(シート名と転記範囲は変更してくださいませ)

Option Explicit 

Sub tougou()

'ワークシート「データ収集」を格納しておく
Dim wsTotal As Worksheet
Set wsTotal = Worksheets("データ収集")

'最終行を取得しておく
Dim MaxRow As Integer
MaxRow = Worksheets("データ収集").Cells(Rows.Count, 1).End(xlUp).Row + 1

'ダイアログから複数のブックを選び、配列にパスを格納する
Dim arrayPath As Variant
arrayPath = Application.GetOpenFilename("Microsoft Excelブック,*.xls?", MultiSelect:=True)

'もしopenPathが配列ならば
If IsArray(arrayPath) Then

    'Forループ(iが1から配列の要素数まで)
    Dim i As Integer
    For i = 1 To UBound(arrayPath)

        '変数を用意し、ブックを開いて格納
        Dim openBook As Workbook
        Set openBook = Workbooks.Open(arrayPath(i))

        '転記したい項目をそれぞれ転記する

        wsTotal.Range("A" & MaxRow).Value = openBook.Worksheets(1).Range("A2").Value
        wsTotal.Range("B" & MaxRow).Value = openBook.Worksheets(1).Range("A1").Value
        wsTotal.Range("C" & MaxRow).Value = openBook.Worksheets(1).Range("B6").Value
        wsTotal.Range("D" & MaxRow).Value = openBook.Worksheets(1).Range("B5").Value
       

        'openBookを閉じる
        openBook.Close

        '次のループのため、最終行を+1しておく
        MaxRow = MaxRow + 1

    Next i

    '処理が終わったことをMsgBoxで出力
    MsgBox "全ブックからデータを抽出しました。"

End If
End Sub

転記した内容をクリアする↓

Sub clear()

'最終行を変数に取得
Dim MaxRow As Integer
MaxRow = Worksheets("データ収集").Cells(Rows.Count, 1).End(xlUp).Row + 1

'2行目から最終行までのデータを削除する
Worksheets("").range("2:"&MaxRow).Value=""

End Sub

です。

繰り返しとか、単純作業を省けたら、結構毎日の仕事の効率が上がって皆楽になるし、

アイディアを考えたり、チェックしたり、たまにぼーっとしたり(笑)他の事に時間を使えると思う。

まだまだ分からない事ばっかりですが、PHPに比べればまだましかも。。w

超初心者の私は、PHPとか難しい言語をやる前に、まずはもう少しマクロで色々できる様になるのが先かもしれません。

VBAマスターしたいなと思っています:)

私もVBA勉強したい!という方はこちらをどうぞ!↓(セールの時は1200円とかなのでお得ですよ。Adobe After Effectsとかプログラミングやwebデザイン講座等沢山買ってしまいました。)

https://www.udemy.com/

それでは。今日はこの辺りで!

ご覧いただきありがとうございました(*´ー`*)