• ベストアンサー

オートフィルターで指定した値を取得したい

表題の通りです。 オートフィルターで指定した値を、別のセルに表示させたいのですが そのようなことは可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

標題の「オートフィルターで指定した値」とは、「オートフィルタによる絞り込みの条件とした値」という意味でよろしいでしょうか? A 列に数値データがあり、それを 1 種類の値のみに絞り込むという場合、次式によりその値を取得できます。この数式は、平均値を求めています。したがって A 列に複数の種類の値が表示されている状態では、小数などを返します。 =subtotal(1,a:a) 文字列などの数値でない値であっても取得するには、マクロを使います。オートフィルタがあるシートのシートタブを右クリック、「コードの表示」から表示されるコードウィンドウに次のコードを貼り付け。 絞り込んだ瞬間ではなく、その次にカーソルを動かした瞬間に、E1 セルに絞り込み条件となっている値を記入します。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)   With Me     If .AutoFilterMode Then       With .AutoFilter.Filters(1)         If .On Then Range("e1").Value = Replace(.Criteria1, "=", "")       End With     End If   End With End Sub

Erin_all_right
質問者

お礼

ご回答ありがとうございます。 >「オートフィルタによる絞り込みの条件とした値」という意味でよろしいでしょうか? 記載して頂いた通りの意味です。言葉があいまいで申し訳ありません。 教えて頂いたSUBTOTAL関数の方でうまくいきました! ただ、VBAの方も試したのですがうまく動きませんでした。 オートフィルタの絞り込みの値を変更後、別のセルにフォーカスを移動させたのですが、数値が表示されませんでした。。。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

C列をオートフィルタした場合、その絞り込み項目は以下の数式で表示できます。 =INDEX(C:C,MAX(INDEX((SUBTOTAL(3,INDIRECT("C"&ROW($C$2:$C$100)))*ROW($C$2:$C$100)),)))

Erin_all_right
質問者

お礼

ご回答ありがとうございます。 記載して下さった内容でうまくいきました!

すると、全ての回答が全文表示されます。
  • Cupper-2
  • ベストアンサー率29% (1342/4565)
回答No.1

関数では無理な気がします。 自分が知る限りでは、表示されないセルを無視する関数は「SUBTOTAL関数」しかありません。 しかもExcel2003以降のバージョンでのみ有効なんですけどね。

Erin_all_right
質問者

お礼

ご回答ありがとうございます。 そのものを取得することは、関数では無理なのですね。 SUBTOTAL関数を試してみようかと思います。

すると、全ての回答が全文表示されます。

関連するQ&A