プロが教える店舗&オフィスのセキュリティ対策術

例えば…
A1~A9までの9つのセルに、A1=100,A5=120,A6=20という3つの値が入っています。

A1~A9の範囲で一番下にある値を表示(ここではA6の20という値)するような関数ってあるのでしょうか?

A 回答 (10件)

    • good
    • 2

こんなテーマがまだ締め切られていないとは驚きました。


=MATCH(MAX(A:A),A:A)
これで一番下の行番号が返されます。お試しください。
行番号さえわかれば値を取り出せたようなもの。後はどうぞ。
    • good
    • 5

=IF(COUNT(A1:A9)=0,0,INDEX(A1:A9,MATCH(10^20,A1:A9),))



なんて言うのはどうでしょう?

10^20は、A1~A9に入力されるであろう最大値以上
(最大が100なら101以上)ならいくつでもいいです。
    • good
    • 1

#5の回答で、例えば、セルB1にその値を表示したいのであれば、End Sub の手前に下の1行を加えると最下行の値が表示されます。


Range("B1").Value = Range("A" & ActiveCell.Row).Value
    • good
    • 0

#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です。
    • good
    • 0

エクセル関数はありませんが、編集機能の「ジャンプ」を使えば該当セルにコントロールが移ります。


これをマクロで記述すると以下のようになります。

Sub Macro1()
Range("A1").Select
Selection.SpecialCells(xlCellTypeLastCell).Select
End Sub

試してください。
    • good
    • 0

#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のご回答のようになるのかなあ。
    • good
    • 0

ユーザー関数をどうですか。


ツール-マクロ-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)と入れます。
    • good
    • 0

数値でも文字列でもA1:A9の範囲で一番下に入力した値を返すものとします。


=INDIRECT("R"&MAX(ROW(A1:A9)*NOT(ISBLANK(A1:A9)))
&"C"&COLUMN(A1),FALSE)
配列数式にするため、Ctrl+Shift+Enterで入力
    • good
    • 0

=MIN

    • good
    • 2

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A