• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル・マクロで最終行を表示することについて)

エクセル・マクロで最終行を表示する方法

このQ&Aのポイント
  • エクセル・マクロを使用して、指定した列の最終行を表示する方法について説明します。
  • 今回の場合、C列に入力された式が0以外の値や文字である場合、その行を最終行として表示します。
  • マクロを作成し、C列の最終行を特定するために、RangeオブジェクトとEndメソッドを使用します。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

>今回は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ではシートの最大行が違いますから。 列も同様。 以上です。

saya1012
質問者

お礼

ご回答ありがとうございました。 希望どおりにできました。 >これは少し勘違いがあるようです。 すみません。私の勘違いでした。

その他の回答 (3)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

文字通りmaxを取ってみる事で良いです。なんども同じ数字を調べに行く必要もありません。 sub macro1() dim maxrow as long maxrow = application.max(range("A65536").end(xlup).row, range("B65536").end(xlup).row) msgbox maxrow end sub

saya1012
質問者

お礼

ご回答ありがとうございました。 希望どおりにできました。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

A,B列にデーターが入っている場合のC列の最終行を求めたいのであれば A列かB列の最終行を取得すれば問題ないのでは?

saya1012
質問者

お礼

アドバイスありがとうございます。

  • BookerL
  • ベストアンサー率52% (599/1132)
回答No.2

スマートではないですが、やりたいことをそのまま書いてみたら? 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列も空白になるのでは?

saya1012
質問者

お礼

ご回答ありがとうございました。 希望どおりにできました。 >はほんとにそうなりますか? A列B列ともに空白なら、C列も空白になるのでは? すみません。おっしゃるとおりです。

関連するQ&A