• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのフィルタ-機能とマクロの問い合わせです)

エクセルのフィルター機能とマクロについて

このQ&Aのポイント
  • エクセル使用中に、オートフィルターのテキストフィルターで条件を増やす方法について質問があります。
  • もし条件の増やすことができない場合、マクロを使って同様の機能を実現することを考えています。
  • 具体的には、特定の指定語句を含む行のみを表示するための検索機能についてです。また、検索後に通常の状態に戻すことも希望しています。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

検索項目が多くなっても対応できる方法として作業列を設け、その作業列を重点にしてオートフィルタを実施すればよいでしょう。 例えばZ7セルから下方にはリンゴ、ミカン、トマトなどの検索したい文字を行を変えて入力します。 その上でW6セルには検索作業列とでも入力します。W7セルには次のような式を入力します。 =IF((COUNTIF(K7:U7,Z$7)+COUNTIF(K7:U7,Z$8)+COUNTIF(K7:U7,Z$9)+COUNTIF(K7:U7,Z$10))+COUNTIF(K7:U7,Z$11)+COUNTIF(K7:U7,Z$12)+COUNTIF(K7:U7,Z$13)),1,"") この式ではZ7セルからZ12セルまで入力した文字列が検索されます。式を追加すればさらに検索の文字列を増やすことができます。その結果該当する行には1が表示されますのでW列を重点にオートフィルタを実施することで該当の行が抽出され表示されますね。オートフィルタを解除すればあるいはすべて表示を選択すれば元の表に戻すことができます。 なお、検索したい文字列はZ7セルから以降に入力するのですから、マクロの場合のように次々に検索文字を入れていくことよりも検索にはどの文字列が使われたかを一目でわかりますのでマクロよりも便利に使うことができるでしょう。

830089gen
質問者

お礼

何でもマクロ的な考えしか思い浮かばない固い頭に渇でした。 条件式(と表現させて下さい)で絞り込んでいくのですね。 条件が多くても使用出来そうなので早速トライしてみます。 ありがとうございました。

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

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

条件を3つ以上に増やす方法はありません。 マクロに精通していれば,ご自分でユーザーフォームとマクロを駆使して,ご自分の使いやすいように検索プログラムを自作する事も可能です。 でも丸投げでどこのメニューをクリックしてから手取り足取り全部教えてくださいのレベルですと,ここまでやるのはちょっと厳しいので,代わりにデータメニューのフィルタから「フィルタオプションの設定」といったエクセルの基本機能を使い,抽出を行います。 参考にしてください: http://www.wanichan.com/pc/excel/2003/05/193.html http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter3.htm ワークシート上に検索条件(リンゴやトマト)を記入し,フィルタオプションの設定の機能を使ってOR条件で抽出できる,確認したらフィルタを解除できるといったことを,まずはご自分の手を動かして操作できるようになってください。 その次のステップとして,確立した操作手順を簡単なマクロに自動化していくのは,容易な作業で実現できます。

830089gen
質問者

お礼

アドバイスいただいた条件絞り込みで考えてみようと思います。 条件を増やせない事もお教えいただきありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

回答1です。W7セルに入力した式は下方にオートフィルドラッグしてください。

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

関連するQ&A

  • Excelのオートフィルタでデータ抽出するマクロについて

    オートフィルタで指定した期間のデータ抽出のマクロを作成しているのですが上手くいきません。 例えばA列に 10月29日 11月1日 11月3日 11月5日 と日付を入力しており、B列、C列にデータを入力していたとして D列1行目に10月31日、D列2行目に11月4日と入力し D列1行目からD列2行目までと指定したデータを抽出するマクロを教えていただけませんか。 マクロ初心者で、困っております。どうかよろしく御願いします。

  • エクセルマクロ:空白行を除いてコピー

    マクロで次の作業を処理したいのですが、どのようなコードを書けばよいのでしょうか?教えてください。よろしくお願いします。 ○sheet1 ☆左側 列B~Hをワンセットとしたものが、計51行ある。先頭はタイトル行で9行目である。 D列には固定の文字列が与えられており、E列はブランクで、D・Eともに非表示にしておきたい。 B10~B59には、固定で1~50の数字が順番に与えられている。 C10~C59、G10~G59、H10~H59には数値が、F10~F59には文字列が入力される。 空白の場合もあり、どの行に入力されるかは不明。 ☆右側 列J~Pをワンセットとしたものが、計51行ある。先頭はタイトル行で9行目である。 J10~J59には、固定で51~100の数字が順番に与えられている。 K10~K59、M10~M59、O10~O59、P10~P59には数値が、L10~L59、N10~N59には文字列が入力される。 空白の場合もあり、どの行に入力されるかは不明。 ○sheet2 sheet1のボタンをクリックし、sheet2を表示させ、 sheet1の値を次のようにsheet2に貼付けたい。 sheet2のB8~H107の範囲内で上から、sheet1の左側B10~H59と右側J10~P59の空白を含む行を除いた セット(列B~H、列J~P)のみをコピーし、左側と右側を連続して、値のみ貼付けたい。 ※C列とK列の空白を判定すれば良い ※並べ替えなどのために別シートを置きたくない ※非表示列の扱い方

  • 助けてください。印刷マクロを

    OS:XPSP2,Excel2002で印刷マクロを教えてください。 "入力シ-ト"に顧客管理用で下のようなデ-タが入っています。      A列     B列   C列  2行目:受付番号   氏名   住所; ・・・・・・S(列) 3行目 80001   玉田                      80002   山田      80003   上田       ・       ・ 受付番号はすでに85000くらい(不確定)まで入力済みです。 氏名以下をデ-タとして日々入力していき作成し、件数がかなり溜まった(数百件くらい)ときに印刷をするといった仕事です。 マクロを使って、印刷したいデ-タをMsgで”最初の番号を入力”で受付番号を入れて次に同じようにMsgで”印刷最後の番号を入力”で受付番号を入れて、その間のデ-タをA列からS列まで印刷するものです。  

  • エクセルのマクロ、VBA

    VBAの初心者です。 ご指導お願いいたします。 現在VBAを作成中なのですが、Mの列には様々な名前のデータが入力されており その中から例えば○○と入力されている場合のみ、その同じ行のBの列に△△と 入力したいのですが、うまくできません。 ○○とはM列に複数あり、そしてM列以外にも入力されています。 参照したいのはM列に○○と入力されているものだけです。 どうかご指導お願いします。

  • EXCEL IF関数

    M列に日付が入力されています。 K列には内or外と入力されています。 L列には K列が"内"であればM列の3日前 K列が"外"であればM列の7日前 の日付を返す。という式を入力したいのですが、 例 セルM1 "9/10"  セルK1 "内"  セルL1 "9/7" 宜しくお願いします。

  • エクセル マクロ 定型ごと抜き出す

    エクセル2010を使っています。 画像の様なデータがあり、8行が1括りになった表があります。 【Sheet4】 (A列~CL列まで) その中でM列に 優良 もしくは 欠陥 と入力されています。 これは、一つの表内で混じる事はありません。 その優良と入力された表だけを 【Sheet5】に抜き出したいです。 ※ ちなみに、現状で5万行ほどありますので、出来れば負担の掛からない形で抜き出したいです。 詳しい方、教えて頂けませんか? よろしくお願い致します。

  • とほほのエクセルマクロ

    以下の文の[-1899]の部分を可変型にしたいのですが。 どなたかご存知有りませんか? ActiveCell.FormulaR1C1 = "=COUNTIF(R[-1899]C:R[-1]C,""いっしょだよ"")" ==================================== マクロの説明です。 ==================================== エクセルマクロでsheet1にデータを入力していって、 sheet1のD列内に同一のコードがないかをチェックするために sheet1のコピーを作成してD列でソートしてから D列の1行目=2行目ならK列に”いっしょだよ”という メッセージを出すようにIF文を書きこんでいきます。 最後にこの”いっしょだよ”というメッセージが何件あったかを見たいので、 一番下の行+1行目に ActiveCell.FormulaR1C1 = "=COUNTIF(R[-1899]C:R[-1]C,""いっしょだよ"")" という文を入れたのですがこれだと自分が居る一つ上のセルから 1899上までしか行かないのですが、毎回データを入力して行数は増えていってしまいます。 どのような、文にしたらよいのか教えてください。 お願いいたします。

  • excel 2003 オートフィルタ!

    excel 2003で、オートフィルタがうまくいきません。 A列の2行目から、1~5までの数字がランダムに並んでいるとします。 A1セルをオートフィルタし、 条件を、オプション>3を含む で指定すると、3がフィルタされてほしいのですが 1つも抽出されません。 3で始まるもだめでした・・ フィルタで抽出するマクロをくんでいて 列は、20列以上あり、 列によって、文字や数値があります。 フォームで列を選び、検索文字を入力して Criteria1:="=*" & 検索文字 & "*", Operator:=xlAnd と言う感じでフィルタしています。 文字はできますが、数値ができないのは、なぜでしょうか・・・

  • ,エクセル2000のマクロでこんな事出来ますか?

    エクセル形式でデータが送られてきます。A~ADまで列があります。行数は決まっていませんが、だいたい10~50行程度です。 列は必ずA~ADと決まっています。1行目は項目が入り2行目からデータが入っています。そこでマクロを組んで下記のような事が出来るでしょうか? 先ず、必要なのはM、P、Q、T、Vの5列のみです。その他は必要ありません。データの内容としてP、Q列には日付が入力されています。V列はカタカナの文字が入っている又は空白の状態です。カタカナの文字は重複されている場合もあります。T列には数値が入っています。空白はありません、何らかの数値が入力されています。 M列には必ず文字が入っています。種類は決まっていて「東京、大阪、名古屋、福岡」の4種類しか入りません。 以上の内容なんですが、やりたいのは、先ず、A~ADをM、P、Q、T、Vのみの5列の表にした上でそこに3列を増やしたいのです。実際にはMPQTVがABCDEになるのでFGHという列が増える形になると思います。そのFGHという列には元T列に入っていた数値を反映させたいのです。 但し条件として ●M列に「東京」と入った場合には同じ行のT列の数値をF列に反映。M列に「東京」と入っている場合はV列に必ずカタカナが入力されています。 ●M列に「大阪」又は「名古屋」と入った場合には同じ行のT列の数値をG列に反映。但しこの「大阪」「名古屋」に関しては同行のV列にカタカナが入ってなくて空白の  場合があります。その場合は無視したいのです。V列が空白でM列が「大阪」「名古屋」の場合、まったく何も反映しない状態でその行はすべて削除で構いません。 ●M列に「福岡」と入った場合には同じ行のT列の数値をH列に反映。但しこの「福岡」と入る場合はV列が必ず空白の状態です。 以上がやりたい事ですが可能ですか?どなたか御教授下さい。

  • EXCELのマクロ機能を教えて下さい

    お忙しい中、何時もありがとうございます。 EXCELで表を作成していますが、作業領域を一度に、表示したり非表示にしようとしています。 数式を入れる知識が無い為、【ツール】から【マクロの新しいマクロの登録】を使い、消したい行を指定、右クリックで【表示しないをクリック】。一行づつ消したり、CTRLキーを使い、行を先に指定してから一度に表示しないをクリックしてマクロの記録を終了させてみましたが、いざマクロ機能を使うと表のあるA列からAH列全てが非表示になってしまいます。 同じ要領で逆に表示する事をこの機能を使ってやってみましたがそれは反映されました。 どこに誤りがあるのか教えて頂ければあり難いです。 忙しい時間に申し訳ありませ

専門家に質問してみよう