Excel。VBA。小計機能を手早く解除するには、どうしたらいい。
<Excel VBA:RemoveSubtotal>
項目ごとの集計を手早く行うことができる、「小計機能」。
ただ、少々面倒なのが、小計した結果から、元に戻す場合です。
小計のダイアログボックスを表示して、すべて解除のボタンをクリックする。
そして、並べ替えをしないと小計機能が有効に使えないので、元の戻す並べ替えをしなければいけません。
そこで、手早く解除するために、Excel VBAでプログラムをつくってみましょう。
Sub 小計リセット()
Range("a1").CurrentRegion.RemoveSubtotal
With ActiveSheet.Sort
.SortFields.Clear
.SortFields.Add2 Key:=Range("a1"), Order:=xlAscending
.SetRange Range("a1").CurrentRegion
.Header = xlYes
.Apply
End With
End Sub
実行して確認してみましょう。
小計機能から通常の表に戻すことができました。
では、プログラムを確認しておきます。
Range("a1").CurrentRegion.RemoveSubtotal
これは、A1を起点とする範囲を、「RemoveSubtotal」=小計解除するという意味です。
たった一行だけで、小計機能を解除することができるというわけです。
あとは、並べ替えをして、元に戻す処理をしています。
With ActiveSheet.Sort
.SortFields.Clear
.SortFields.Add2 Key:=Range("a1"), Order:=xlAscending
.SetRange Range("a1").CurrentRegion
.Header = xlYes
.Apply
End With
並べ替えは、「並べ替えのダイアログボックス」にある項目を設定するイメージでプログラムをつくります。
「SortFields.Add2 Key:=Range("a1"), Order:=xlAscending」
この行は、A1の見出しである、「NO」を「xlAscending=昇順」で処理するように設定しています。
「SetRange Range("a1").CurrentRegion」
A1を起点として連続する範囲を並べ替えの対象としています。
「Header = xlYes」
一行目を見出し行としますかということで、見出し行なので、「xlYes」と設定します。
このように、プログラムをつくるだけで、小計機能を解除することができます。