- ベストアンサー
Officeで条件を満たす行を抽出する方法
- Office AccessまたはExcelを使用して、条件を満たす行を抽出する方法をご紹介します。検索対象セルには長文が入力されており、条件は複数の文字列の中からいずれかを含むものです。Excelではフィルタオプションを使用して成功することができます。初心者にもわかりやすく説明します。
- Officeソフトを利用している際に、条件を満たす行を抽出する方法を教えてください。検索対象セルには長文が入力されており、条件は複数の文字列の中からいずれかを含むというものです。Excelのフィルタオプションを使用すると、要件を満たす行を抽出できます。Accessでの操作方法も教えていただけると助かります。
- Officeソフトで条件を満たす行を抽出する方法について教えてください。検索対象セルには長文が入力されており、条件は複数の文字列の中からいずれかを含むというものです。Excelではフィルタオプションを使用して行を抽出することができます。Accessでの操作方法についても説明していただけるとありがたいです。初心者でも理解しやすいように説明してください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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に抽出結果が表示されます。
その他の回答 (2)
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答No.2です。 >(Sheet2のB2~E2のみ式をコピーしていないので空白でしたが、そこにもコピーすればよろしいのでしょうか?) 質問者様が仰る「そこにもコピー」の「コピー」とは、何をコピーの基とするのかという事が今一つ不明瞭ですので、良いのか否かという事は申せませんが、関数が入力されているセルからコピーして来られるのではなく、Sheet1のB2~E2の範囲をコピーして貼り付けて頂くか、若しくは普通に項目名を入力して下さい。
お礼
度々の説明不足、本当に申し訳ありません。 私がお聞きしたかった事の、「そこにもコピー」の「コピー」するものは、 > 次に、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/3221)
その「成功」とか「失敗」の具体的な例が無いと何が問題になってるのかがわからないんですが・・・
補足
ご回答ありがとうございます。 状況説明が上手くできず申し訳ありません。 「成功」と書いたもの 条件:説明列に「いう」もしくは「く」を含む [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]説明 とだけ出る。 条件を満たすセルがあるにも関わらず、抽出されませんでした。 長くなり申し訳ありません。
お礼
長文でも抽出できました。 本当にありがとうございました!
補足
ご丁寧に説明して下さり、ありがとうございます。 ご説明の通りの表を作成し、関数の入力を済ませましたところ、添付頂きました画像とほぼ同じ結果になりました。 (Sheet2のB2~E2のみ式をコピーしていないので空白でしたが、そこにもコピーすればよろしいのでしょうか?) 長文でのテストは明日やってみようと思います。 ありがとうございました!