Excel。VBA。小計や合計行を削除して、手早くデータだけの表をつくりたい
<VBA:EntireRowプロパティ>
データを読み込んでみたら、データの途中に小計の四半期計の行や合計行などが含まれていました。
データだけの表としてつかいたいので、途中にある計算行は除きたいわけです。
今回のように3行程度ならば、手動でもいいのですが、データ量が増えた場合、面倒な作業になってきます。
そこで、Excel VBAでプログラム文をつくって対応してみることにします。
Sub 集計行削除()
Dim i As Long
Dim lastrow As Long
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
For i = lastrow To 1 Step -1
If Cells(i, "a") Like "*計" Then
Cells(i, "a").EntireRow.Delete
End If
Next
End Sub
では、実行します。
小計行の四半期計や合計行を削除することができました。
それでは、プログラム文を確認していきます。
お馴染みの宣言文ですね。
Dim i As Long
Dim lastrow As Long
For~Next文で繰り返しますので、繰り返しの回数を算出するのが次の行です。
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
削除する時のポイントは、データの下側から処理をさせないといけません。
そのため、Step-1させています。
For i = lastrow To 1 Step -1
繰り返しを実行すると1行下のセルが上に移動してしまうので、処理の対象外になってしまうからです。
そして、集計行なのかを判断するIf文です。
If Cells(i, "a") Like "*計" Then
Like “*計”は、「計という文字で終わる」ことを意味しています。
今回は、四半期集計も合計も「~計」と計で終わるので、この条件で対応することができます。
もし、異なっていたら、一つずつ条件を作る必要があります。
そして、処理のメイン。
Cells(i, "a").EntireRow.Delete
EntireRowメソッドは、行全体を選択することができます。
それを、Delete。
つまり削除するというプログラム文だというわけです。
このように、該当する条件を消去するには、EntireRowプロパティをつかうと、手早く削除することができます。