エクセルの関数に関する質問です。オートフィルタかけたときに、選ばれている行の値を 別のセルに表示したいのです。オートフィルタかけると同じものが複数行ならびますが、別のセルにひとつだけ表示させたいのです。マクロなど使わず簡単にできる方法はないでしょうか? 指定範囲の一番上をもってくるというような関数があれば、それでいけるような気がします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2009/08/10 21:00:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:SALINGER No.1

回答回数3454ベストアンサー獲得回数969

ポイント35pt

SUBTOTALの非表示の値を無視する機能を使えばできそうです。

まず、A列を作業列を挿入し、B列をフィルタされるデータ列として、C1に関数の結果を表示してみます。

こんな感じ。

A B C
1 見出し データ1
2 2 データ1
3 3 データ2
4 4 データ1
5 5 データ2
6 6 データ1
7 7 データ3
8 8 データ3

A列にはA2から下に2から連番を入れます。

B列はオートフィルにします。

そして結果を表示するC1に数式で

=INDEX(B:B,SUBTOTAL(105,A:A))

この数式の意味は、SUMBOTALで引数105で表示している最小値をとり、INDEXでその行を取得します。

http://www.relief.jp/itnote/archives/000476.php

これで、オートフィルをしたときに見出しの下に来るデータ(即ち選択したデータ)が表示されます。

これはこうすればできるという方法の紹介ですので、実際の環境に合わせてみてください。

id:kaiketsu

なるほど試してみます。

2009/08/04 07:42:49
id:SALINGER No.2

回答回数3454ベストアンサー獲得回数969

ポイント35pt

作業列を使わないで一発で入力する数式も考えてみました。

先の回答と同じ条件で、作業列Aは使っていません。

=INDEX(B:B,MIN(IF(SUBTOTAL(103,INDIRECT("B"& ROW(B2:B1000)))=1,ROW(B2:B1000),1001)))

と入力し、Ctrl+Shift+Enterで配列数式とします。


  • 説明

式中のB2:B1000はデータ範囲です。実際の範囲かそれよりも広い範囲を指定します。

表示・非表示の判別として先ほどのSUBTOTALで表示のデータ個数を調べています。

その個数が1ならばその行番号を違う場合は1001(式中は1000行までにしてるので)を反します。

そして、配列数式で集められた値の最小値をMINで取得し、INDEXに入れます。


先の回答の訂正

SUMBOTAL→SUBTOTALでしたね。

http://q.hatena.ne.jp/

id:kaiketsu

おおすばらしいなんとかできるのですね。試してみます。

2009/08/04 17:40:15

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません