次の方法で共有

Excel 2013 で名簿を統合したい

Anonymous
2015-07-12T15:17:04+00:00

EXCEL2013を使っています。複数のブック中のそれぞれ一つのシートに、同じ体裁の名簿がずらーっと並んでいます。「同じ体裁」というのは、住所/氏名/電話番号/年齢/性別の欄が、どのブック(というかシート)でもぴったり同じ並びで横に続いているの意です。A、B、C、D、Eの横一列にです。

そして縦にはデータがずらーっと並んでいるわけです。上から順に、各人の住所/氏名/電話番号/年齢/性別データが連なっています。こんな風に⇩

住所/氏名/電話番号/年齢/性別

住所/氏名/電話番号/年齢/性別

住所/氏名/電話番号/年齢/性別

[以下繰り返し]

この体裁のシートが、22のブックのなかにそれぞれ一つずつあるわけです。

そしてそれらを、ひとつのブックのひとつのシートに統合したいのです。

検索をかけると技を説明したページがたくさん見つかるのですが、各支店の売上データをひとつのブック(の一シート)に統合して集計するとこうなるよ式のものばかりで、私が今やらなくてはいけない、名簿がひとつのブックのひとつのシートに縦にずらーっと並ぶものの作り方がわかりません。

コピー&ペーストを繰り返すのではなく、です。

どなたかお力をお貸しください。

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

4 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2015-07-13T09:58:44+00:00

    こんばんわ。

    はじめまして。

    事務方は、しょっちゅう遭遇する業務ですので

    私もマクロを用意してささっと仕上げるようにしています。

    最初は、大変かもしれませんが用意しておくと業務が捗ります。

    私の場合は、2種類のVBAで処理しています。

    ・複数ブックからシートを集めて1つのブックにまとめる。この段階では、複数シート。

    ・複数あるシートを統合するシートを先頭に追加する。

     例)北海道、東北、関東、・・・⇒先頭に全国シートを追加。

       全国シートは、すべてのデータをまとめあげた一覧表となる。

    基本的に、公開コードを参考にして自分流にアレンジしています。

    コード提示も可能ですが、あくまでも参考コードでカスタマイズなどには

    対応できませんので、多少のチューニング作業に取り組んでいただく必要が

    生じます。

    また、自己流かつ必要時に即席作成したものばかりですので、まずい部分も含み

    リスクは伴うことは否めません。

    時間との勝負だと思いますが、やってみられるのであれば応援しますよ。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2015-07-13T05:06:53+00:00

    私は流用させてもらっています。私の場合まず

    Sub ブックを統合するマクロ()

        Dim sFile As String

        Dim sWB As Workbook, dWB As Workbook

        Dim dSheetCount As Long

        Dim i As Long

        Const SOURCE_DIR As String = "D:\新しいフォルダ"

        Const DEST_FILE As String = "D:\臨時フォルダ\AllReports.xlsx"

        Application.ScreenUpdating = False

        sFile = Dir(SOURCE_DIR & "*.xls*")

        If sFile = "" Then Exit Sub

        Set dWB = Workbooks.Add(DEST_FILE)

        dSheetCount = dWB.Worksheets.Count

        Do

            Set sWB = Workbooks.Open(Filename:=SOURCE_DIR & sFile)

            sWB.Worksheets("報告書").Copy After:=dWB.Worksheets(dSheetCount)

            ActiveSheet.Name = Range("A1").Value

            sWB.Close

            sFile = Dir()

        Loop While sFile <> ""

        Application.DisplayAlerts = False

        For i = dSheetCount To 1 Step -1

            dWB.Worksheets(i).Delete

        Next i

        Application.DisplayAlerts = True

        dWB.SaveAs Filename:=DEST_FILE

        dWB.Close

        Application.ScreenUpdating = False

    End Sub

    で ブックを統合したAllReports.xlsxに下記マクロを貼り付けて実行しています。

    Sub シートを統合するマクロ()

        '★AllReports.xlsxにこのマクロをコピー貼り付けして実行すること

        Dim sWS As Worksheet  'データシート(コピー元)

        Dim dWS As Worksheet  '集約用シート(コピー先)

        Set dWS = Worksheets.Add

        dWS.Name = "AllData"

        '集約用シートの2行目以降を削除

        dWS.UsedRange.Offset(1, 0).Clear

        '各シートの2行目以降のデータを、集約用シートの末尾にコピー

        For Each sWS In Worksheets

            If sWS.Name <> dWS.Name Then

                With sWS.UsedRange

                    'コピー元シートにデータが1件以上ある場合

                    If .Rows.Count > 1 Then

                        .Offset(1, 0).Resize(.Rows.Count - 1).Copy _

                            Destination:=dWS.Cells(Rows.Count, 1). _

                                            End(xlUp).Offset(1, 0)

                    End If

                End With

            End If

        Next sWS

        '集計用シートをA列で並べ替え

        'dWS.UsedRange.Sort Key1:=Range("A1"), Header:=xlYes

    End Sub

    これで一応複数ブックのデータを1ブックの1シートに統合しています。

    もっといい方法があると思いますので識者の回答をお待ちください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2015-07-13T04:10:20+00:00

    これってつまりVBAを自分で組め(ここにあるのを流用せよ)ってことですか。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2015-07-12T22:03:22+00:00

    http://www.moug.net/tech/exvba/0060003.html

    の「複数ブックのシートを1つのブックにコピーする」と

    http://www.moug.net/tech/exvba/0040062.html

    「複数のシートのデータを1つのシートにコピーする」

    が参考になるのではないでしょうか。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません