重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Excel2010のVBAでAutoFilterの全条件を取り出す方法が分かりません。どうすればいいのでしょうか?

質問者からの補足コメント

  • そうです。「既存のAutoFilter の設定条件を抜き出して、文字として出すことですか?」この意味です。
    つまり、学生名簿があったとするとセル内の条件としての値として、学年とか男女とか出身中学とかのことです。これらを抜き出してListに表示させて表示選択させたいのです。
    AutoFilter オブジェクトにこれらの条件の値は、ないのですか?

      補足日時:2015/08/15 17:11
  • ListではなくListBoxコントロールですね。すみません。

      補足日時:2015/08/15 17:31

A 回答 (3件)

こんにちは。



#2では、ダメ出ししていましたが、私がイメージしたものをサンプルで作ってみました。

手順:
------
名前の登録
Criteria  =Sheet!$K$1:$K$2  (クライテリア)
Database  =Sheet!$A$5:$I$35 (データベース)

----
コントロールの書式設定
入力範囲 $M$1:$M$8
リンクするセル $H$1
ドロップダウンリストの行数 8
-----
 M列              N列
  (空白)
1 性別:男    =F6="男" 
2 性別:女      =F6="女"
3 1972年生まれ   =AND(G6>="1972/1/1",G6<"1973/1/1")
4 8月生まれ      =MONTH(G6)=9
5 東京都在住     =COUNTIF(D6,"*東京*")>0
---
このN列にある数式が、クライテリア部分のK2 に貼り付けられます。
----

'シートモジュール
'//
Sub DropButton_Change()
i = Range("H1").Value
If i > 0 Then
  Range("Criteria").Cells(2, 1).Formula = Range("N1").Cells(i, 1).Formula
  Range("Database").AdvancedFilter Action:=xlFilterInPlace, _
  CriteriaRange:=Range("Criteria")
End If
End Sub
'///
「エクセル2010のVBAに関してです。」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとうございました。参考になりました。

お礼日時:2015/08/25 06:38

おっしゃっている意味は分かりました。



>これらを抜き出してListに表示させて表示選択させたいのです。
アイデアとしては、面白いですね。具体的なイメージとしては、未だ不明な部分はありますが、全部、それぞれ一つの列に対して、一括管理・表示でアイテムを集約しリストボックスで出来るようにすること、という意味だとは思います。

>AutoFilter オブジェクトにこれらの条件の値は、ないのですか?
例えば、オートフィルタには、ドロップダウン・ボタンを押すと、各々の列には、一意の一覧が出てきますが、それを、直接、抜き出すということは私の知る範囲ではできません。Excelの機能にはあるものの、仮想空間の中では行っているものは、取出し方を知りません。むろん、性別程度や学年というものは、規定のものですからすぐに分かりますが、それ以外では、プログラム的な解決を試みるより、直接検索したほうが早そうです。

ご質問の答えでは、表それぞれの、具体的なものがありますが、一般的に、何かのオブジェクトのメソッドやプロパティにというようには、存在しないのです。いわゆる「評価式(クライテリア)」を作るしか、ないはずです。私は、同様の質問には経験がありますが、オートフィルタ自身などでの解決等、どこかに書いてあったという記憶もありません。
    • good
    • 0

「AutoFilterの全条件を取り出す方法」という意味が、分かりません。


もしかして、既存のAutoFilter の設定条件を抜き出して、文字として出すことですか?一応、途中まで良いので、開発の段階を見せていただきたいです。もう一つは、文字として出しても、あまり意味があるとは思えませんが、そうしたい理由はなぜか教えてくれませんか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!