[[20191203202107]] 『最終行の取得』(ドン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『最終行の取得』(ドン)

エクセルVBAで最終行の取得方法を教えてください。

(1)
A列の最終行の取得の場合、
MaxRow = Range("A:A").End(xlUp).Row
これで取得できると思いました。

しかし、A列には、見た目は空白でも実際は関数が入力されています。
=IF(B1="","",B1)

すると、見た目は空白でも関数が入力されている行を取得してしまいます。

そのような関数が入力されていても無視して、実際にA1が表示さている最終行を取得したいです。

A列には数値が入力されているので、
「0より大きい値が入力されているA列での最終行」など条件を絞れば取得できるのでしょうか。
その場合、どのように入力すれば良いでしょうか。

(2)
(1)ができない場合、C1:E100で入力されている中での最終行を取得でいないでしょうか。
例えばC列は1行、D列は10行、E列は50行、入力されていると、50行を取得する方法を教えてください。
C〜E列には、数値か入力されているか空白で、関数も入力されていません。

よろしくおお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows8 >


 A列を選択して、検索と選択→ジャンプ、定数、OK。
 選択された塊の中から、取得。
 手順としては、こんな感じ。
(BJ) 2019/12/03(火) 20:59

VBAで一発で最終行を取得する方法ですよ・・・
(ドン) 2019/12/03(火) 21:12

MsgBox Columns(1).Find("*", LookIn:=xlValues, SearchDirection:=xlPrevious).Address

(マナ) 2019/12/03(火) 21:14


Range("B:B").End(xlUp).Row

ではだめなのでしょうか?

(マナ) 2019/12/03(火) 21:16


マナさんありがとうございます。
B列も関数が入力されたいます。
(ドン) 2019/12/03(火) 21:38

(マナ)さんの 2019/12/03(火) 21:14の指摘ではNGだったのでしょうか?
(γ) 2019/12/03(火) 23:46

別案ですが、A列で必要な部分には必ず多めに数式が書かれているのであれば、空欄は数値判定されず文字列判定される事を利用して、文字列判定された行の1行上を得る、とか?
 MaxRow = Range("A:A").SpecialCells(xlCellTypeFormulas, xlTextValues).Row - 1
(???) 2019/12/04(水) 09:54

 マナさんのFind使う方法がファイナルアンサーだと思いますが、
 最終行を取得したいという質問をされる方は、
 おおよその場合、その後工程があるので、
 後工程も含めて聞いてみたいところです。
 別解がある場合もあるので。

 追伸
 MaxRow = Range("A:A").End(xlUp).Row
 これでホントに最終行取れてますか? この場合、どこを起点に .End(xlup)なのだろう?
(´・ω・`) 2019/12/04(水) 10:25

(マナ)さんの 2019/12/03(火) 21:14の指摘で成功しました。
ありがとうございました。
(ドン) 2019/12/04(水) 19:30

ちなみに、そのコードの意味は理解されていますか?
A1セルから後ろ方向に検索することで、最終行から上に向かって、
空白以外のなにかがあればマッチするということです。
理解されていれば余計なお世話かもしれないが、
結果だけ飲み込むのはあまり得策とは言えませんので老婆心ながら。
(γ) 2019/12/04(水) 19:51

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.