ページ

2012/04/14

[Excel][VBA]連続したセルの終端の行番号・列番号を取得する

できる逆引き Excel VBAを極める 勝ちワザ700
2010/2007/2003/2002対応 (「できる逆引き」シリーズ)

国本 温子
インプレスジャパン
発売日:2012-02-09



データを入力させたらどれだけデータが入っているかを知りたくなりますよね?
必要なセルだけループ回して処理とかしやすくなりますし。
ということで取得方法を関数にしました。

空白を含まない連続したセルの終端の行番号・列番号を取得する

'右方向(xlToRight)に空白でないセルを探す
'指定した列がすべて空白、または埋まっている場合は256を返す
Function getColumn(row As Long, column As Long) As Long
    getColumn = Cells(row, column).End(xlToRight).Column
End Function

'下方向(xlDown)に空白でないセルを探す
'指定した行がすべて空白、または埋まっている場合は65536を返す
Function getRow(row As Long, column As Long) As Long
    getRow = Cells(row, column).End(xlDown).Row
End Function
欠点としては途中に空白セルがある場合には空白セルの一つで前で止まる。
入力漏れなんかを探すのには使えるかもしれない。

途中に空白を含むセルの終端の行番号・列番号を取得する

'Excelの最大列数(IV=256)から左方向(xlToLeft)に空白でないセルを探す
'指定した行がすべて空白、または埋まっている場合は1を返す
Function getColumn(row As Long) As Long
   getColumn = Range("IV" & row).End(xlToLeft).Column
End Function

'Excelの最大行数(65536)から上方向(xlUp)に空白でないセルを探す
'指定した列がすべて空白、または埋まっている場合は1を返す
Function getRow(column As Long) As Long
    getRow = Range(column & "65536").End(xlUp).Row
End Function
途中で空白セルもある場合はコチラを使えば本当の終端で取得できる。