- ベストアンサー
最下行のセル番地を求めるにはどうすればよいですか
EXCEL2003ですが、売上などの集計一覧表で、最下行の右端のセルの番地を求めるにはどのようにすればよいですか? 商品が売れるたびに最下行が増えていきますので、関数を使用する場合範囲が固定できず困っています。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
◆こんな方法はいかがでしょうか? 1)荒っぽいですが、範囲を列全体にします(途中に空白があっても大丈夫) =SUM(B:B) 2)途中に空白行がなければ =SUM(A1:INDEX(C:C,COUNT(A:A))) または、 =SUM(B1:INDEX(B:B,COUNT(B:B))) または、 =SUM(INDIRECT("B1:B"&COUNT(B:B))) 3)途中に空白行があっても、最下行を返します =MATCH(10^10,B:B) ・・・(数値場合可) よって、空白がある場合の和は =SUM(OFFSET($B$1,,,MATCH(10^10,B:B))) =SUM(B1:INDEX(B:B,MATCH(10^10,B:B))) =SUM(INDIRECT("B1:B"&MATCH(10^10,B:B))) ★お役に立ちましたでしょうか?
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
以外に正面からの関数は無い。 初心者なら、関数を使用する場合の具体的な例を挙げては。SUM関数とか、・・。 (1)Count法 (2)配列数式 (3)VBA法・ユーザー関数定義 (4)セル範囲定義 -- (2)は =MAX(IF(B2:B100<>"",ROW(B2:B100),"")) や =MAX((B3:B101<>"")*(ROW(B3:B101))) と入れてSHIFT+CTRL+ENTERの3つのキーを同時押しする。 間に空白行があっても、最下行数を返す。 ーー (3)は 標準モジュールに Function dr(a) dr = Cells(65536, a.Column).End(xlUp).Row End Function でセルには =dr(B1)
- zap35
- ベストアンサー率44% (1383/3079)
#02です INDIRECT関数を用いて「可変」範囲を定義できます。例えば =SUM(INDIRECT("A1:A" & COUNTA(A:A))) のようにするとA列の最終行までが合計範囲になります。 ただしDSUM関数ならタイトル行があるでしょうから COUNTA(A:A)-1 のように調整が必要になると思います。
- zap35
- ベストアンサー率44% (1383/3079)
関数ですか? 必ずデータが入力される列をB列とすると =COUNTA(B:B) でデータの個数が求められますので、途中に空の行がなければこの値が最下行の行番号と一致します。 意味が違っていたら補足してください
お礼
ありがとうございます。初心者で申し訳ございませんが、データの個数が求められたとして、それをどのように利用すればよいのでしょうか。 個数(数値)とセル番地(B4とかD34)を関連付ける方法がわかりません。 売上集計表の中で、商品別の合計を求める場合、DSUM関数を使用しますが、販売商品が増えて最下行が増えるたびに、セル範囲を変更しなくてはなりません。その作業を自動化するために、最下行が増えるたびにそのセル番地が自動的に変更になる方法を知りたいのですが、上手に説明できず申し訳ございません。 よろしくお願いします。
- kokorone
- ベストアンサー率38% (417/1093)
UsedRange を使ってみてください。
お礼
ありがとうございました。せっかくお教えいただいたのですが、VBAはまったくわかりません。今後勉強して参考にさせていただきます。
お礼
ありがとうございました。 私にとってはすこし難しいので、もう少し勉強の時間が必要です。 参考にさせていただきます。 本当にありがとうございました。