- ベストアンサー
オートフィルターで抽出したデータを他のセルに表示させる方法
こんばんは。 下記のようなマクロを組みたいのですが、 どなたかアドバイスをよろしくお願いいたします。 A2からB10までの表があります。 (2行目が項目でオートフィルターをかけてあります。) B列には「イチゴ」「メロン」「りんご」というデータがはいっています。 B列でソートをかけて 「イチゴ」を選んだ場合は、B1のセルに「イチゴ」と 表示させる。 同様に「メロン」を選んだ場合は、B1に「メロン」、 「りんご」を選んだなら「りんご」と表示させるようにしたいのですが、いい案を教えてください。 よろしくお願いします。
- みんなの回答 (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 です) オートフィルタで何かを選択(抽出)しただけではイベントは発生せず 無理やり何か他のアクション(アクティブセルを変更する、再計算する、など)を付け加えなければイベントプロシージャは動かないようです。
その他の回答 (1)
- masa_019
- ベストアンサー率61% (121/197)
オートフィルターとかソート・・・とありますが、 結果的には、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 ということで良いように思いますが、どうでしょうか。 やりたいことと違っていたらごめんなさい。
お礼
こんばんは! ご回答ありがとうございました! 自分で質問しておいてなんなんですが、 VBAは私には難し過ぎたようです・・・・・・。 基礎から勉強してみます! ありがとうございました!
お礼
ビンゴ! って感じでした! 関数ではできないと思いこんでしまっていました。 発想の転換ってすばらしい!かなり感動です。 思い描いていたものが出来ました!感謝感謝です! ありがとうございました。