- ベストアンサー
ExcelVBAで数式の空白を返さないようにするに
例えば、A1~A10にある値があり、B1~B10に条件があえば上から順に参照される表があるとします。(もし条件の合う値が3つあれば、B1~B3にA列の値を表示します。あわない場合は("")で空白を返します。) この場合、VBAでB列の空白を省いた最終行を取得したいのですが、 = Range("B1").End(xlDown).Row でやると、空白でも数式が入っていたら返してしまうので困っています。 何か良い方法はないでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
井上はるき氏の著書では、誤動作防止のため、Range.End(xlUp)に代えて下記を標準で使用する事を奨めていましたが、楽な方に走ってしまって実行できていません。(自炊してしまった書籍を開くこと無く、書いているので冗長なところ等あるかもしれません。)ご参考まで。 Sub test() Dim myCell As Range With Sheets(1).Columns(2) Set myCell = .Find(What:="*", After:=.Cells(.Rows.Count), LookIn:=xlValues, SearchDirection:=xlPrevious) End With If Not myCell Is Nothing Then Debug.Print myCell.Row End Sub
その他の回答 (2)
- kkkkkm
- ベストアンサー率66% (1731/2601)
以下の例ではいかがでしょう Sub Example() Dim c As Range Dim BottomRow As Long For Each c In Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row) If c.Value <> "" Then BottomRow = c.Row End If Next End Sub
- mar00
- ベストアンサー率36% (158/430)
Sub Macro1() myRow = Cells(Rows.Count, "B").End(xlUp).Row Do While Cells(myRow, "B").Value = "" myRow = myRow - 1 Loop ' End Sub のようにしてみてはどうでしょうか。 もっといい方法があるかもしれませんが。
お礼
私ではまず思いつかない解でした。ありがとうございました。