- ベストアンサー
最下行にある数値または文字列を返す数式で困っています
A B 1 10 (=" ") 2 × (=" ") 3 17 (=" ") 4 28 5 × 6 (=B1) 7 (=B2) 8 (=B3) のように、A列に数値や文字列が入力されています。 A6以降は他のセルに入力されたものがこれから入力されます。 (A6以降は、見た目は空欄です) A列で数値であろうと文字列であろうと、とにかく見た目の最下行のセル に入力されている数値または文字列を返すにはどういう数式を使えば良いでしょうか? (上の例では、A5の×を返したいのです) =INDEX(A:A, MAX( IF(COUNTIF(A:A,"*"),MATCH("",A:A,-1)), IF(COUNT(A:A),MATCH(MAX(A:A)+1,A:A,1)))) では、A8(見た目は空欄)が返ってきてしまいますし、 =LOOKUP(10^5,I:I) では、A4の28が返ってきてしまいます。 どなたかご教授ください。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
=INDEX(A1:A65535,MAX(IF(TRIM(A1:A65535)<>"",ROW(A1:A65535))),1) 但し、配列を使っているのでセルの確定は Enterキーではなく、 Ctrl+Shift+Enterキーで確定します。 配列は、列全体では、エラーになってしまうので A1:A65535にしました。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
一読して、式は入っているが、見た目空白のセルを除外するのかどうかはっきりしない。 関数は他のセルに数式が入っているかどうか判別できない。 異色のCELL関数でも判別できないよう。 ですからそれが必要な課題だと関数ではできないでしょう。 もう一度その観点から質問表現を考えてください。 式の有無にかかわらず値が空白のセルの最下行を求めるのか。 そしてVBAでプログラムを組むしかない。(ユーザー関数など) ーー 式があっても値が空白ならば考慮しない方式 Function ls() d = Range("A100").End(xlUp).Row For i = d To 1 Step -1 If Cells(i, "A") = "" Then Else ls = i Exit Function End If Next i End Function
お礼
早速の回答ありがとうございます。 質問表現がわかりにくく、申し訳ございませんでした。 正しくは、 「式は入っているが、見た目空白のセルを除外した時、最下行にある数値または文字列を求める」 です。 No.1の回答の数式で解決できました。 丁寧な回答ありがとうございました。
- maron--5
- ベストアンサー率36% (321/877)
◆こんな方法も =LOOKUP(1,0/(A1:A100<>""),A1:A100) または、 =LOOKUP(1,0/(A:A<>""),A:A)
お礼
早速の回答ありがとうございます。 今回のこの数式では、少し不具合が生じてしまうのですが、 解決できました。 丁寧な回答ありがとうございます。
- zap35
- ベストアンサー率44% (1383/3079)
見た目が空白ではない一番下の行の値で良いですか? =INDEX(A:A,MAX((A1:A100<>"")*ROW(A1:A100))) を貼り付けてShift+Ctrl+Enterで確定して配列数式にするか、 =INDEX(A:A,MAX(INDEX((A1:A1000<>"")*ROW(A1:A1000),))) を貼り付けて普通にEnterで確定
お礼
早速の回答ありがとうございます。 今回のこの数式では、少し不具合が生じてしまうのですが、 解決できました。 丁寧な回答ありがとうございます。
お礼
早速の回答ありがとうございます。 自分では理解できていないものの、この配列数式で解決できました。 ありがとうございます。