アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル・マクロで最終行を表示することについて

C列の最終行を表示する場合、以下のマクロで表示できます。
今回はC列に
C1=A1&B1
C2=A2&B2
 ↓
という式が入力されている場合について質問します。
A列とB列が空白の場合、C列には0が表示されます。
したがって、下記のマクロだとこの0の行が最終行となります。
私の希望はこのC列の0は空白とみなし、0以外の値や文字が入力されている最終行を表示することです。
どのような工夫をすれば可能でしょうか?
ご指導よろしくお願いします。

Sub 最終行表示()
maxrow = Range("c65536").End(xlUp).Row
MsgBox maxrow
End Sub

A 回答 (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ではシートの最大行が違いますから。
列も同様。
以上です。
    • good
    • 0
この回答へのお礼

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

>これは少し勘違いがあるようです。
すみません。私の勘違いでした。

お礼日時:2010/05/01 21:39

スマートではないですが、やりたいことをそのまま書いてみたら?



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列も空白になるのでは?
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/05/01 21:44

A,B列にデーターが入っている場合のC列の最終行を求めたいのであれば


A列かB列の最終行を取得すれば問題ないのでは?
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/05/01 21:46

文字通りmaxを取ってみる事で良いです。

なんども同じ数字を調べに行く必要もありません。

sub macro1()
dim maxrow as long
maxrow = application.max(range("A65536").end(xlup).row, range("B65536").end(xlup).row)
msgbox maxrow
end sub
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/05/01 21:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!