- ベストアンサー
エクセル数式について
A1~A10の範囲に数値を入力して、 最後のセルに入力されている数値を B1に表示したいのですが・・・ ※入力範囲はA1~A10と固定ですが、 入力データは、変動します。 必ず、最後に入力されたセルのデータが B1に表示したいです。 例)下記のように、A5までしか数値がない場合 B1に15と表示できるように。 A1→11 A2→12 A3→13 A4→14 A5→15 A6→空白 A7→空白 A8→空白 A9→空白 A10→空白 宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
=INDEX(A1:A10,COUNT(A1:A10)) でいかがでしょう? ↓のエクセル技道場のページもご参考に。 最下行の数値を返す http://www2.odn.ne.jp/excel/waza/function.html#SEC62 最下行の数値を返す(途中に未入力セルあり) http://www2.odn.ne.jp/excel/waza/function.html#SEC63
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17070)
LOOKUP関数を使った回答の意味は 例データ B1:C4 A 1 B 3 D 5 F 7 とあるとして、 =LOOKUP("B",$B$1:$C$4) と入れると 3 が返ります。 理屈はA,B,D,Fの中をBがあるか調べて第2行目にあるので その行の最右列の値3を返します。 =LOOKUP("C",$B$1:$C$4)の場合、CはA,B.D,Fの中にないが、B,Dの 間にあるのでBと看做してその行の最右列の値3を返します。 =LOOKUP("X",$B$1:$C$4)の場合もXはないが、それよりすぐ下に当たるFの行の最右列の値3を返します。7です。 ーー ご回答の=LOOKUP(1E15,A1:A10)は =LOOKUP(1000000000000000,A1:A10)のことで、1000000000000000 を越える数はありませんので、最終行のA5の値を返します。 配列が1列 配列が空白セルを含む 配列の中に初めから見つからないことがわかっている数を指定していて、見つからない場合の値をとってくる仕組みを利用している 点が普通の本などの解説例と違いますが、 ご回答のような使い方も出来るということです。この方法は流布して定石化しているともいえます。 ーーー VBAのご回答があるが Function lst(a) Application.Volatile True u = a.Cells.Count d = Cells(u, a.Column).End(xlUp) lst = d End Function というユーザー定義関数でも出来ます。 Application.Volatile TrueでChangeイベントを使わなくても良いと思います。値が変わると再処理します。 シート上で =lst(A1:A10) のように使います。 もうひとつの別のタイプの回答がありますが長くなるので、解説は やめます。
=LOOKUP(1E15,A1:A10)
- chie65536
- ベストアンサー率41% (2512/6032)
該当のシートのchangeイペントに以下のコードを追加。 Private Sub Worksheet_Change(ByVal Target As Range) If (Target.Row <= 11) And (Target.Column = 1) And (Target.Rows.Count = 1) And (Target.Columns.Count = 1) Then Range("B1").Value = Target.Value End If End Sub
- mu2011
- ベストアンサー率38% (1910/4994)
次の方法は如何でしょうか。 途中に未入力セルがあっても最終行セルを表示します。 =IF(COUNT(A1:A10),INDEX(A1:A10,MATCH(MAX(A1:A10)+1,A1:A10,1)),"")
お礼
助かりました。 ひとつひとつの数式の意味はわかるのですが、 組み合わせる事が、なかなか・・・出来ません。 頭を柔軟にしなければいけませんね(><) ありがとうございました。