人に聞けない痔の悩み、これでスッキリ >>

Excelの表の中で、範囲内の最後のデータ、例えば、a1:a9のうち、a3:a5だけにデータがあるとき、a5のデータを取得したいとき、どんなふうに関数を入力すればいいですか?
始まるセルも、終わりのセルも一定でない場合を想定しています。
ここでいう最後とは範囲内のもっとも下のデータという意味です。
やりたいことは分っても関数名も組み合わせ方も分りません。

例えば、データがある、範囲を特定し、その範囲の最後のセルのセルを返してもらうでもいいかもしれません。
目が見えないので、参考URLなどを張っていただく際は、どうか、テキスト情報が多いものを張ってください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

補足質問への回答です。



=max(index((範囲<>"")*row(範囲),0))に現れる「範囲」は、もち
ろん同一の範囲を指定します。あなたの場合だとA1:A9ですね。

最終的には、

=indirect("A"&max(index((A1:A9<>"")*row(A1:A9),0)))-max(A1:A9)

ですかね。途中に空白があっても大丈夫だし、もしも最後の行が文
字列だったら、ちゃんとエラーになります。あなたが補足に書いた
式は、私の回答のindirect関数を使う話が反映されていないので不
十分ですし、0の位置が間違ってて動作しません。

では、よい正月を。
    • good
    • 4

過去スレですが、参考になると思います。


http://oshiete1.goo.ne.jp/qa4260158.html
    • good
    • 2

シンプルにやるのは難しいですね。

たとえば、

=max(index((範囲<>"")*row(範囲),0))

これで範囲内の「空白でない」一番下のセルの行番号が返ってきま
す。途中に空白があっても大丈夫なことは確認済み。あとは、範囲
がA列だと分かっているならindirect関数で=indirect("A"&…と繋
いでやりましょうか。

式の中に同じ範囲が二回出てくるのが不満です。

この回答への補足

えっと、maxとindexの組み合わせですね。
前に出てくる範囲と、後ろの範囲は同じ範囲でいいのですか?

またこのような式は可能ですか?
=max(index((a1:a9<>""),0,*row(a1:a9)))-max(a1:a9)
範囲内にある、データの最後の値から、最大の値を引くということをしたいのですが。

補足日時:2008/12/30 17:48
    • good
    • 1

{=INDEX(A1:A9,MAX((A1:A9<>"")*ROW(A1:A9)))}


(配列数式)
    • good
    • 2

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルの列末のデータだけ表示が出来ないでしょうか

エクセルにデータロガーからデータが常に入って来るのですが、データ数が多く列末のデータだけが知りたいのですが簡単に表示させる方法はありませんか?他のページからも参照できれば良いのですが・・・。
よろしくお願いします。

Aベストアンサー

◆途中に空白があってもいいですよ
★数値の場合(A列最後の行のデータ)
=LOOKUP(10^10,A:A)

★文字列の場合(A列最後の行のデータ)
=LOOKUP(1,0/(ISTEXT(A:A)),A:A)

★数値・文字列混在の場合(A列最後の行のデータ)
=LOOKUP(1,0/(A:A<>""),A:A)

Qエクセルの関数(最後の値を返す)

A1からJ65までの範囲のなかで (計算式などが入ってるセルも含まれてます)
J列の最後に表示されている値を返したいのですが どんな計算式をしていいか 調べてもわからず困っています。

J35のときもあればj40のときもあります。
ちなみにJ列にはすべて 計算式がはいってます。
その計算結果が表示されているセルと空白のセルがあります。
(J1からJ40まで値表示J41からしたは空白表示のときJ40を返したい
このときA列はA1からA40までは値が入力されてますがA41からしたはまったくの空白です)

Aベストアンサー

計算結果が数値なのであれば
=INDEX(J:J,MATCH(MAX(J:J)+1,J:J,1))
でJ列の最後に表示されている値を返します。 

Qエクセル:データが入った最終行の行番号の取得

お世話になります。
A列にいろいろデータが入っているとして、データが入っている一番下(最終行)の行番号をB1のセルに表示させるにはどういう計算式で出来るでしょうか?
A列のデータは数値だけでなく文字列も含みます。また途中空白セルもあります。
A1~A20にデータが入っているときはB1に20と表示させる。
よろしくお願いします。

Aベストアンサー

=MAX(IF(COUNTIF(A:A,"*"),MATCH("",A:A,-1)),IF(COUNT(A:A),MATCH(MAX(A:A)+1,A:A,1)))

QExcelで、条件と一致する最後のセルを検索したい

Excelで、条件と一致する最後のセルを検索したいのですが、どの関数をどのように使えばいいかわかりません。
どなたかお力をお貸し下さい。

問)
日付  社名  品名  個数
1/1   A    あ    1
1/1   C    い    2
1/2   B    う     3
1/2   A    え    4
1/3   C    お    5
1/3   A    あ    3

答)
A社の最終購入日は  1/3 あ 3
B社の最終購入日は  1/2 う  3
C社の最終購入日は  1/3 お 5

となるようお願いします。

Aベストアンサー

エクセルには「最後の該当」を検索する関数はありません。
無駄に複雑な数式を駆使すればもちろん「やればできます」が、添付図のようにちょっと工夫するだけで、普段使いの数式だけでやっつけるのがお勧めです。

A2:
=IF(OR(C2="",COUNTIF($C$2:C2,C2)<COUNTIF(C:C,C2)),"",C2)
以下コピー

答えは簡単なVLOOKUP関数を使うだけです。
H2:
=IF(COUNTIF($A:$A,$G2),VLOOKUP($G2,$A:$E,2,FALSE),"")




まぁ一応ご参考に作業列を使わない方法:
H2:
=IF(COUNTIF($C:$C,$G2),INDEX(B:B,MAX(IF($C$2:$C$999=$G2,ROW($C$2:$C$999)))))
と記入し、必ずコントロールキーとシフトキーを押しながらEnterで入力する

説明は省略しますので、ブラックボックスで使ってください。

QEXCEL 最終行のデータを他のセルに参照したい

1ヶ月の集計表があります。
1日○○○人
2日○○○人
3日○○○人
4日○○○人
5日(空白)
6日(空白)



という毎日の該当者数の日報があります。
最後に入力されている人数(この場合4日の人数)を使って
別シートで計算をしたいのですが、
どうやって抽出(指定?)すればいいでしょうか?

簡単に言うと、
上から順に入力された最後の行のデータを
他のセルに参照する方法(関数)は?
ということになるでしょうか?

簡単なようですが関数が思いつきません。
マクロが必要なんでしょうか?

Aベストアンサー

たとえば、列Aに日付、列Bに値の表だとしたら、
B列の最終行の値を参照する式は以下のとおり。
(※ただしB列は連続してデータが存在している前提)

=OFFSET(B1,COUNTA(B:B)-1,0)

OFFSET関数は基準になる位置から
指定された行数、列数の位置のセルを参照する関数です。
この例の場合は、基準の位置がB1、基準の位置B1から
B列のデータ個数-1行目を参照させる式になっています。

ヘルプもご確認ください。

Q【エクセル】範囲内の空白ではない一番下のセル

またよろしくお願いします。
2段階にわけて質問します。

【質問1】
範囲A1:A10の空白ではない一番下のセルの値を得たい

【質問2】
たとえば質問1でA8が該当セルだった場合、範囲B1:B8の空白ではない一番下のセルの値を得たい。

A列の状態によってB列の範囲を変えて選び出すのが難しそうです。
よろしくおねがいします。

Aベストアンサー

こんにちは~

A1:B10 に入ってるのは数値ですか、それとも文字列?
それによって数式が変わりますよ。

> 範囲A1:A10の空白ではない一番下のセルの値を得たい

★数値なら

=IF(COUNT(A1:A10),LOOKUP(10^10,A1:A10),"")

または

=IF(COUNT(A1:A10),LOOKUP(MAX(A1:A10)+1,A1:A10),"")

★文字列なら

=IF(COUNTA(A1:A10),INDEX(A1:A10,MATCH("*",A1:A10,-1)),"")


> たとえば質問1でA8が該当セルだった場合、
> 範囲B1:B8の空白ではない一番下のセルの値を得たい

★数値なら

=IF(COUNT(A1:A10),LOOKUP(10^10,INDIRECT("B1:B"&MATCH(MAX(A1:A10)+1,A1:A10,1))),"")

または

=IF(COUNT(A1:A10),LOOKUP(MAX(B1:B10)+1,INDIRECT("B1:B"&MATCH(MAX(A1:A10)+1,A1:A10,1))),"")

★文字列なら

=IF(COUNTA(A1:A10),INDEX(B1:B10,MATCH("*",INDIRECT("B1:B"&MATCH("*",A1:A10,-1)),-1)),"")

※B列の該当範囲に値がない場合のエラー処理はしていません。
※解決した質問は締め切ってくださいね。

こんにちは~

A1:B10 に入ってるのは数値ですか、それとも文字列?
それによって数式が変わりますよ。

> 範囲A1:A10の空白ではない一番下のセルの値を得たい

★数値なら

=IF(COUNT(A1:A10),LOOKUP(10^10,A1:A10),"")

または

=IF(COUNT(A1:A10),LOOKUP(MAX(A1:A10)+1,A1:A10),"")

★文字列なら

=IF(COUNTA(A1:A10),INDEX(A1:A10,MATCH("*",A1:A10,-1)),"")


> たとえば質問1でA8が該当セルだった場合、
> 範囲B1:B8の空白ではない一番下のセルの値を得たい

★数値な...続きを読む

Q【EXCEL】列の最後のセルのデータだけ抽出したい

いつもお世話になっております。

A1 ○○ B1 ○○ C1 ○○
A2 ○○
A3 ○○ B3 ○○

...といったかんじでセルにバラバラにデータが入っているとします。

列にデータが入っている最終の行だけ取り出したいのです。
上の例だとC1,A2,B3です。

マクロを使わなきゃ無理そうなのですが、アフォなのでわかりません。(T.T)
プログラミングの経験がある方、賢い方、教えてくださいませ。

Aベストアンサー

以下の関数で如何でしょうか。期待値と相違していましたら無視して下さい。
(例)A列の最終行の文字or数値を取り出せます。
=INDEX(A:A,MAX(IF(COUNTIF(A:A,"*"),MATCH("",A:A,-1)),IF(COUNT(A:A),MATCH(MAX(A:A)+1,A:A,1))))

因みに、列にデータが入っている最終の行ならば、A3,B3,C1では無いでしょうか。

Qエクセルで最後の行までを選択

エクセルで1万行位あるものの1行目から最後の行までを一気に選択する方法はあるでしょうか?また、同じようにA列とB列のみを最後の行まで選択する方法もあるでしょうか?よろしくお願いします。

Aベストアンサー

こんにちは。

マクロなどが設定されていなければ、

シフトキーを押しながら、A1 の、セルの四角の底辺の枠線をダブルクリックすれば、その列が最後まで選択されます。A列B列のみなら、A列で、シフトキーを押しながら、B列のB1 のセルの四角の枠線をダブルクリックすれば選択されます。(ただし、空白セルが途中にあったら、そこでとまります。)

シフトキーを押しながら
+-------------+
|            |
|            |
+-------------+
   ↑
   ここをダブルクリック

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセル SUM関数 自動的に最終行を取得したい

A1→1
A2→2

B1→=SUM(A1:A2)

と入力しています。
この状態で
A3→3
と入力した場合
自動的に
B1→=SUM(A1:A3)
にすることは不可能ですか?

「=SUM(A1:A3)」のA3の部分をA列の最終行を取得したいです。
VBAなら可能でしょうか?

ご教授よろしくお願い致します。

Aベストアンサー

範囲内で最終行まで確実に数値があるなら
=SUM(OFFSET($A$1,,,COUNT($A$1:$A$100)))

範囲内で最終行までにブランクがあるなら
=SUM(OFFSET($A$1,,,MATCH(MAX($A$1:$A$100)+1,$A$1:$A$100)))

上記の$A$1と$A$100が範囲にかかわる部分です。
範囲が変わる場合はここを替えてください。


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

人気Q&Aランキング