• ベストアンサー

オートフィルターで抽出したデータを他のセルに表示させる方法

こんばんは。 下記のようなマクロを組みたいのですが、 どなたかアドバイスをよろしくお願いいたします。 A2からB10までの表があります。 (2行目が項目でオートフィルターをかけてあります。) B列には「イチゴ」「メロン」「りんご」というデータがはいっています。 B列でソートをかけて 「イチゴ」を選んだ場合は、B1のセルに「イチゴ」と 表示させる。 同様に「メロン」を選んだ場合は、B1に「メロン」、 「りんご」を選んだなら「りんご」と表示させるようにしたいのですが、いい案を教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • takibo
  • ベストアンサー率57% (116/200)
回答No.2

>B列でソートをかけて →→ 「フィルターをかけて」という意味と解釈します。 まず、ご希望とはそれてしまいますが関数の方法を紹介します。(なので参考程度に思ってください) A列の内容がわからないので通し番号と仮定して、以下のようになっているとします。   A   B 1 2  No.  名前 3  1  りんご 4  2  メロン 5  3  メロン 6  4  イチゴ 7  5  りんご 8  6  イチゴ 9  7  メロン 10 8  りんご そして B1 に   =IF(SUBTOTAL(3,A3:A10)=COUNTA(A3:A10),"",VLOOKUP(SUBTOTAL(5,A3:A10),A3:B10,2,0)) と入力します。 ・表示されているA列の空白を除く個数が全データの個数と等しいの場合(フィルターがかかっていない場合)は表示しない ・フィルターをかけた結果のA列の最小値からVLOOKUP関数でB列の内容を検索 (最大値でもかまいません、その場合SUBTOTAL関数の引数は 4 です) オートフィルタで何かを選択(抽出)しただけではイベントは発生せず 無理やり何か他のアクション(アクティブセルを変更する、再計算する、など)を付け加えなければイベントプロシージャは動かないようです。

参考URL:
http://www.amy.hi-ho.ne.jp/~lepton/program/p3/prog341.html
toile
質問者

お礼

ビンゴ! って感じでした! 関数ではできないと思いこんでしまっていました。 発想の転換ってすばらしい!かなり感動です。 思い描いていたものが出来ました!感謝感謝です! ありがとうございました。

その他の回答 (1)

  • masa_019
  • ベストアンサー率61% (121/197)
回答No.1

オートフィルターとかソート・・・とありますが、 結果的には、B1に選択したセルの値が入れば良いのですよね。 表のあるシートのモジュールに、 Private Sub Worksheet_SelectionChange _ (ByVal Target As Excel.Range) If Intersect(Target, Range("B2:B10")) Is Nothing Then Exit Sub Range("B1").Value = Target.Value End Sub ということで良いように思いますが、どうでしょうか。 やりたいことと違っていたらごめんなさい。

toile
質問者

お礼

こんばんは! ご回答ありがとうございました! 自分で質問しておいてなんなんですが、 VBAは私には難し過ぎたようです・・・・・・。 基礎から勉強してみます! ありがとうございました!

関連するQ&A

専門家に質問してみよう