EXCEL365使っています 3つの項目で集計する以下のマクロを組んだんですが 集計行の順番がおかしくなります (画像参照)本来なら C店集計が大阪集計よりも上に来るはずなんですが。
EXCEL365使っています 3つの項目で集計する以下のマクロを組んだんですが 集計行の順番がおかしくなります (画像参照)本来なら C店集計が大阪集計よりも上に来るはずなんですが。 何かマクロでおかしいところありますか? ____________________ Sub 集計3() Application.ScreenUpdating = False Application.DisplayAlerts = False Range("A1").Select Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(5, 8, 9, _ 10, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28), Replace:=False, PageBreaks _ :=False, SummaryBelowData:=True Selection.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(5, 8, 9, _ 10, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28), Replace:=False, PageBreaks _ :=False, SummaryBelowData:=True Selection.Subtotal GroupBy:=3, Function:=xlSum, TotalList:=Array(5, 8, 9, _ 10, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28), Replace:=False, PageBreaks _ :=False, SummaryBelowData:=True ActiveSheet.Outline.ShowLevels RowLevels:=2 Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
Visual Basic | Excel・83閲覧・500
1人が共感しています
ベストアンサー
最初にRange(”A1").Selectしたあと、Selectionを対象にSUBTOTALしているからです。 GroupBy:=1で店名でのSUBTOTAL関数が設定されますと、SELECTIONの最終行にSBUTOTAL関数が入ってきます。 そうするとうまくいきません。 https://note.com/gaku_excel/n/nfb2771567ac3 試しにイミディエイトペインでActivecell.CurrentRegion.Addressを見てみたところ、 最初→$A$1:$AB$23 Groupby:=1の設定が終わった直後→$A$1:$AB$27 Groupby:=2の設定が終わった直後→$A$1:$AB$30 Groupby:=3の設定が終わった直後→$A$1:$AB$36 という風に、選択範囲が変化していきました。 対処方法としては、毎回正しくセル範囲を選択する(Selectionは楽ですが、こういう不具合を出すので、ちゃんとしたシステムを作りたいなら多用は禁物です。SUBTOTALする前に毎回きちと範囲選択をするとよいと思います)か、不具合を出す箇所が分かっているので、全部のSUBTOTAL設定が終わった後でC店の集計行だけ切り取って上に移動させるか、そもそもこういう集計はSUBTOTALなんて使わずに、ピボットテーブルという専門の機能がExcelには用意されていますので、そちらを使うか等、いろいろ考えられますが、質問主様の環境とスキルに合わせて、お好きに対処してください。
質問者からのお礼コメント
回答ありがとうございます。 とりあえず不必要ですが最終行に空データを置くことでなんとかなりそうです。
お礼日時:6/30 23:41