- ベストアンサー
エクセル・マクロで最終行を表示する方法
- エクセル・マクロを使用して、指定した列の最終行を表示する方法について説明します。
- 今回の場合、C列に入力された式が0以外の値や文字である場合、その行を最終行として表示します。
- マクロを作成し、C列の最終行を特定するために、RangeオブジェクトとEndメソッドを使用します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>今回はC列に >C1=A1&B1 >という式が入力されている場合 >A列とB列が空白の場合、C列には0が表示されます。 >したがって、下記のマクロだとこの0の行が最終行となります。 これは少し勘違いがあるようです。 C1=A1&B1 の式は文字列結合ですから A1,B1空白のときに、0が表示されることはありません。 空白のとき0になるのは、 =A1 とか =A1+B1 とかの場合です。 また、C列には式が入っているので常に結果が入っていることになり その結果が空白あれなんであれ、Range("C65536").End(xlUp).Row では、 常に式の入っている最終行が取得されることになります。 で、簡単なのは、A列、B列の最終行の大きい方をとる方法でしょう。 '------------------------------------------- Sub 最終行表示t() Dim MaxRow As Long If Range("A65536").End(xlUp).Row > Range("B65536").End(xlUp).Row Then MaxRow = Range("A65536").End(xlUp).Row Else MaxRow = Range("B65536").End(xlUp).Row End If MsgBox MaxRow End Sub '------------------------------------ それから、最終行を取得するときは、A65536は使わないで Range("A" & Rows.Count).End(xlUp).Row のように、Rows.Countを使った方がいいでしょう。 xl2007ではシートの最大行が違いますから。 列も同様。 以上です。
その他の回答 (3)
- keithin
- ベストアンサー率66% (5278/7941)
文字通りmaxを取ってみる事で良いです。なんども同じ数字を調べに行く必要もありません。 sub macro1() dim maxrow as long maxrow = application.max(range("A65536").end(xlup).row, range("B65536").end(xlup).row) msgbox maxrow end sub
お礼
ご回答ありがとうございました。 希望どおりにできました。
- web2525
- ベストアンサー率42% (1219/2850)
A,B列にデーターが入っている場合のC列の最終行を求めたいのであれば A列かB列の最終行を取得すれば問題ないのでは?
お礼
アドバイスありがとうございます。
- BookerL
- ベストアンサー率52% (599/1132)
スマートではないですが、やりたいことをそのまま書いてみたら? Sub 最終行表示() Dim maxrow As Long maxrow = Range("C65536").End(xlUp).Row While Range("C" & maxrow).Value = "" maxrow = maxrow - 1 Wend MsgBox maxrow End Sub なお、 >A列とB列が空白の場合、C列には0が表示されます。 はほんとにそうなりますか? A列B列ともに空白なら、C列も空白になるのでは?
お礼
ご回答ありがとうございました。 希望どおりにできました。 >はほんとにそうなりますか? A列B列ともに空白なら、C列も空白になるのでは? すみません。おっしゃるとおりです。
お礼
ご回答ありがとうございました。 希望どおりにできました。 >これは少し勘違いがあるようです。 すみません。私の勘違いでした。