dポイントプレゼントキャンペーン実施中!

お世話になります。

Execelの例えばA列に入力されている最終行から2番目の行の値(文字列のこともあり得る)を返したいのですが、
どうしたらよいのでしょうか?
並びは以下のようにランダムで、この場合であれば、
「7」を返したいのです。

12
8
15
7
12

宜しくお願い致します。

A 回答 (6件)

途中に空欄があるとすると、


「最終行から2番目の行」が空白の場合にどうするか解釈の余地がありそうですが……。

解釈A.【空白でないセルのうち、2番目に下方にあるセル】の値を返す場合
 ※長さゼロの文字列""は「空白」「未入力」とみなす
 ※必ず空白以外の値が返る

 =INDEX(A1:A99,LARGE(INDEX((A1:A99<>"")*ROW(A1:A99),),2))

解釈B.【空白でないセルのうち、もっとも下方にあるセルの上隣のセル】の値を返す場合
 ※長さゼロの文字列""は「空白」「未入力」とみなす
 ※該当セルが空白なら空白が返る

 =INDEX(A1:A99,MAX(INDEX((A1:A99<>"")*ROW(A1:A99),))-1)

Excel2003で動作確認。以上ご参考まで。
    • good
    • 0
この回答へのお礼

2通りの解釈を頂きありがとうございます。
解釈Bがほしいものです。
そして私もダミーのデータを使用して行うととてもうまくゆきます。(2007環境)
なのに、既存の大きなデータ上(少しシート上のデータが多い)で行うとなぜか「0」になり不思議でなりません。
一つ一つの関数を追いながら考えてもなぜ「0」になってしまうのかさっぱりですので、時間があるときにゆっくりシートを確認しなおしてみます。
ありがとうございました。
急場は、空白セルにダミーデータを挿入して、#1番さんの最も単純な方法で凌ぐことにしました。

お礼日時:2008/09/30 11:59

#4です。


>VBAは諸事情から使いたくないです
事情にもよるが、#4に書いたのは、「ユーザー関数」で、それはVBAで記述するが、一般のVBAの処理と違うものと思いますが。
一般のエクセル関数と区別はほとんどない。
念のため。
    • good
    • 0

=INDEX($A$1:$A$50,MAX(IF(A1:A50<>"",ROW(A1:A50),0))-1,1)


と入れて、SHIFT+CTRL+ENTERの三つのキーを同時押しする。
ただし上記で求めた対象のセルが空白だと、0 を返してしまう。
実質的な(空白を除いたセルはVBAでユーザー関数を定義しないと
ややこしいでしょう。
Function mae(a)
Application.Volatile True
d = Cells(65536, a).End(xlUp).Row
For i = d - 1 To 1 Step -1
If Cells(i, a) <> "" Then
mae = Cells(i, a)
Exit For
Else
End If
Next i
End Function
この場合、=mae("A")のように列を引数で指定する。この場合A列以外にこの式を入れるか、上記コードの65536をその式より上の行番号に限定すること。
    • good
    • 0
この回答へのお礼

ありがとうございます。
VBAは諸事情から使いたくないです。。。。すみません。

お礼日時:2008/09/29 17:03

#1です。



VBAを使用して、以下のようにすれば簡単にB1セルに値が出ます。

Sub sample()
Range("B1").Value = Cells(Range("A65536").End(xlUp).Row - 1, "A")
End Sub


ただ、A列のデータ件数が不定で、空欄個数も何個か不明であれば、関数のみで出すとなると他の条件が無いと厳しいかもしれません。
例えば、一番下のセルが『合計』という文字が入力されているとか、最大値が入力されているとかなら抜け道が出てきますけど。
    • good
    • 1
この回答へのお礼

ありがとうございます。
VBAは諸事情から使いたくないです。。。。すみません。

お礼日時:2008/09/29 17:03

=OFFSET(A1,COUNTA(A1:A5)+COUNTBLANK(A1:A5)-2,)

    • good
    • 0
この回答へのお礼

なぜでしょう。ダミーを作って試すと成功しますが、実際のシート上ではワークしません。。。。不思議です。
ちょっと研究してみます。

お礼日時:2008/09/29 17:02

=OFFSET(A1,COUNTA(A:A)-2,)


この式で出ると思います。
ただ、データの途中に空白セルが入らない事が前提です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
空欄も入るんですが、、、どうしたらよいでしょう?

お礼日時:2008/09/29 14:09

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

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


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