初めて自分の家と他人の家が違う、と意識した時

Excel2007で複数列を対象としたフィルタを行いたいのですが、どういう方法がありますでしょうか?(ピボットテーブル、マクロを使うのも可)
添付画像の表(1)が表(2)の中に存在しうる単語です。
たとえば「大阪」という文字列を選択すると表(2)の行3,4が抽出され、「朝日」の文字列を選択すると行1,2,4を抽出。「英語」であれば1行も抽出されないといった具合です。

実際には行・列・対象となる文字列ともに例よりも多い数での使用を考えています。また、表(2)の値は変化しえますが、そのたびに数式を見直したりといった手間は無いほうが良いです。
一旦テキストに落としてgrepとかも無しで、Excle内で完結させたいと思っています。
よい解決策を教えてください。

「Excel2007:複数列を対象としたフ」の質問画像

A 回答 (3件)

少なくとも「オートフィルタ」では出来ません。


フィルタの詳細設定(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
    • good
    • 0
この回答へのお礼

ありがとうございました。
頂いた回答を元にマクロを作ったところ、私のやりたかった事ができるようになりました。とても助かりました。

お礼日時:2010/04/13 20:52

表は2行目からデータが入っているとして、列は例えばX列まで利用されているとしたらY1セルに検索の文字列を入力します。

Z2セルには次の式を入力して下方にオートフィルドラッグします。

=IF(COUNTIF(A2:X2,Y$1)>0,1,"")

ある行に検索の文字列があればZ列には1が表示されます。
1行目を選択してから「ホーム」タブの「並べ替えとフィルタ」から「フィルタ」を選択します。
その上で、Z1セルの▼を操作して1を選択するようにすればよいでしょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/04/13 20:55

こんばんは!


一例です。
とりあえず、検索条件は一つということでの方法になります。

↓の画像のように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
    • good
    • 0
この回答へのお礼

ありがとうございました。
今回はNo.1さんの回答で問題を解決しましたが、この回答も私が思いつかなかったよいアイディアであり、今後の参考になります。
丁寧に画像まで貼り付けていただき、たいへん感謝しております。

お礼日時:2010/04/13 20:54

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


おすすめ情報