• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル:他ファイルを一括集計したい!)

エクセルで他ファイルを一括集計!マクロ化の方法は?

このQ&Aのポイント
  • エクセルで業務を行っている際、複数のファイルを一括で集計したい場合、マクロを使用することでボタンひとつで集計が可能です。具体的な操作手順としては、データ元ファイルと集計ファイルを準備し、データをコピーして貼り付ける作業を繰り返すことで集計が行われます。
  • 質問内容では、日付毎やシート毎にバラバラになっているデータをマクロ化する方法や、順番に処理を自動で行う方法、指定した条件に応じて処理を行う方法について質問されています。これらの操作はマクロを組むことで実現できます。
  • マクロはエクセルの強力な機能であり、複雑な作業を自動化することができます。ただし、マクロを作成する際には注意が必要であり、正確な操作手順や条件の設定が必要です。また、データの変更やファイルの配置によってマクロの動作が変わる場合もあるため、注意が必要です。

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

  • ベストアンサー
  • kamejiro
  • ベストアンサー率28% (136/479)
回答No.1

 質問者さんの内容では、Aファイルのシートやセルの形式を具体的に挙げてないので具体的な回答はできません…。  どのシート名のどのセル番地に製品番号が入っているのか、製品番号の他にどんな項目があるのか…。何行目までデータがあるのか。  一括処理を一気に考えるには、一つ一つの手順をマクロにする必要があります。  別ファイルのセルの値をコピー&貼付するには、「ファイル名」、「シート名」の指定が必要です。仮に、Aファイルを「Book1.xls」、Bファイルを「Book2.xls」として、Aファイルの「Sheet1」の「A1」の値をBファイルの「Sheet2」の「B1」に貼り付けるマクロは、   Windows("Book1.xls").Activate   Sheets("Sheet1").Select   Range("A1").Select   Selection.Copy   Windows("Book2.xls").Activate   Sheets("Sheet2").Select   Range("B1").Select   ActiveSheet.Paste  となります。セル指定をRange関数ではなくCells関数にすると数値で何行何列目の指定が出来ます。   Range("A1").Select → Cells(1, 1).Select   Range("B1").Select → Cells(1, 2).Select これを応用してAファイルの「Sheet1」の「A1~A10」の値をBファイルの「Sheet2」の「B1~B10」に貼り付けるマクロは、   For i = 1 To 10     Windows("Book1.xls").Activate     Sheets("Sheet1").Select     Cells(i, 1).Select     Selection.Copy     Windows("Book2.xls").Activate     Sheets("Sheet2").Select     Cells(i, 2).Select     ActiveSheet.Paste   Next i さらに、Aファイルのシート名を固定ではなく、切り換える場合は、そのためのインデックスのためのシートが必要です。   「Book3.xls」の「Sheet1」のシートの「A1」、「A2」、「A3」のセルにそれぞれ「Sheet1」、「Sheet2」、「Sheet3」と入力しておきます。 Aファイルの「Sheet1」の「A1~A10」の値をBファイルの「Sheet2」の「B1~B10」に、 Aファイルの「Sheet2」の「A1~A10」の値をBファイルの「Sheet2」の「C1~C10」に、 Aファイルの「Sheet3」の「A1~A10」の値をBファイルの「Sheet2」の「D1~D10」に貼り付けるようにするには、   For i = 1 To 3     Windows("Book3.xls").Activate     Sheets("Sheet1").Select     シート名 = Cells(i, 1)     For j = 1 To 10       Windows("Book1.xls").Activate       Sheets(シート名).Select       Cells(j, 1).Select       Selection.Copy       Windows("Book2.xls").Activate       Sheets("Sheet2").Select       Cells(j, i + 1).Select       ActiveSheet.Paste     Next j   Next i  となります。なお、条件付きのループには「For文」よりも「Do文」が良いかとも思います。  また、データがなければ空白すると言った処理は「If文」で判断します。  回答は途中までです。  マクロは一つ一つの操作手順を記録してそれを一括処理するものです。解法として「マクロの自動記録」で質問者さんがいつも操作している手順を記録して、それで作成されたマクロのソースに手を加えると良いと思います。  それとマクロで処理しやすいようにAファイルのシートセル位置を決めておくと良いです。

gottachan
質問者

お礼

 同僚と一緒に手順をおっていき、業務に生かす事にしました。  ご回答ありがとうございました。

関連するQ&A