[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『最終行 End(xlUP).Rowについて』(しのみや)
教えてください。 データが入っている最終行の選択をVBAでしています。
『状況』 ★データが入っている列が以下のような場合 A 1 2 3 【見出し】 4 商品A 5 6 商品B 7 商品B 8 商品C 9 ↓ 255 合計
最終行 = Range("A255").End(xlUP).Row とすることで、最終行の8は取ってこれています。 (間に空白行があるので、下から数える)
★データが入っている列が以下のような場合 A B 1 2 3 【見出し】 【見出し2】 4 商品A いいい 5 あああ 6 商品B 7 商品B えええ 8 商品C いいい 9 おおお ↓ 255 合計
最終行の9を取りたいのです。 ちなみにデータはAH列まで入っていて最終行がどこかわかりません。
『考えたこと』 AI4に =IF(COUNTA(A4:AH4)=0,"",COUNTA(A4:AH4)) として、どこかのセルに文字が入っていると0以外の数字が入るようにして AI列で 最終行 = Range("AI255").End(xlUP).Row としてみましたが、 "" も文字が入っていると認識されるようでした。
良い方法はありませんか?
< 使用 Excel:Excel2010、使用 OS:Windows10 >
で、いろいろなやり方を議論してましたね。
とても、参考になりました。
(う) 2019/05/30(木) 15:32
ありがとうございます…奥が深いですね。 そもそもEnd(xlUP).Rowの扱いがアレなんですね。
回避策…
AI4に =IF(COUNTA(A4:AH4)<>0,ROW(),"") として、
AI255に =MAX(AI4:AI254) で、最終行を表示。
VBAでは Cur最終行 = Range("AH255").Value としました。 (しのみや) 2019/05/30(木) 16:31
どうしてそんな面倒なこと? Sub test() MsgBox Columns("a:ah").Find("*", , , , 1, 2).Row End Sub (seiya) 2019/05/30(木) 17:36
>Columns("a:ah").Find("*", , , , 1, 2).Row をお借りして試してみたのですが
A B C D 1 2 3 【見出し】 【見出し2】 【見出し3】 【見出し4】 4 商品A いいい 20 =if(C4="","",C4/10) 5 あああ =if(C5="","",C5/10) 6 商品B 10 =if(C6="","",C6/10) 7 商品B えええ 5 =if(C7="","",C7/10) 8 商品C いいい =if(C8="","",C8/10) 9 おおお 3 =if(C9="","",C9/10) ↓ 254 =if(254="","",254/10) 255 合計 =sum(C4:C254)
(もともとはEnd(xlUP).Rowの質問でしたので、記載がもれていましたが)
実際のデータは【見出し4】のように、式が入っている列があり
データ終了行 = Range("A4:AH254").Find("*", , , , 1, 2).Row とすると
式が入っている行も、何かが入っていると判定されてしまい
データ終了行は 254となります。(数式を消すと、消した行は判定されなくなります)
Find関数について調べてみて、
私の調査不足かもしれませんが対応できなさそうに思いますが、
上記のデータでの対応は可能でしょうか。
私の書いた回避策は、エクセルに基準の式を追加しないといけないため、
VBAのみで行数が取れればありがたいです。 (しのみや) 2019/06/05(水) 11:51
> データ終了行 = Range("A4:AH254").Find("*", , , , 1, 2).Row データ終了行 = Range("A4:AH254").Find("*", , xlValues, , 1, 2).Row にして下さい。 (seiya) 2019/06/05(水) 12:03
ありがとうございました。 頂いた内容で確認しなおして見つけました。 xlFormulas 検索対象を数式に指定 xlValues 検索対象を値に指定 xlComents 検索対象をコメント文に指定確認しなおす 助かりました。 (しのみや) 2019/06/05(水) 16:09
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.