1/06/2024

Excel。VBA。小計や合計行を削除して、手早くデータだけの表をつくりたい【EntireRow】

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プロパティをつかうと、手早く削除することができます。