Officeで条件を満たす行を抽出する方法

このQ&Aのポイント
  • Office AccessまたはExcelを使用して、条件を満たす行を抽出する方法をご紹介します。検索対象セルには長文が入力されており、条件は複数の文字列の中からいずれかを含むものです。Excelではフィルタオプションを使用して成功することができます。初心者にもわかりやすく説明します。
  • Officeソフトを利用している際に、条件を満たす行を抽出する方法を教えてください。検索対象セルには長文が入力されており、条件は複数の文字列の中からいずれかを含むというものです。Excelのフィルタオプションを使用すると、要件を満たす行を抽出できます。Accessでの操作方法も教えていただけると助かります。
  • Officeソフトで条件を満たす行を抽出する方法について教えてください。検索対象セルには長文が入力されており、条件は複数の文字列の中からいずれかを含むというものです。Excelではフィルタオプションを使用して行を抽出することができます。Accessでの操作方法についても説明していただけるとありがたいです。初心者でも理解しやすいように説明してください。
回答を見る
  • ベストアンサー

Officeで条件を満たす行を抽出したい

Office AccessまたはExcelで条件を満たす行を抽出したいのですが、上手くいきません。 Officeソフトは2002を使っています。 検索対象セル(Excel表現ですがここでは共通で使わせて頂きます)には長文(2000文字程)が入力されています。 条件は100個程の文字列のうちどれかを含むというものです。 Excelでフィルタオプションを使い、検索対象セルの文字数が長文でなければ成功しました。 ネットで検索してみたのですが、解決策を見つける事ができていません。 できればAccessで動作させたいと思っています。 Access Excel共に、基礎的な使い方しかできないので、初心者にもわかりやすく説明して頂けると大変助かります。 どうか、よろしくお願い致します。

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

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

 Excelの場合に関して回答させて頂きます。  フィルタオプションではなく、別シート上に抽出結果を表示させる方法は如何でしょうか?  今仮に、 [B2]説明  [D2]商品名 [E2]説明 [B3]*いう* [D3]あ1  [E3]あいうえお [B4]*く*  [D4]あ2  [E4]あけいうお       [D5]あ3  [E5]あうえきお       [D6]か1  [E6]かおくえい という表が、Sheet1上にあるものとして、Sheet3のA列を作業列として使用し、Sheet2上に抽出結果を表示させるものとします。  まず、Sheet3のA1セルに次の関数を入力して下さい。 =MAX(IF(COUNT(Sheet1!$B:$B),MATCH(9E+307,Sheet1!$B:$B),0),IF(COUNTIF(Sheet1!$B:$B,"*?"),MATCH(CHAR(1),Sheet1!$B:$B,-1),0))&""  次に、Sheet3のA3セルに次の関数を入力して下さい。 =IF($A$1+0>ROW(Sheet1!$B$2),IF(SUMPRODUCT(COUNTIF(INDEX(Sheet1!$E:$E,ROW()),INDEX(Sheet1!$B:$B,ROW(Sheet1!$B$2)+1):INDEX(Sheet1!$B:$B,$A$1+0))*(INDEX(Sheet1!$B:$B,ROW(Sheet1!$B$2)+1):INDEX(Sheet1!$B:$B,$A$1+0)<>"")),COUNT($A$2:$A2)+1,""),"")  次に、Sheet3のA3セルをコピーして、Sheet3のA4以下に貼り付けて下さい。  次に、Sheet2のB3セルに次の関数を入力して下さい。 =IF(INDEX(Sheet1!$B:$B,ROW())="","",INDEX(Sheet1!$B:$B,ROW()))  次に、Sheet2のC3セルに次の関数を入力して下さい。 =IF(ROWS($3:3)>COUNT(Sheet3!$A:$A),"",IF(INDEX(Sheet1!$C:$E,MATCH(ROWS($3:3),Sheet3!$A:$A),COLUMNS($C:C))="","",INDEX(Sheet1!$C:$E,MATCH(ROWS($3:3),Sheet3!$A:$A),COLUMNS($C:C))))  次に、Sheet2のC3セルをコピーして、Sheet2のD3~E3の範囲に貼り付けて下さい。  次に、Sheet2のB3~E3の範囲をコピーして、同じ列の4行目以下に貼り付けて下さい。  以上で準備は完了で、後はSheet1のB列にキーワードを入力しますと、Sheet2に抽出結果が表示されます。

ku_ma_ma
質問者

お礼

長文でも抽出できました。 本当にありがとうございました!

ku_ma_ma
質問者

補足

ご丁寧に説明して下さり、ありがとうございます。 ご説明の通りの表を作成し、関数の入力を済ませましたところ、添付頂きました画像とほぼ同じ結果になりました。 (Sheet2のB2~E2のみ式をコピーしていないので空白でしたが、そこにもコピーすればよろしいのでしょうか?) 長文でのテストは明日やってみようと思います。 ありがとうございました!

その他の回答 (2)

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

 回答No.2です。 >(Sheet2のB2~E2のみ式をコピーしていないので空白でしたが、そこにもコピーすればよろしいのでしょうか?)  質問者様が仰る「そこにもコピー」の「コピー」とは、何をコピーの基とするのかという事が今一つ不明瞭ですので、良いのか否かという事は申せませんが、関数が入力されているセルからコピーして来られるのではなく、Sheet1のB2~E2の範囲をコピーして貼り付けて頂くか、若しくは普通に項目名を入力して下さい。

ku_ma_ma
質問者

お礼

度々の説明不足、本当に申し訳ありません。 私がお聞きしたかった事の、「そこにもコピー」の「コピー」するものは、 >  次に、Sheet2のC3セルに次の関数を入力して下さい。 > =IF(ROWS($3:3)>COUNT(Sheet3!$A:$A),"",IF(INDEX(Sheet1!$C:$E,MATCH(ROWS($3:3),Sheet3!$A:$A),COLUMNS($C:C))="","",INDEX(Sheet1!$C:$E,MATCH(ROWS($3:3),Sheet3!$A:$A),COLUMNS($C:C)))) >  次に、Sheet2のC3セルをコピーして、Sheet2のD3~E3の範囲に貼り付けて下さい。 >  次に、Sheet2のB3~E3の範囲をコピーして、同じ列の4行目以下に貼り付けて下さい。 上記のSheet2のB3~E3の範囲をコピーして、B2~E2にも貼り付けるか何かすれば、添付頂いた画像のように表示されるのかと勝手に思っていました。 変な質問をしてしまい、申し訳ありませんでした。 また、長文でも無事に抽出できました。 本当にありがとうございました!

  • nerimaok
  • ベストアンサー率34% (1125/3220)
回答No.1

その「成功」とか「失敗」の具体的な例が無いと何が問題になってるのかがわからないんですが・・・

ku_ma_ma
質問者

補足

ご回答ありがとうございます。 状況説明が上手くできず申し訳ありません。 「成功」と書いたもの 条件:説明列に「いう」もしくは「く」を含む [B2]説明  [D2]商品名 [E2]説明 [B3]*いう* [D3]あ1  [E3]あいうえお [B4]*く*  [D4]あ2  [E4]あけいうお       [D5]あ3  [E5]あうえきお       [D6]か1  [E6]かおくえい ([]内はセルの場所です) Sheet1へ上記のように入力し、 フィルタオプションの設定で、 抽出先→指定した範囲 リスト範囲→Sheet1!$D$2:$E$6 検索条件範囲→Sheet1!$B$2:$B$4 抽出範囲→Sheet1!$G$2 と設定し、OKを押すと、 [G2]商品名 [K2]説明 [G3]あ1  [K3]あいうえお [G4]あ2  [K4]あけいうお [G5]か1  [K5]かおくえい と、無事に抽出が成功します。 「失敗」としたもの 上記の説明列[E3]~[E6]に長文を入力し、同じように実行すると、 [G2]商品名 [K2]説明 とだけ出る。 条件を満たすセルがあるにも関わらず、抽出されませんでした。 長くなり申し訳ありません。

関連するQ&A

  • エクセル フィルタオプションで 特定の文字列を含む行を全て抽出する方法がわかりません

    エクセル2002を使用しています。 エクセルフィルタオプション設定で、特定の文字列を含む行を全て抽出する方法がわかりません。 たとえば sheet1    A    B    C    1 項目1 項目2 項目3  2  あ   い    う    3  う        あ    4  え        い 5      う       Sheet2   A         B         1 抽出文字列 2 あ  3   4 (計算式) 5 (以下抽出結果)   上記のようなデータがあり、sheet2!a5以降に「あ」が該当する行を全て抽出するといった式を組みたいのですが、 Sheet2 a2に抽出文字を入力し、a4に「=or(sheet1!a2=a2,sheet1!=a2,sheet1!=a2)」といった検索条件式を組み、フィルタオプションで、 ・リスト範囲 Sheet1!$a$1:$c$5 ・検索条件範囲 $a$3:$a$4 ・抽出範囲 $a$5  と指定するのですが、うまく抽出できません。 ちなみに抽出対象が文字列でなく数字なら(たとえばSheet1のデータの文字をあ→1 い→2のように全て数字に置き換えてSheet2!a2に1を入力)抽出できるのですが・・・ 文字列をセル参照して条件式を組む場合に何か気をつけることがあるのでしょうか?文章が長くなってしまい申し訳ありません。良い方法があればご教授お願いします。

  • エクセル2003以上のフィルタオプションで似たデータがあると検索条件以外のデータも抽出されてしまう

    受験データ処理のためマクロでフィルタオプションを実行したいのですが、エクセル2003や2007で以下のような抽出をすると正しい抽出ができません。どうすればよいのでしょう。 検索条件「県立田舎」でフィルタオプションを実行すると「県立田舎」だけではなく「県立田舎東」「県立田舎女子」など「県立田舎」に続く文字がある学校も抽出されてしまいます。(エクセル2002では問題なく抽出できるのですが・・)(OSはXP)

  • フィルタオプションの設定で空欄を抽出

    エクセルどなたか教えてください!! フィルタオプションの設定で空欄を抽出したいのですが(オートフィルタではありません) セルに条件は、なにを入力したらよいですか

  • フィルタオプション AND条件で抽出が出来ない

    Excel Version:2000 0~Zで始まる部品コードの管理を行っています。 とあるリストがあり、そのなかで0,A,B,Cから始まる部品コードを対象外とする必要があります。 4つの条件が必要なので、下記のような条件を作成し、 フィルタオプションにて抽出を行おうとしました。 品目コード <>0* <>A* <>B* <>C* しかし、実際に抽出してみると、フィルタリングが行われません(行が青くならない)。 検索条件範囲を2行目まで(<>0*)にすると、フィルタリングは行われます。 何か間違った設定を行っているのでしょうか?

  • エクセルで、複数の条件で一括抽出したい

    エクセルで、いくつかの条件で一致するセルを抽出するのですが、 オートフィルタだと、ひとつずつ条件を入力して抽出する事しか出来ません。どこかに条件をため込み入力しておいて、何らかの操作でそれを一括抽出する方法はありませんか?

  • Excelの抽出でのワイルドカードの使い方についておたずねします。

    Excelの「フィルタオプションの設定」で、抽出条件に「山?」と入力すると、2文字ではなく「山」で始まるデータがすべて抽出されます。 過去のデータに同じ質問があり、「="=山?"」と入力すれば正しい結果が得られることはわかりましたが、なぜ「山?」では、だめなのでしょうか? 初心者の素朴な疑問です。 WindowsXP・Excel2002 & 2003です。

  • 条件にマッチする行を抽出するVBAを教えてください

    アイデア、またはVBAプログラムの例を教えていただきたく、質問させていただきます excelで、添付画像のようなリスト管理表を作っています。 リストは600行近くになります。 やりたいことは、D3またはE3に商品名または保管庫を入力すると、リスト内から、合致する行だけが抽出される、というもの。 D3とE3は、どちらか片方にのみ条件が入る。D3とE3の内容を変更するとリアルタイムで抽出結果も変更されるようにしたい。 触る人が初心者なので、難しい作業を一切せずに、D3またはE3を打ちかえるだけで必要な項目だけのリストとなり、印刷するだけでいいようにしたいわけです。 本来ならオートフィルタですればいい話ですが、どうしてもD3という離れたセルの入力内容で抽出したいのです。 VBAでなく、D3のセル内容を使ってD8~のオートフィルタが行えるなら、それが一番理想です。 が、自分でやってみた限りはできませんでした。 フィルタオプションならどうかとやってみたところ、一回目は抽出できました。しかし、D3またはE3の条件を変更しても、リアルタイムで抽出結果が切り変わらない。 フィルタオプションの抽出結果を別のセルに出せばいいのですが、そうすると無駄な情報が残り、ただ印刷しただけでOK・・というわけにいきません。(印刷範囲を区切るとかでなく、シートの見栄えが必要な情報だけにならないと…扱う初心者が混乱します) 自分なりには、VBAにより、 D3・E3のセル内容が書き換わったらフィルタオプションの抽出結果をいったん同シートの別セルに出し、抽出結果部分だけを別のシートにカット&ペースト成形。そのシートを印刷させればよい。 という考えになりましたが、やってみたら、なぜか別のブックに同じものが形成され、抽出した結果だけ単独のデータにできません。 そもそももっと良いアイデアがあればそれをおしえていただきたい。 あるいは、VBAで目的達成できるように問題点をご指摘ください。 一応、プログラムを書いておきます ■添付画像のデータが入っているシート(『一覧』という名前のシート)内コード Private Sub Worksheet_Change(ByVal Target As Range) ' If Target.Column = 4 Then If Target.Row >= 3 And Target.Row <= 3 Then Call Filter Call copy End If End If End Sub ■サブルーチンFilter() 標準モジュールに記載 Sub Filter() ' Filter Macro 'フィルタオプションを使って同シート内「D1100」以降に抽出結果を出します ActiveWorkbook.Worksheets("一覧").Select '一覧表はD7~F1000。検索条件はD2~F3までの範囲に名前を付けたもの Range("一覧表").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "検索条件"), CopyToRange:=Range("D1100"), Unique:=False Range("A1").Select End Sub ■サブルーチンcopy() 標準モジュールに記載 Sub copy() ' ' copy Macro ' '抽出された内容(45行目~100行目まで)を別のシートにコピーします ActiveWorkbook.Worksheets("一覧").Select Rows("45:100").Select Selection.Cut ActiveWorkbook.Worksheets("抽出結果").Select Rows("4:4").Select Selection.Insert Shift:=xlDown Range("A1").Select End Sub

  • EXCELのフィルタオプションで

    EXCELでフィルタオプション(AdvancedFilter)を使ったデータの抽出がしたいのですが、 空白以外のセルを抽出するには、検索条件範囲に何と書き込めばいいのでしょうか? オートフィルタのように「<>」と書き込んでもだめでした。(空白セル「=」は出来たのに) お願いします。

  • エクセルで複数の条件で抽出するには

    エクセルで顧客管理をしていますが複数の条件で抽出するにはのヘルプと同じ方法でやっているつもりなのですが抽出されません。 ちゃんと見出し部はリストからコピーして空白行をリスト上部に作って範囲指定しているつもりなのですがフィルターオプションの設定をしただけでは駄目なのでしょうか?オートフィルターだけでは抽出しきれないものですから教えてください よろしくお願いいたします。

  • テーブル フィルタ < 抽出されない

    アクセス2010です。 テーブルには、 **************** フィールド1 # () <> **************** と入っています。 画像の様に フィルターで **************** < **************** から始まる文字を抽出しようとすると 検索結果が **************** フィールド1 # () **************** になります。 フィルターで **************** < **************** を含む値を抽出条件にすると、何も抽出されません。 **************** > **************** で終わるにすると 「正しい値を入力してください。」 となります。 **************** フィールド1 # () <> **************** この状態で <> を抽出するにはどうすればいいでしょうか? 全て半角です。

専門家に質問してみよう