人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: kaiketsu
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:ひとつ エクセル セル フィルタ マクロ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● SALINGER
●35ポイント

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

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

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

◎質問者からの返答

なるほど試してみます。


2 ● SALINGER
●35ポイント

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

先の回答と同じ条件で、作業列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/

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ