![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Excel2007で複数列を対象としたフィルタを行いたいのですが、どういう方法がありますでしょうか?(ピボットテーブル、マクロを使うのも可)
添付画像の表(1)が表(2)の中に存在しうる単語です。
たとえば「大阪」という文字列を選択すると表(2)の行3,4が抽出され、「朝日」の文字列を選択すると行1,2,4を抽出。「英語」であれば1行も抽出されないといった具合です。
実際には行・列・対象となる文字列ともに例よりも多い数での使用を考えています。また、表(2)の値は変化しえますが、そのたびに数式を見直したりといった手間は無いほうが良いです。
一旦テキストに落としてgrepとかも無しで、Excle内で完結させたいと思っています。
よい解決策を教えてください。
![「Excel2007:複数列を対象としたフ」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/d/82493_5497d6f845f3b/M.jpg)
No.1ベストアンサー
- 回答日時:
少なくとも「オートフィルタ」では出来ません。
フィルタの詳細設定(2003以前では「フィルタオプションの設定」。オートフィルタのオプションではないので注意)を利用すれば出来ますが,マクロでいいならマクロを使った方が簡単です。
サンプルマクロ:
検索したい言葉をどうやって与えたいのか不明なので,仮に「大阪」で固定にしときます。
検索対象範囲の与え方も不明なので,仮にSheet2のC2:G6の場合。
実際のシートはご質問で例示されたのとは色々違うという事なので,適宜工夫してください。
やってることは簡単で,言葉が有った行を表示し,無かった行は非表示にしています。
sub macro1()
dim s as string
dim c as string
dim target as range
dim res as range
dim h as range
s = "大阪"
set target = worksheets("Sheet2").range("C1:G6")
set res = worksheets("Sheet2").range("C1")
set h = target.find(what:=s, lookin:=xlvalues, lookat:=xlwhole)
if not h is nothing then
c = h.address
do
set res = union(res, h)
set h = target.findnext(h)
loop until h.address = c
end if
target.entirerow.hidden = true
res.entirerow.hidden = false
end sub
ありがとうございました。
頂いた回答を元にマクロを作ったところ、私のやりたかった事ができるようになりました。とても助かりました。
No.3
- 回答日時:
表は2行目からデータが入っているとして、列は例えばX列まで利用されているとしたらY1セルに検索の文字列を入力します。
Z2セルには次の式を入力して下方にオートフィルドラッグします。=IF(COUNTIF(A2:X2,Y$1)>0,1,"")
ある行に検索の文字列があればZ列には1が表示されます。
1行目を選択してから「ホーム」タブの「並べ替えとフィルタ」から「フィルタ」を選択します。
その上で、Z1セルの▼を操作して1を選択するようにすればよいでしょう。
No.2
- 回答日時:
こんばんは!
一例です。
とりあえず、検索条件は一つということでの方法になります。
↓の画像のようにSheet2のデータをSheet3に抽出するようにしてみました。
Sheet2に作業用の列を使わせてもらっています。
作業列G2セルに
=IF(COUNTIF(B2:F2,Sheet1!$B$2),ROW(),"")
という数式を入れ、オートフィルで下へずぃ~~~!っとコピーします。
そして、Sheet3のA2セルに
=IF(COUNT(Sheet2!$G:$G)<ROW(A1),"",INDEX(Sheet2!A:A,SMALL(Sheet2!$G:$G,ROW(A1))))
という数式を入れ、列方向と行方向にオートフィルでコピーすると
画像のような感じになります。
尚、空白セルに「0」が表示されてしまいますので
当方使用のExcel2003の場合ですが
メニュー → ツール → オプション → 「表示タブ」で
「ゼロ値」のチェックを外しています。
これでSheet1のB2セルに検索したい項目を入力すると
Sheet3にその項目を含む行が表示されると思います。
以上、参考になれば良いのですが
他に良い方法があれば読み流してくださいね。m(__)m
![「Excel2007:複数列を対象としたフ」の回答画像2](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/3/667667_5497e7a59ba6b/M.jpg)
ありがとうございました。
今回はNo.1さんの回答で問題を解決しましたが、この回答も私が思いつかなかったよいアイディアであり、今後の参考になります。
丁寧に画像まで貼り付けていただき、たいへん感謝しております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) エクセルで重複データから重複を削除して指定の列に抽出したい 11 2022/05/11 11:26
- Excel(エクセル) Excelのセル上の日付の不具合 3 2022/05/22 18:20
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- Excel(エクセル) 名前と日付が一致する箇所にフラグを立てる関数が知りたいです 4 2022/08/11 02:24
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Excel(エクセル) Excelに文字データのみを貼り付けたい 8 2023/05/03 15:38
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
会社のOutlookにてメールを予約...
-
「生産性ソフトウェア」とは何...
-
英数字のみ全角から半角に変換
-
Microsoft familyに追加されま...
-
会社PCのメールが更新されない
-
outlookのメールが固まってしま...
-
Microsoft Formsの「個人情報や...
-
VBAファイルの保存先について
-
Microsoft 365 の一般法人向け...
-
エクセルでXLOOKUP関数...
-
マイクロソフトオフィス
-
teams設定教えて下さい。 ①ビデ...
-
Outlook 電源OFFの受診の仕方
-
Excel2019と365、2021
-
Microsoft365の一部を解約したい
-
Excel テーブル内の空白行の削除
-
Outlookを立ち上げたらGoogleロ...
-
Outlook で宛先が複数の場合の人数
-
マクロ1があります。 A1のセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
英数字のみ全角から半角に変換
-
Excelで空白以外の値がある列の...
-
会社PCのメールが更新されない
-
Excel 日付を比較したら、同じ...
-
マイクロソフト 一時使用コード...
-
ウィンドウィズ メモ帳で日付だ...
-
MicrosoftOfficeの1ユーザー2...
-
Microsoft Formsの「個人情報や...
-
Officeの字体
-
エクセルでXLOOKUP関数...
-
Microsoft365で自動保存が出来...
-
Outlookで、任意のメールアドレ...
-
outlookのメールが固まってしま...
-
Microsoft 365 の一般法人向け...
-
Office2021を別のPCにインスト...
-
Microsoft 365のディフェンダー...
-
Excelに貼ったリンクについて E...
-
MicrosoftOffice2019なんですが、
-
Outlook で宛先が複数の場合の人数
おすすめ情報