• ベストアンサー

エクセルの質問。  対象範囲の中で、一番下に位置する値を返す関数。

例えば… A1~A9までの9つのセルに、A1=100,A5=120,A6=20という3つの値が入っています。 A1~A9の範囲で一番下にある値を表示(ここではA6の20という値)するような関数ってあるのでしょうか?

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

  • ベストアンサー
  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.6

こんな感じで如何でしょうか? http://www2.odn.ne.jp/excel/waza/function.html#SEC62

参考URL:
http://www2.odn.ne.jp/excel/waza/function.html#SEC62
すると、全ての回答が全文表示されます。

その他の回答 (9)

  • miwaki
  • ベストアンサー率36% (14/38)
回答No.10

こんなテーマがまだ締め切られていないとは驚きました。 =MATCH(MAX(A:A),A:A) これで一番下の行番号が返されます。お試しください。 行番号さえわかれば値を取り出せたようなもの。後はどうぞ。

すると、全ての回答が全文表示されます。
回答No.9

=IF(COUNT(A1:A9)=0,0,INDEX(A1:A9,MATCH(10^20,A1:A9),)) なんて言うのはどうでしょう? 10^20は、A1~A9に入力されるであろう最大値以上 (最大が100なら101以上)ならいくつでもいいです。

すると、全ての回答が全文表示されます。
  • miwaki
  • ベストアンサー率36% (14/38)
回答No.8

#5の回答で、例えば、セルB1にその値を表示したいのであれば、End Sub の手前に下の1行を加えると最下行の値が表示されます。 Range("B1").Value = Range("A" & ActiveCell.Row).Value

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.7

#3、#4です。 #4のコードが長いので、VBAで良く使われる End(xlUp)を使って短くしました。 1列だけ範囲指定したセルの、途中の空白セル(DELETEキーを押したと同じ状態、または未入力セル)は影響を受けないように考えています。 範囲指定した範囲より外の範囲の値は考慮されません。 Function lastclv(a) t = a.Cells(1, 1).Row r = a.Rows.Count c = a.Column lastclv = Cells(t + r, c).End(xlUp) End Function セルに=lastclv(a5:a12)などと入れます。 A4=a,A5=s,A7=d,A12=z,A13=fの場合 =lastclv(a5:a12)はzです。 =lastclv(A5:A15)はsです。

すると、全ての回答が全文表示されます。
  • miwaki
  • ベストアンサー率36% (14/38)
回答No.5

エクセル関数はありませんが、編集機能の「ジャンプ」を使えば該当セルにコントロールが移ります。 これをマクロで記述すると以下のようになります。 Sub Macro1() Range("A1").Select Selection.SpecialCells(xlCellTypeLastCell).Select End Sub 試してください。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.4

#3です。 行番号で回答してしまいました。値であるなら Function lastcl(a) Dim cl As Range m = 1 For Each cl In a If cl <> "" And cl.Row > m Then m = cl.Row n = cl.Column End If Next lastcl = Cells(m, n) End Function ついでに、配列数式になりますが、最下行の「行番号」は =MAX(IF(A1:A20="","",ROW(A1:B20))) と入れて、Shift+Ctrl+Enterで求められます。 最下行の値となると#1のご回答のようになるのかなあ。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

ユーザー関数をどうですか。 ツール-マクロ-VBE-挿入-標準モジュールに下記をコピーして貼りつける。 Function lastcl(a) Dim cl As Range m = 1 For Each cl In a If cl <> "" And cl.Row > m Then m = cl.Row End If Next lastcl = m End Function 値をセットしたいセルに=lastcl(A1:A9)と入れます。

すると、全ての回答が全文表示されます。
noname#29107
noname#29107
回答No.2

数値でも文字列でもA1:A9の範囲で一番下に入力した値を返すものとします。 =INDIRECT("R"&MAX(ROW(A1:A9)*NOT(ISBLANK(A1:A9))) &"C"&COLUMN(A1),FALSE) 配列数式にするため、Ctrl+Shift+Enterで入力

すると、全ての回答が全文表示されます。
回答No.1

=MIN

すると、全ての回答が全文表示されます。

関連するQ&A