• 締切済み

エクセルで必要なデータを取り出す

お世話になります。 エクセル2010なのですが、 「A医院」「内科・小児科・産婦人科」「0420-000-0000」「日曜休診」 「B医院」「外科・心療内科・脳外科」「0421-000-0000」「日曜休診」「C医院」「精神科・小児科・外科」 「059-000-6359」「日曜休診」 1行にこういうデータがあります。 「」はセルです。 条件を満たさない医院を空白にしたいです。 小児科と産婦人科にするとして 小児科と産婦人科両方を満たすものは「A医院」 なので、A医院の該当データである 「A医院」「内科・小児科・産婦人科」「0420-000-0000」「日曜休診」だけを残したいです。 データは表ではありません。上にも書いてある通り、1行になります。 行数が多いので、表に直すということはなしで、 方法を知っている方お願いいたします。

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 回答No.3です。  済みません、前に投稿された御質問   質問No.8942835 エクセルの行の抽出    http://okwave.jp/qa/q8942835.html と混乱して、抽出すべき条件を間違えておりました。  指定した複数の蚊が全て揃っている医院のデータのみを残すという事であれば、どこか決められたセル範囲に条件となるかを並べて入力する様にした方が、一々数式を書き直さなくても済みますので便利だと思います。  そういういう訳で、今仮にA2:D2のセル範囲内の何れか2個のセルに「小児科」及び「産婦人科」と入力するものとします。(A2:D2のセル範囲にはセルが4個ありますから、4つの科まで条件として入力可能)  その場合、回答No.3で説明させて頂いたのと同じ設定方法を用いて条件付き書式の設定を行って頂き、その際、「次の数式を満たす場合に値を書式設定」欄の中に入力する数式を次のものと差し替えて下さい。 =SUMPRODUCT(($A$2:$D$2<>"")*((COUNTIF(INDIRECT("RC"&MAX(COLUMN()-2,1)&":RC[1]",FALSE),$A$2:$D$2&"*")+COUNTIF(INDIRECT("RC"&MAX(COLUMN()-2,1)&":RC[1]",FALSE),"*・"&$A$2:$D$2&"*")>0)))<COUNTIF($A$2:$D$2,"<>*?")  尚、下の添付画像では、条件付き書式で条件に合わない医院のデータが入力されている箇所の書式を変更する際に、完全に非表示にしてしまったのでは、どの様な科が入力されているのか判らなくなり、本当に条件を満たしていないかどうかも判らなくなりますので、敢えて薄い水色で表示される様にしております。

worker001
質問者

お礼

お礼遅くなりまして大変申し訳ありません。事情がありましてネットが見られませんでした。 わざわざ、画像をつけていただきまして、恐縮です。 機会がございましたら、またよろしくお願いいたします。ありがとうございました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 「条件を満たす委員のデータのみを別の所にまとめて書き出す」という事ではなく、 >条件を満たさない医院を空白にしたい という事であれば、条件付き書式を使用して条件を満たさない医院のデータを非表示(データとしてはそのまま存在していますが、表示では見えない様にする)にするというのは如何でしょうか?  ※但し、以下の方法では各医院のデータが必ず4列一組で並んでいる事が前提です。 医院のデータが入力されているセルを選択   ↓ Excelウィンドウの[ホーム]タブをクリック   ↓ 現れた「スタイル」グループの中にある[条件付き書式]ボタンをクリック   ↓ 現れた選択肢の中にある[ルールの管理]をクリック   ↓ 現れた「条件付き書式ルールの管理」ダイアログボックスの中にある[新規ルール]ボタンをクリック   ↓ 現れた「新しい書式ルール」ダイアログボックスの「ルールの種類を選択して下さい」欄の中にある[数式を使用して、書式設定するセルを決定]をクリック   ↓ 現れた「次の数式を満たす場合に値を書式設定」欄の中に =COUNTIF(INDIRECT("RC"&MAX(COLUMN()-2,1)&":RC[1]",FALSE),"内科*")+COUNTIF(INDIRECT("RC"&MAX(COLUMN()-2,1)&":RC[1]",FALSE),"*・内科*")=0 と入力   ↓ 「新しい書式ルール」ダイアログボックスの[書式]ボタンをクリック   ↓ 現れた「セルの書式設定」ダイアログボックスの[表示形式]タブをクリック   ↓ 現れた「分類」欄の中にある[ユーザー定義]をクリック   ↓ 現れた「種類」欄に ;;; と入力   ↓ 「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック   ↓ 「新しい書式ルール」ダイアログボックスの[OK]ボタンをクリック   ↓ 「条件付き書式ルールの管理」ダイアログボックスの「適用先」欄をクリック   ↓ 医院のデータが入力されているリストが設けられているセル範囲をまとめて範囲選択   ↓ 「条件付き書式ルールの管理」ダイアログボックスの[適用]ボタンをクリック   ↓ 「条件付き書式ルールの管理」ダイアログボックスの[OK]ボタンをクリック

worker001
質問者

お礼

ご回答ありがとうございます。大変参考になりました。回答者様のエクセルの知識に感謝です。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

提示のデータは1行の中に3組の医院があり、その中の診療科目のセルに複数の科が中黒(・)で区切られていますので、処理が少々面倒になります。 診療科目の内科や外科を検索すると整形外科、脳外科等も検出されます。また、内科では診療内科も検出されます。 これらを回避するためには診療科目の先頭と後尾に中黒(・)を連結して、"・小児科・"や"・産婦人科・"のように検索文字列も加工しなければならないでしょう。 >行数が多いので、表に直すということはなしで、 模擬データは1行のみでなく複数行を提示されることをお勧めします。 また、検索する科目の例も複数を用意されると考え易いでしょう。 結果を別のセルや別のシートへ取り出す場合は関数の組み合わせ数式で処理できますが、検索条件に合わない組み合わせを直接削除する場合はVBAのプログラムを組まなければなりません。 条件を補足して回答を待たれると良いでしょう。 尚、私はVBAが不得手のため提言できません。

worker001
質問者

お礼

ありがとうございます。そのようにさせていただきます。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

例示データが1つしかなく、実際のシートのレイアウトが不明なのですが、どの行もA列(A1)からL列(L1)までの16個のセルに4組分のデータが、入力されているレイアウトで、小児科と産婦人科が入力されているデータをN1セルから右に表示させたいなら、以下の式をN1セルに入力して右方向に4つオートフィルコピーしてください。 =IFERROR(INDEX($A1:$L1,MATCH("*小児科*産婦人科*",$A1:$L1,0)+COLUMN(A1)-2),"") #操作の目的やレイアウトなどの詳細が分からないので、ひとまず小児科、産婦人科の順に記載されているセルを検索対象としましたが、逆の順のものも含まれている条件なら、数式を修正する必要があります。 また、検索用語をセルに入力するような場合は、別の数式のほうが合理的なこともありますので、ご質問のような操作がしたい目的を補足されたほうが良いと思います。

worker001
質問者

お礼

お礼遅くなりまして大変申し訳ありません。事情がありましてネットが見られませんでした。 機会がございましたら、またよろしくお願いいたします。ありがとうございました。

関連するQ&A

専門家に質問してみよう