Excel VBAで空白行を除いた、入力行数を取得する:Forループ使用

データ入力がある行数をカウントするVBAです。



Homeに戻る > Excel セルのTipsへ

データ入力がある行数をカウントする関数がないので、VBAを使い作成します。

方法は、入力がある最終行から上方向に順にチェックし、データがあればカウントします。

VBAのポイントはCellsを使わずに、Rangeを使用していることです。

Rangeを使用することで、列名をAやBのように指定できるので、列の変更が直観的にできます。

COUNTIF関数やCOUNTBLANK関数を使い同様の結果を得ることが可能ですが、VBAを使い総当たりでチェックする方法は他の用途に応用できます。

例えば商品コードに「abc」、商品名に「化粧」が含まれるデータ数をカウントするなど、より複雑な処理が可能です。

入力がある最終行を取得するVBAは「入力されている最終位置、先頭位置の取得」にも掲載しています。



空白行を除いた、入力行数を取得するExcel VBA

Excel VBAシートコード

コマンドボタン クリックイベント VBAの説明

  1. 検索する最小の行数をセットします。必要なければ0にしてください。
  2. 入力されている最終行を取得します。
  3. 検索する最小の行数と最終行を比較し、最終行が大きければ調査を実行します。
  4. 最終行から上方向にForでループします。
  5. データがあればカウントします。
  6. 結果をコマンドボタンに表示します。
Private Sub CommandButton1_Click()
    Dim last As Long
    Dim i As Long
    Dim count As Long
    Dim minrow As Long
    
    '捜す最小の行
    minrow = 8
    '最終行を取得
    last = ActiveSheet.Range("A65536").End(xlUp).Row
    'データが入力されている場合
    If last >= minrow Then
        count = 1
        '1行づつ捜す
        For i = last - 1 To minrow Step -1
            'データが入力されている場合
            If Range("A" & i) <> "" Then
              count = count + 1
            End If
        Next
    End If
    '結果の表示
    CommandButton1.Caption = count
End Sub

VBEの入力画面

Option Explicitを入力し、バグの予防をしています。
VBEの入力画面


実行結果のシート

Excel2013の実行画面を追加しました。
捜す最小の行を8にしているので、実行結果は4になっています。
Excel2013の実行画面

入力がある行数「6」がコマンドボタンに表示されています。

空白行を除いた、入力行数の取得 実行結果


Homeに戻る > Excel シートのTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved