• ベストアンサー

データの抽出について

エクセルの関数について質問します。 あるデータから特定の文字を含む行などを抽出する場合、通常オートフィルター機能を使いますが、これを関数で抽出することはできますでしょうか? 日付が入っているデータ(200行くらい)からある特定の日付で、さらに特定の文字を含まれているものを抽出し利用したいと考えています。 AND関数を使った場合、特定のセルで指定(たとえばB2='2007/3/1'、C2='ある特定の文字')はできるのですが、B2:B100の中から='2007/3/1'でなおかつ、C2:C100='ある特定の文字'といった絞り込みができずに苦戦しています。 よろしくお願いいたします。

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

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

◆関数による方法です ★特定の文字を「ああ」とします =IF(ROW(A1)>SUMPRODUCT(($B$2:$B$100="2007/3/1"*1)*($C$2:$C$100="ああ")),"",INDEX(B$1:B$100,SMALL(INDEX(SUBSTITUTE(($B$2:$B$100="2007/3/1"*1)*($C$2:$C$100="ああ"),0,10^5)*ROW($B$2:$B$100),),ROW(A1)))) ★この式を、右と下にコピー

saab_2005
質問者

お礼

maron―5様 早速のご返答ありがとうございます! EXCEL初心者には、ハードルが高いのか初めて見る関数ばかりでした(汗) じつは、予約管理表のようなものを作成したいと考えておりまして、 シート1に100件くらいの予約データ(日付や特定の文字)がはいっており、そこからある特定の日付と文字を抽出し、別のシート2に表示させたいと考えています。     3/1 3/2 3/3 みかん  1→3/1でみかんが含まれるデータがある場合に1を表示 りんご     1→3/2でりんごが含まれるデータがある場合1を表示 ばなな  →該当するのが無い場合は何も表示されない といったようにシート2の各セルにシート1の内容を抽出して表示できるように関数を入力したいと考えています。 説明不足で申し訳ございません。 もしよろしければ、具体的に教えていただけませんでしょうか? よろしくお願いいたします。

その他の回答 (1)

回答No.2

少々反則的ですが、CONCATENATE関数とオートフィルタの合わせ技です。 A2=2007/3/1 B2=あいう 抽出したい文字列「あい」 とすると 1)C2に以下の関数を入力 =CONCATENATE(YEAR(A2),"/",MONTH(A2),"/",DAY(A2),B2)  ※結果、C2には「2007/3/1あいう」と表示されます。 3)オートフィルタオプションで、【[2007/3/1]で始まる】 and 【[あい]を含む】 を抽出 いかがでしょうか?

saab_2005
質問者

お礼

ご回答、ありがとうございます。 このような方法もあるんですね。 CONCATENATEという関数は初めてみました。 EXCELは奥が深いですね。 ありがとうございました。

関連するQ&A

  • EXCEL:ゼロ以外のデータを詰めて抽出する方法

    初めて投稿します。よろしくお願いいたします。 EXCEL2000を使用しています。 オートフィルタを使わずに 関数でデータを抽出する方法で悩んでいます。 下記<データ>が存在しています。 2行目がゼロ以外のものを、 別シート<抽出>に上から詰めて抽出したいのです。 <データ>   A列 B列 C列 D列 E列 1行 1  2  3  4  5  ←日付 2行 5  3  0  2  0  ←数字 <抽出>別シート   A列 B列  1行 1  5 2行 2  3 3行 4  2   ↑  ↑   日付 ゼロ以外 関数については中級レベルだと思います。 いろいろ試したのですが、関数を組み合わせてもなかなかうまくいきません。 どなたかご教授いただけないものでしょうか? よろしくお願いいたします。

  • 今日の日付のデータをすばやく抽出するには・・

    売上日報をエクセルで作っています。 A列に1から順にNOを入れています(LOOKUP関数を使うためです) B列に日付を入れています。 C列に社名を入れています。 その他の列にもいろんなデータが入っています。 本日の日付だけをすばやく抽出したいと思うのですが、どうすれいいか分かりません。 オートフィルタで今日の日付を選ぶ方法はやれます。 でも、もっと早く抽出できる方法はないでしょうか? 数ヶ月分のデータが入っているため、オートフィルタの三角をおしたあと、今日の日付を探すのに結構手間取ります。 もっとすばやく抽出したいのです。どんな方法でもいいです。どなたか教えて下さい。

  • データ抽出

    アクセス2003でデータ抽出をしたいと考えています。 クエリ上の複数のフィールドに同じ日付でフィルターをかけて抽出したいです。 例えば、AフィールドとBフィールドとCフィールドに2009/6/22をフィルターをかけてこの日付ににあてはまったものを抽出したいと思っています。(どのフィールドも同じ日付です) そして、抽出したデータをレポートにして、印刷したいです。 やり方はできれば、簡単なやり方があれば一番良いのですが、もしなければVBAの構文を教えて頂ければ幸いです。 よろしくお願いします。

  • データ抽出

    VBA初心者です。 エクセルで2枚のシートを練習用で作成しました。 画像上段がシート1で元データです。 下段が転記先の表で、シート2です。 シート2は、今はデータが参考に貼りつけてありますが 普段はマクロで作業後は消去して、空白にしています。 今したい処理が 元データをINPUTBOX関数を使って抽出し、 NO,購入日付、分類、感想、備考のデータを下段画像シート2のように 転記したいのです。 抽出条件のキーになるのは、主に「購入日付」と「分類」です。 どこかのセルに、日付を範囲指定で入力すれば、条件に当てはまる データをシート2に表示させたいです。 四半期ごとのデータを検索したいためです。 INPUTBOX関数でなくても、どこかの特定のセルに範囲指定する日付を入力 して、抽出してもかまわないです。 あと、分類は割と「飲料水」を抽出して、印刷する頻度が多いのですが 今後の参考に、全部の分類を抽出できるスタイルが望ましいです。 現在は、一行一行日付と分類を目視で確認しながら シート2にコピペ作業しているので 時間がかかります。 エクセルの機能でフィルタ等をしてみたのですが、 関数やVBAで素早くしたいのですが、なかなかコードが思いつきません。 お願いします。

  • エクセルのオートフィルタでのデータ抽出&カウント

    エクセルのローデータでのオートフィルタでのデータ抽出&カウントで困っています。 A列にNo.、B列にデータB、C列にデータC、D列にデータDがあるとします。 それぞれの列に1~9までの数字があり、 それぞれの列、 データの一番下(正確には1行開けて)にはSUMやCOUNTIFなどの関数(計算式)が入っています。 で、これをフィルターにかけ抽出した際、この抽出したデータのみで計算の値を表示したいのですが、 やってみると 全データの計算の値で表示されてしまいます。 どうすればよいのでしょうか? 大変困っています。 よろしくお願いいたします。

  • エクセルのオートフィルタについて

    エクセルのオートフィルタについてですが、一番取り扱いに困っている所は、社員の給与リストとかで、ある特定のデータ、例として事務員(一つの行の例えば一つのセルに名前、一つ横のセルに給与の数字(数値データ)がはいっている)を抽出した場合(事務員の記号がどこか同じ行にはいっているとして)数値の列を開いているセルで関数処理したい場合、表示されている数字だけを処理する場合と隠れている(多分)データも処理してしまう場合があり大変戸惑っています。なんとかどちらかに統一したいのですが、自分なりに調べましたが分かりません。どなたかご存知ないでしょうか。また、このオートフィルタで特定の数字や文字を抽出しようとしてもうまくいく時とそうでない時があります。なぜなのでしょうか。これはバグと考えても?

  • エクセルVBA 日付で抽出、並び替え

    こういう場で初めて質問させていただきます。 どうぞよろしくお願いします。 エクセルVBAで日付(月毎)でデータを抽出し、並び替えを行いたいのですが, B列に日付が入りC~F列には帳簿の仕訳が入ります。 ここで B2 に日付が入って、C2~F2とC3~D3にデータが入った場合に オートフィルタをかけたら、3行目は日付の欄が空白なので うまく抽出できません。 なお、2行目と3行目は1つの仕訳なのでばらばらになるのも困ります。   仕訳は最低1行から最大で6行になります。 このように日付欄は1行だけど、その日付に対応する内容が数行に渡って入るような場合に日付から月毎にデータ抽出するには どのようなコードを書けばいいのでしょうか? A B    C      D     E    F  日付 借方科目 金額 貸方科目 金額  10/10 消耗品  300    現金   500        雑費   200   10/9   交際費  500    現金   500   10/8    雑費   200     現金   200 汚い表ですが、上記のような場合です。 10/10の分は2行で1つになりますので、このような場合です。 どうかよろしくご指導お願いします。 

  • EXCEL20001分ごとのデータを抽出したい

    お世話になっておりますm(__)m(このごろは頻繁に(^^ゞ) タイトルどおり、1分ごとのデータを抽出したいのです。 データは次のようになっています。 A列1行目から縦に日付です。 2002/1/1 2002/1/1 2002/1/1 2002/1/1 2002/1/1 2002/1/1 上記のように同じ日付がずーっとつづいています B列1行目から縦に時間です。 0:30:04 0:30:06 0:30:08 0:30:10 0:30:12 0:30:14 0:30:16 ・ ・ ・ 上記のように2秒ごとにデータがあるのです。 ただし、C列にもその日付と時間に対応したデータがあります。 2秒ごとにデータがあるのですが、 それを1分ごとのデータを抽出したいのです。 どうにかこうにかしてできないものでしょうか? 関数とかでできるでしょうか? VBAとかはぜんぜんやったことがないので、 もしそれをつかわなければ出来ない場合は、 詳しく説明してくださればうれしいです(涙

  • オートフィルタ抽出データに連番をつけるマクロ

    オートフィルタで抽出したデータに連番をふりたいと思っています。このサイトで調べた結果、オートフィルタをかけてのオートフィルでの連番入力はできないと知りました。 現在しようとしているのは   A  B  C 1 クラス NO 氏名   2 1    ○△ 3 2    □× 4 1    ★♪ というデータがあり、項目にオートフィルタをかけている状態です。クラスを抽出した場合にそのクラスでの通し番号(連番)を付けたいのです。SUBTOTAL関数だと、連番が表示されるのはオートフィルタで抽出している間だけです。SUBTOTALでつけられた連番を、オートフィルタを解除しても残しておくにはどうしたらよいでしょうか。やはりコピー&ペーストしかないのでしょうか?似たような質問が多々ありますが、コピー&ペースト以外の方法をご存知の方、どうか教えて下さい。

  • オートフィルターで抽出されたデータの参照方法について

    1000件以上のデータをA,B、C列にオートフィルターをかけて抽出されたデータのA,B、C列およびD列目の値を参照する式を組みたいのですが、当然のことながらオートフィルターをかける都度、表示されるセル番地が変わるので式がくめません。 多分、マクロでコピーしてどこかにペーストすればいいのでしょうが、まったくわかりません。お教えください。

専門家に質問してみよう