• ベストアンサー

エクセルの抽出について。

  A列       B列      1 商品名      使用薬剤 2 風呂用洗剤    トリクロサン、界面活性剤、パラベン 3 ハンドソープ   界面活性剤、メチルパラベン 4 台所用洗剤    パラベン、メチルパラベン、界面活性剤 5 洗濯用洗剤    メチルパラベン、トリクロサン エクセルでこのようなデータベースが約4000件あります。 商品に使われている薬剤をB列の使用薬剤という項目に しかもひとつのセルに薬剤名が入力されている状態です。 ここがネックになっていると思うのですが・・・。 例えば、抽出したいのが「パラベン」なのですが オートフィルタで「パラベンを含む」にすると 「メチルパラベン」は使用しているが、「パラベン」は使用していない 3のハンドソープと5の洗濯用洗剤も一緒に引っ掛かってくるのです。 抽出したいのは、2の風呂用洗剤と4の台所用洗剤なんですよね。 データベースの扱いにはまだ慣れておらず 職場にも分かる人がいません。 本当に困っています。 どのような操作をすれば正しく抽出できるでしょうか? オートフィルタでは無理なような気がします。 フィルタオプションの設定ではできますか? 毎日、悶々と考えていますが答えは見つかりません・・・。 よろしくお願い致します。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

提示のサンプルをそのままA1:B5にコピペして試してます。 D1からF1まで抽出条件にしたい同じタイトル 使用薬剤 と入れて、 D2を *、パラベン E3を *、パラベン、* F4を パラベン、* として、フィルタオプションの検索条件範囲を「$D$1:$F$4」で出ましたけど、、、

kitten_1979
質問者

お礼

早速のご回答、ありがとうございます。 papayukaさんのとおり、フィルタオプションでやってみました。 できました!!あがとうございました。 私、まだエクセルでのデータベースの扱いが出来なくて・・・。 また質問になってしまうのですが 検索条件範囲の D2を *、パラベン E3を *、パラベン、* F4を パラベン、* D2、E3、F4と1行づつ下がるんですね。 この1行づつ下げて検索条件を入力するということが大切なんでしょうか? 試しに同じ行に検索条件を入力したらダメでした。 何も引っかかってきませんでした。 よろしければ教えて頂けないでしょうか? 勉強不足で本当に申し訳ないです。 よろしくお願い致します。

その他の回答 (4)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.5

#1です。 このケースで複数列にする必要はなかったのに、変な書き方したましたので混乱させちゃったかな? 単純に D1:D4に 使用薬剤 *、パラベン *、パラベン、* パラベン、* で良かったので。 ちなみに同じ行にしたら And 検索です。

kitten_1979
質問者

お礼

いえいえ、こちらこそ勉強不足なので・・・。 申し訳ないです。 D1:D4で抽出条件を入力してやってみました。 最初に教えて頂いた複数列に入力するのと 同じ結果になりました。 なるほど! 同じ行にするとD1:F1にすると And検索になるんですね。わかりました。 質問にお答え頂き、本当にありがとうございました!

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.4

こういうことでよいのかな。 パラペンというつづりをaとします。 合成語のメチルパラペンはbaとなります。bはメチルというつづりの言葉です。 パラペンハイドレートというのがあればacです。 いちいちカナで薬剤名を書くのが面倒なので 上記で略します。 A1にaを入れます。(パラペン) A2:A6に a,b ac,b,a ac,b s,s,da a,m,am と入った形です。質問ではB列に当たります。 A列をB列に複写します。 ここで、B2:B6を範囲指定して、データ-区切り位置-カンマ・・・-次へ-カンマにV-完了で B2:D6に a b ac b a ac b s s da a m am のように各セルに分かれます。 E2に =IF(COUNTIF(A2:C2,$A$1)>0,MAX($E$1:E1)+1) と入れてE6まで式を複写します。 結果はE2:E6に 1 2 FALSE FALSE 3 FALSEの行は前後に言葉のつかない「a」はない、 数字の行は、それがあり、上からの連番を示しています。 Sheet2に行き A1に =OFFSET(Sheet1!$A$1,MATCH(ROW(),Sheet1!$E$1:$E$6,0)-1,0) と入れてA3まで式を複写します。 3はSheet1のE列のMAX値です。 結果 a,c ac,b,a a,m,am これで「パラペン」という単独語だけの含まれている成分が抜き出せました。 商品名も列数をうまくやれば出せます。 A1を他の成分薬剤に変えるとSheet2は瞬時に 結果が変わります。 以上のほかにはしょった点がありますが、長くなるのでよろしく。

kitten_1979
質問者

お礼

imogasiさん、ご回答ありがとうございます。 なっ、何だかとっても難しい。です・・・(><;) 本当はimogasiさんのように、私がエクセルのことを分かればいいのですが。 >A1を他の成分薬剤に変えるとSheet2は瞬時に 結果が変わります。 こっ これは素晴らしいです!! うぅ~ できるようになりたいです。。。 とりあえず月曜からはフィルタオプションでの抽出で作業をし始め その合間にimogasiさんに教えて頂いた方法を頑張って 自力で(汗)試していきたいと思います。 本当にありがとうございました!

  • s_yoshi_6
  • ベストアンサー率73% (1113/1519)
回答No.3

#2です。訂正します。 >『「パラペン」で始まるもの』または『「、パラペン」を含むもの』 は 『「パラペン」で始まるもの』または『「、パラペン、」を含むもの』または『「、パラペン」で終わるもの』としなければなりませんでした。 ということで抽出条件も、#1さんのものが正しい抽出条件になりますので、そちらをお使いになってください。

kitten_1979
質問者

お礼

s_yoshi_6さん、ご丁寧にありがとうございます。 どのように抽出条件を設定すればいいのかも分からずにいましたが s_yoshi_6さんのように 『「パラベン」で始まるもの』または『「、パラベン、」を含むもの』または『「、パラベン」で終わるもの』 papayukaさんの *、パラベン *、パラベン、* パラベン、* こういう考え方がすぐに出来ないとダメなんですね。 私の頭の中にはオートフィルタの『~を含む』と『~を含まない』しかありませんでした・・・。 また、よく使う抽出条件をマクロに登録する方法や 抽出解除後の『全てを表示させるボタン』を作る方法も 教えて頂いて本当にありがとうございます! 毎回、▼ボタンで「全てを表示させる」をしていたのですが 面倒だな。と思っていたところでした。 s_yoshi_6さん、丁寧なご回答、本当に感謝しています。ありがとうございました。 これで悶々とした日々(笑)から開放されます。

  • s_yoshi_6
  • ベストアンサー率73% (1113/1519)
回答No.2

もしそれぞれの項目の区切りが「、」であると決まっているのならば、フィルタオプションを使って、その抽出条件を『「パラペン」で始まるもの』かつ『「、パラペン」を含むもの』とされると抽出できます。 具体的には、Sheet1にご質問の表があるとして、Sheet2を抽出条件を記入するためのシートとし、Sheet2のB1:B3に次のように入力されると良いかと思います。    B 1 使用薬剤 2 パラベン* 3 *、パラベン* 以下の手順については下記ページを参考にして下さい。 http://www.atmarkit.co.jp/fwin2k/win2ktips/411excelfilter/excelfilter.html なお、抽出のたびにいちいち条件を設定するのは面倒だと思いますので、あらかじめ使用薬剤の種類の数だけSheet2のB列に条件を入力しておいて、抽出の手順をマクロに登録されておくと楽かもしれません。(薬剤の種類が多いと大変ですので、とりあえずよく使うものだけでも) 例えば、Sheet2を下記のようにします。(ここでは、他のものまで抽出される可能性のないものも、一応2つの条件を設定しています)    B 1 使用薬剤 2 パラベン* 3 *、パラベン* 4 使用薬剤 5 メチルパラベン* 6 *、メチルパラベン* 7 使用薬剤 8 トリクロサン* 9 *、トリクロサン* そして、[ツール] → [マクロ] →[新しいマクロの記録] で[マクロ名] を「パラペン」として記録を開始します。一番最初で書いた手順で「パラペン」を含む行の抽出が終わったら記録終了の■ボタンをクリックして終了します。 あとは、[データ] → [フィルタ] →[すべて表示] で元に戻した後、「メチルパラペン」「トリクロサン」についても同様に登録します。 以上の準備をすると、Alt+F8で登録されているマクロの一覧を開いて、適当な薬剤名を選択だけで、それを含むものが抽出されると思います。 なお、マクロをボタン登録すれば、さらに手順は簡略になりますが、そこまでやる必要があるかどうかは判断がつきませんので、ここでは割愛します。 ただ、抽出を解除して全てを表示させるボタンをツールバーかワークシート上に1つ作っておくと、データベースの使い勝手が良くなると思いますよ。一応手順のページを載せておきます。 ツールバー上に作る http://www.nurs.or.jp/~ppoy/access/excel/xlET008.html ワークシート上に作る http://homepage1.nifty.com/tabotabo/insat/excelp/excelp09.htm

参考URL:
http://www.atmarkit.co.jp/fwin2k/win2ktips/411excelfilter/excelfilter.html

関連するQ&A