『オートフィルタの選択項目の取得と列取得(VBA無し)』(そら) いつもお世話になっています。 オートフィルタを選択した際の項目取得(全列)が可能が検討しています。 単独の列の項目取得については、以下の例1関数で可能です。 例1)A列〜H列までデータがありオートフィルタし、C列をフィルタして項目を取得する場合(フィルタ外のセルに以下の式) =INDEX(C:C,MAX(INDEX((SUBTOTAL(3,INDIRECT("C"&ROW(C$6:C$100)))*ROW(C$6:C$100)),)))) ただし、未選択の際に項目が表示されるため、COUNTAで回避は可能です。 例2)=IF(COUNTA(C$6:C$100)=SUBTOTAL(3,C$6:C$100),"",INDEX(C:C,MAX(INDEX((SUBTOTAL(3,INDIRECT("C"&ROW(C$6:C$100)))*ROW(C$6:C$100)),)))) が、2行目の通り、目的は全行の項目を取得したいため、例えばA列やB列の項目も取得しようとすると、フィルタ未選択列まで項目が表示されてしまいます。(COUNTAとSUBTOTALのため) こちら例えばC列を選択すればC列の項目のみ、C列をB列を選択すれば同じくCとB列の項目のみが表示できますでしょうか? ※A列〜H列まで上記の数式を入れフィルタし、フィルタした箇所だけ項目が表示される フィルタの絞り込みしている使用列を取得できる方法がありますか? 尚、今回はVBAは除きます。 以上、宜しくお願い致します。 < 使用 Excel:Excel2010、使用 OS:Windows7 > ---- 何か回答がつかないみたいなんですが… 具体的に想像できないんですけどフィルタオプションで何とかならないんでしょうか? (コナミ) 2018/01/25(木) 10:52 ---- どういうデータがどういう条件でどういう結果になるのか、いまいち理解できなかったので傍観しておりました。 役に立つかは判りませんが、Excel2010のSUBTOTAL関数ならば、103 を指定すると、見えているものだけ対象になりますが、いかがでしょうか。 (???) 2018/01/25(木) 12:01 ---- ご回答ありがとうございました。 フィルタオプションはユーザ側に操作させる必要があるので厳しいのと、そうであればVBAで対応を選択します。 また、SUBTOTALの103も考え方は同じですので、今回の件は対応できないと考えられます。 例が良くなかったため、簡単に以下に記載いたします。 【例】日時行にオートフィルタ 数式A列分|数式B列分|数式C列分 日時|商品|個数 1/1|りんご|2 1/2|みかん|1 1/3|いちご|3 1/1|バナナ|4 フィルタで1/1と選択すると、数式A列に1/1と表示される。 同じように数式B列、数式C列にもフィルタ表示している最下行のデータが表示される。 それぞれ数式B=バナナ、数式C=4 上記の状態からフィルタしていないB列、C列が数式で表示されることを回避したい(つまりフィルタ列以外は空欄にしたい)という事です。 ※今のやり方ではSUBTOTALを使用しているので、他の方法じゃないと厳しいですが、思い付いていないのが現状です 以上、ご教示宜しくお願い致します。 (そら) 2018/01/25(木) 13:45 ---- オートフィルターの機能を使うなら、 検索条件を数式で取得するのは、 関数等ではできないのでは?と思います。 (提示の数式はよくわかんないですが、結局結果から検索条件を推測しているだけであり、実際どう設定しているかは取得できてないのでは?) 数式でオートフィルター的なものは作れるので、そちらで対応すればいかがでしょう。 (その代り検索条件が手入力になりリストから選択することはできなくなると思います。 ネットで調べたら出てきそうな気がします。 例)「エクセル 数式でオートフィルター」 (まっつわん) 2018/01/25(木) 14:12 ---- ご回答ありがとうございます。 ご記載の通り、検索対象が1つ以上でないとき、Like検索や部分検索であった時に正しく表示が出来ない件は理解しておりましたし、「検索条件」を割り出す意図はありませんでした。 数式でオートフィルターの件も同じですが、上手く伝わるかは分かりませんが、Excelのオートフィルターで項目を選択できる位のレベル層を対象としていましたので、フィルタ項目の簡易表示を関数で実現出来れば・・・との状況でした。 該当列がフィルタしているかどうかが分からないので、当件は実現不可と認識いたします。 回答してくださった方々、ありがとうございました。 (そら) 2018/01/26(金) 17:53