• ベストアンサー

Excelでこんなことできますか?

次の様な表があります。  食品 │購入日  たらこ│10/8  りんご│9/3  わかめ│2/4  椎茸 │10/8 この表を並べ替え無しで、特定の購入日(10/8)に購入した食品をすべて(たらこ・椎茸)抽出したいのです。 VLOOKUPではTRUE,FALSEどちらを使っても"たらこ"しか抽出されません。 最終的には、 10/8│たらこ│椎茸 の様にしたいのですがいかがでしょう? できればワークシート関数のみで解決したいと思っています。 どうぞ知恵をお貸しください。よろしくお願いします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

   A     B    C    D   E F G H 1 食品    購入日 2 たらこ 10月8日 10月8日 たらこ 椎茸 → → → 3 りんご  9月3日 4 わかめ  2月4日 5 椎茸  10月8日 上表を想定し、C2に日付を入力し、D2から右に結果を出力してみます。 B列は日付属性とします。 A2:A5 に「dataA」の範囲名 B2:B5 に「dataB」の範囲名 を付けます。 D2:H2を選択し、D2に下記算式を入力し、Ctrl+Shift+Enterで登録します。 (配列数式なのでCtrlキーとShiftキーを押しながらEnterキーを押します。)   ※1.D2に下記算式を普通に入力し(この回答をコピーで可)Enter    2.D2:H2を選択しファンクションキーF2を押して    3.Ctrl+Shift+Enter で登録       が間違いないでしょう。 配列数式として登録できれば、式は{ }で囲まれて表示されます。 =IF(ISERR( INDEX(dataA,SMALL(IF(dataB=$C$2,ROW(dataA),99999),COLUMN()-3)-1)),""      ,INDEX(dataA,SMALL(IF(dataB=$C$2,ROW(dataA),99999),COLUMN()-3)-1)) 2行に分けていますがつながった1つの式です。 関数なので、データ内容が変われば更新されます。 該当しない場合の処理をしていますが、ある意味、単純な式です。 式の意味は、条件に合致するセルの行番号を求めて、INDEX関数を使い、昇順に表示しています。 順序を指定するために「COLUMN()-3」を使っています。D列が該当した1番小さな行番号になります。 また、条件に合致しない場合は行番号に99999を割り当ててエラー処理をしています。 関数でデータ抽出を行う例です。ご参考に。

その他の回答 (3)

回答No.3

ちょっと複雑ですが 食品をA1 購入日B1としたときD2に=IF($G$2=B2,A2,"")と式をいれ下へ必要行数分コピーします。(G2には10/8を入れる) 次にC2に=IF(D2="",C1,C1+1)の式を入れやはり必要行数分下へコピーします。 1|たらこ 1| 1| 2|椎茸 のような表が出来ますが歯抜け状態なのでこれをなおします。 C10からC14まで1から5までの数字を入れます。 D10に=VLOOKUP(C10,$C$2:$D$5,2,FALSE)を入れD14までコピー。 1|たらこ 2|椎茸 3|#N/A 4|#N/A 5|#N/A となります。 次にこれを横並びにします。 H2に=VLOOKUP(COLUMN()-7,$C$10:$D$14,2)をいれH6までコピーします。 10/8|たらこ|椎茸|#N/A|#N/A|#N/A| と表示されます。 |#N/Aが気になるときは関数で計算結果がエラーのときは計算しないようにすればok 途中の計算式が邪魔なときは別のシートへ「=」で引き出してから計算してください。

osafune
質問者

お礼

kiichi_goさん、こんにちは。 早速の回答ありがとうございます。 ムムムッ!スゴイっ!! そうかぁ。いくつかのステップに分ければイイんですね。(^o^)/ 早速、会社で試してみます。ありがとうございました。

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

こう言う検索型の問題を関数式だけでやるのは難しい と思います。どこが難しいのか下記に書いてみました。 良ければご覧になってください。 http://www.okweb.ne.jp/kotaeru.php3?q=528247 エクセルの使い方は (1)手操作(入力、コピー、書式設定、行列操作など    多数) (2)関数式<(1)と(2)はほぼ必ず組み合わせて    利用。> =sumからvlookup・TRANSPOSE・Dsumなど ウイザード的なものまであります。 (3)ウイザード(グラフ・ピボットテーブル・オート    フィルタなど) (4)VBA(マクロ) などに私は分類して考えていますが、#1のご回答などは(3)にあたるのですが、その結果が出た先の処理(本例では2件を同行に並べるなど)は手作業と言うことが多いので、#1のお礼に書かれたような要求になると思いますが、(4)を使わない解決しないでしょう。

osafune
質問者

お礼

imogasiさん、こんにちは。 早速の回答ありがとうございます。 そ~ですねぇ…やっぱりワークシート関数のみでシンプルにっていうのは難しいですね。

回答No.1

こういう事は関数でやるよりオートフィルターを使った方が良いと思います。 やり方: 表内にセルポインタをおきます(表内であればどこでも良い) 次にメニューよりデータを選択、プルダウンメニューよりフィルタを選択、オートフィルタにチェックを入れます。すると各項目名の横に▼が出来ますから、購入日の横の▼をマウスでクリックし10/8を選択します。

osafune
質問者

お礼

kiichi_goさん、こんにちは。 早速の回答ありがとうございます。 実は、現在オートフィルタをつかっているのですが、結果の表を別表として自動的に作成したいと考えているのです。 オートフィルタで結果を抽出し、それをコピーし罫線等を入れたフォーマットにペーストして、別表を作成しています。 毎週この作業を行なうのですが面倒なので、別表作成を完全に自動化したいのです。 なにか良いアイデアがありますでしょうか?

関連するQ&A

  • エクセル 条件を最初に満たしたセルの行の値の取得VBA

    いつもお世話になっております。 ある表においてA2以降に 2 FALSE 3 FALSE 4 FALSE 5 FALSE 6 FALSE 7 FALSE 8 FALSE 9 TRUE 10 FALSE 11 TRUE 12FALSE 13FALSE ・ ・ となっています。 上から調べて最初に”TRUE”であるセル(この場合はA9)の 行数の値(9)を取得するようなVBAはどのように記述すればよいでしょうか? 関数であればROW関数とVLOOKUP関数の組み合わせでできるのですが・・

  • falseとtrue 0,1,-1 の意味が知りたいです

    こんにちは。 大分前からなんとなくしっくり行かないことがあります。 excel でのワークシートの関数vlookupなどの引数に true/false がありますよね。 絶対値の絶対のイメージがtrue・・の気分なのですが結果は逆でした。 IF関数では 真→true  偽→false だったと思います。 私はIF関数でのtrue/false のイメージはしっくりいきます。 vlookupはどーしても納得いくイメージが持てません。 どなたか教えていただけませんか?どんな風にとらえればいいのか。 しかも確かACCESSやVBAの中では true→-1 false→0 vlookupでは true→1 false→0 じゃなかったでしたっけ? こちらの考えも?? こっちの方は以前知り合いに説明を受けて一度は納得したのですが、 今はよくわからなくなってしまいました。 教えてください。

  • VLOOKUP関数 エクセル関数教えてください

    =IF(ISERROR(VLOOKUP(B2,$E$1:$F$296,2,FALSE)),"",VLOOKUP(B2,$E$1:$F$296,2,FALSE)) という関数を入れて、品番をセルに入力して元表から品名を導く表を作成しました。うまく使えています。 これを元に =IF(ISERROR(VLOOKUP(B2,$F$1:$I$1000,2,FALSE)),"",VLOOKUP(B2,$F$1:$I$1000,2,FALSE)) という関数に直して、同じような表を作ろうとしたのですが、うまくいきません。 何が悪いのか分かりません。 どうすればうまくいきますでしょうか?

  • エクセル VLOOKUP について

    エクセルのVLOOKUP関数について質問です。 VLOOKUPでは文字列検索で、指定の値(文字列)を含むという検索値はできないのでしょうか? 現在A列に検索したいワードを含む文章が入っており、ワードを含む列の2番目のセル(Bの列)を 別シートへ呼び出そうとしたのですが、エラーになってしまします。 例えば、「りんご」という言葉を含む文章、含まない文章がある列で、検索値を「りんご」にして VLOOKUP関数を使用する事はできないのでしょうか? エラーになってしまうので、別シートにりんごと入力したセルを作成し、セル番号で指定してみたり、 書式設定を確認したりとしたのですが、成功しません。 もちろんFALSE(0)でもTRUE(1)でも試したのですが、できませんでした。 無理ですか?どこか自分が間違っていそうな点をご指摘いただけませんでしょうか?

  • エクセルのネストについて

    エクセルでアンケート表を作った際に、2つのセルの値の内容に対して2つとも同じ値の場合は◎、それ以外は空白としたい場合にIF、AND関数を使っての入力はどうしたらよいでしょうか? 検証1 検証2 結果 TRUE FALSE TRUE FALSE TRUE FALSE TRUE TRUE   ◎   わかりにくかったらすいません。上記のような感じで結果の欄への関数を教えてください。 IF関数について今ひとつ理解できておらず教えていただければ幸いです。 よろしくお願いします。

  • EXCEL 2003にて予定表を作成しています。

    EXCEL 2003にて予定表を作成しています。 祝日を、VLOOKUP関数にて表示しました。 =VLOOKUP(A5,$F$5:$G$20,2,FALSE) エラー( #N/A )を非表示にするための関数を 入力するも、上手くいきません。図添付 =IF(ISERROR(VLOOKUP(A5,$F$5:$G$20,2,FALSE),"",VLOOKUP(A5,$F$5:$G$20,2,FALSE)) 「入力した数式は正しくありません」と表示されます。 正しい数式を教えてください。よろしくお願いします。

  • エクセル表のグループ分け

    以前ここで 「エクセル2010を使用しています。  表の項目の冒頭にA,B,C...などの記号で分類する用のセルをつけ、その分類ごと、  たとえばAと分類した項目のみ別の表に反映することは出来ますか?  ある表をA,B,C...で分類し、その中のAの項目のみを別の表にする感じです。  フィルターを使って特定の分類の項目だけを表示させる方法ならわかるのですが…」 と質問した者ですが、その時に帰ってきた回答が 「記載した項目をVLOOKUP関数で比較抽出し  同時にIF関数で抽出されたものに通し番号をつけ  再度VLOOKUP関数で通し番号の通りにつめて表示させる  でOKです。」 というものでした。しかし、私はVLOOKUP関数、IF関数を使ったことがないのでよくわかりません。 とりあえずネットを参考にしてVLOOKUP関数を使ってみたのですが、 今度は表の中にたくさんあるAの項目のうち1つしか表示されないという疑問が発生しました。 VLOOKUP関数をコピーしてみても表示されるのは上記の1種類のデータだけ… どうすれば表の中のAの項目をすべて抽出して別の表にすることができるのでしょうか?

  • Excelで、大きな表から抽出する方法を教えて…!

    Excel2007の初心者です。 大きなもとの名簿から、行事に参加する会員と必用な項目を自在に 抽出する関数の使い方を教えてください。 ------- Vlookup関数とHlookup関数の基礎は理解して、別々には使えます。 元の大きな表全体を〔表全体〕と範囲指定しています。 添付図は、Vlookup関数で、〔5〕と〔7〕を入れて、武田と大船を抽出しています。 Hlookup関数で〔1〕と〔3〕と〔2〕……と入れて、市町村と氏名と地区名… と順序を変えてランダムに必用な項目と、選んだ会員の該当する項目を抽出したいのです。 --------- マクロを使わないで、Vlookup関数とHlookup関数の両方の機能を 同時に使う方法、または裏技を教えてください。

  • 乾燥食品について

    乾燥食品の膨潤率について、どなたかご存知の方はいらっしゃいませんか?干ししいたけ、きくらげ、乾燥わかめ、ひじきについて調べたいのですが、食品成分表を見てもわかりませんでした。お願いします。どなたか教えてください。

  • エクセル関数の解読について

    さっそくですが、ブック1があり、エクセル関数のvlookupを使って別ブック2から参照してあります、組み込まれている下記の関数の仕組みを解読したいのですが、別ブック2が行方不明で手元にはありませんのでわかりません。下記の関数は一つのブックから2つ(名称と価格)のシートから抽出しているのでしょうか? =IF($A2="","",IF(A1="",VLOOKUP($A2,'\\Tsclient\s\本体\[サンプル1.xls]名称'!$A$3:$H$1000,9,FALSE),VLOOKUP(A2,価格!A:G,1,FALSE))) どなたかお分かりでしたらお助けください。

専門家に質問してみよう