• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel 2007 マクロ 表の集計について)

Excel 2007 マクロ 表の集計について

このQ&Aのポイント
  • Excel 2007を使用して、2つのシート(Sheet1とSheet2)の情報を集計し、Sheet3に反映する方法を知りたいです。
  • Sheet1のC列、D列、E列とSheet2のC列が空欄の場合はSheet3に反映しないようにしたいです。
  • Sheet1のC列、D列、E列とSheet2のC列のいずれかに数値が入っている場合にはSheet3に行を反映したいです。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

例によって実際のシートがご質問に掲示されたサンプルと違うと,失敗します。 Sub Macro1()  Dim a1 As String  Dim a2 As String  'あれこれ準備  Worksheets("Sheet2").Range("B1").Value = Worksheets("Sheet1").Range("B1").Value  Worksheets("Sheet3").UsedRange.ClearContents  a1 = Worksheets("Sheet1").Range("A1").CurrentRegion.Offset(0, 1).Address(ReferenceStyle:=xlR1C1)  a2 = Worksheets("Sheet2").Range("A1").CurrentRegion.Offset(0, 1).Address(ReferenceStyle:=xlR1C1)  'データタブの「統合」の機能  Worksheets("Sheet3").Range("A1").Consolidate _   sources:=Array("Sheet1!" & a1, "Sheet2!" & a2), _   Function:=xlSum, _   TopRow:=True, _   LeftColumn:=True, _   CreateLinks:=False  '空白行の抽出と削除  With Worksheets("Sheet3")   With .Range("A1:E" & .Range("A65536").End(xlUp).Row)    .AutoFilter field:=2, Criteria1:="="    .AutoFilter field:=3, Criteria1:="="    .AutoFilter field:=4, Criteria1:="="    .AutoFilter field:=5, Criteria1:="="   End With   .AutoFilter.Range.Offset(1).Delete shift:=xlShiftUp   .AutoFilterMode = False  End With End Sub

hyogara777
質問者

お礼

ご回答ありがとうございました。問題なく動きました。コメントまで入れて頂き非常に助かります。

その他の回答 (1)

  • seastar3
  • ベストアンサー率69% (99/142)
回答No.2

マクロよりは関数式の埋め込みでできそうです。 シート1とシート2は多数データがありそうですから、SUMIF()関数が適当でしょう。 シート1とシート2が100行以内と想定します。そしてシート3のりんごの行の各列に以下の関数を埋め、品物の種類分だけ下方向にコピーします。 国産の列 : =SUMIF(Sheet1!$B$3:$E$102,$A3,Sheet1!$C$3:$C$102) 外国産の列: =SUMIF(Sheet1!$B$3:$E$102,$A3,Sheet1!$D$3:$D$102) 不明の列 : =SUMIF(Sheet1!$B$3:$E$102,$A3,Sheet1!$E$3:$E$102) 本数の列 : =SUMIF(Sheet2!$B$3:$C$102,$A3,Sheet2!$C$3:$C$102) もし、100件以上のデータがあるときは、102という数を増やして使います。

hyogara777
質問者

お礼

ご回答ありがとうございました。関数での解決方法は知りませんでした。参考にさせていただきます。