- ベストアンサー
VBA 最終行列の取得(空白混み)
VBA 最終行列の取得(空白混み) 例えば以下のような場合正しくカウントするにはどの様にしたら良いでしょうか □→空白セル ■→データあり □ABCDEFGH 1□□□□□□□□ 2■■■■■■■■ 3■■■■■■■■ 4■■■■■■■■ 5□□□□□□□□ 6■■■■■■■■ 期待する戻り値 maxRow→6 maxColumn→8 行は最終行から特定可能ですが その方法だと列は1か0を返してくると思います。 最大値を求める手法はどんな物が考えられるでしょうか
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Activeは余計でしたね、 Cells.SpecialCells(xlLastCell).Row Cells.SpecialCells(xlLastCell).Column
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
私は Sub test01() lr = Range("A1048576").End(xlUp).Row MsgBox lr rc = Range("XFD2").End(xlToLeft).Column MsgBox rc End Sub でやってます。 欠点もありますが、ほとんどの場合有効でしょう。 範囲の底や右辺列が、凸凹の場合は、どうするか。 全列や全行について上記をやって、最大値を採るか。 具体的な数字を使うのが野暮ったいなら Sub test02() MsgBox Rows.Count MsgBox Columns.Count End Sub を使って Sub test03() MsgBox Range("A" & Rows.Count).End(xlUp).Row MsgBox Cells(2, Columns.Count).End(xlToLeft).Column End Sub ーー 普通はエクセルの表はCurrentRegionで捉えられるもの(行・列を)使うことを予想しているように想像する。
お礼
御回答有難う御座います。 質問文にもありますが、最終行から特定する方法だと その凹凸や1行目が空白だった場合に対応出来ないと思います。 また例は例であって今回のデータが毎回1行目空白と言う訳ではなく、 1列目がMAX値よりも足りない事も想定されます。 全要素数を確認するのも考えましたが1万行くる可能性もあったので 他に手法が無いか質問した次第です。
- mt2015
- ベストアンサー率49% (258/524)
シート上でCtrl+Endをやってみてください。 使用範囲の右下が選択されます。 同じことをVBAでやると最終行と列はこうなります。 ActiveCell.SpecialCells(xlLastCell).Row ActiveCell.SpecialCells(xlLastCell).Column
お礼
御回答有難う御座いました。 期待する値がちゃんと取れました。