• ベストアンサー

excel2000 で条件に一致するセル検索

二つの条件に一致するセルを検索する方法について、ご指導お願いします。 C列 NO D列 作業日 E列 作業NO とあります。 D2セル と E2セルに検索したい、作業日と、作業NOを入力して、G2セルに 該当するNOを、写真のように表示させたいです。 検索条件といたしまして、作業NOは完全一致ですが、作業日は検索条件日から6日以内にあるかどうかです。また、作業日と作業NOの並び昇順、降順ではなくランダムです。 G2セルにどういった関数を入れればいいか、アドバイスを頂ければ幸いです。 よろしくお願いいたします。

  • puyopa
  • お礼率87% (459/525)

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

条件に該当する行が「1つも無い」か「あっても一つである」場合 =SUMPRODUCT((E4:E100=E2)*(D2<=D4:D100)*(D4:D100<=D2+6),C4:C100) を入力 条件に該当する行が「2つ以上ある可能性がある」場合 =MIN(IF((E4:E100=E2)*(D2<=D4:D100)*(D4:D100<=D2+6),C4:C100)) をCtrl+Shift+Enterで入力。

puyopa
質問者

お礼

解答ありがとうございました。 とてもシンプルで、まったく無駄がないため、核心にすぐたどりつけました。 後者の関数を採用させていただきましたが、前半の関数もSUMPRODUCT の勉強になり、 大変有意義でした。 ありがとうございました。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

お示しのデータを見る限りではかなりの期間のデータがあるように見られますのでSUMPRODUCT関数などでは計算に負担がかかるように思いますね。作業列を作って対応するのがよいでしょう。 それにしても検査の結果で該当するNOのみを表示させるのがご質問の内容ですが、できればそのNOと関連するデータを別のシートに表示させるようにしてはいかがでしょう。 図でお示しの元のデータがシート1のA2セルから下方にNOが、B2セルから下方に作業日が、C2セルから下方に作業NOが入力され、その他の項目がF列までの行に入力されているとします。 シート2は検索のためのデータを入力するとともに検索結果を表示させるためのシートとします。 シート2のA1セルには作業日の文字を入力し、B1セルには2010/12/19などと入力します。A2セルには作業NOの文字を入力し、B2セルには13などと入力します。 そこでシート1では作業列としてK2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(AND(B2>=Sheet2!B$1-6,B2<=Sheet2!B$1+6,C2=Sheet2!B$2),A2,"") シート2の例えば3行目はシート1の項目名をコピーして貼り付けます。 シート2のA4セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR(ROW(A1)>MAX(Sheet1!$K:$K),COLUMN(A1)>10),"",IF(INDEX(Sheet1!$A:$J,MATCH(SMALL(Sheet1!$K:$K,ROW(A1)),Sheet1!$K:$K,0),COLUMN(A1))="","",INDEX(Sheet1!$A:$J,MATCH(SMALL(Sheet1!$K:$K,ROW(A1)),Sheet1!$K:$K,0),COLUMN(A1)))) ご質問の内容とは離れた内容ですが参考になりましたら幸いです。

puyopa
質問者

お礼

解答ありがとうございました。 アドバイス頂けた内容については、まだ完全に理解出来ませんでしたが、何度も読み直して是非理解させていただきたいと思います。 ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 該当データが一つしかないのであれば・・・ 100行目まで対応できる数式だと G2セルに =IF(COUNTBLANK(D2:E2),"",INDEX(C5:C100,SUMPRODUCT(((D5:D100-D2)<=6)*(E5:E100=E2)*ROW(A1:A96)))) で大丈夫だと思います。 ただし、実際問題として複数該当セルがある場合もあるかと思います。 その場合の一例です。 ↓の画像のようにF列を作業用の列としています。 作業列F5セルに =IF(AND(D5-$D$2<=6,E5=$E$2),ROW(A1),"") としてオートフィルでずぃ~~~!っと下へコピー! そしてG2セルに =IF(COUNT(F:F)<ROW(A1),"",SMALL(F:F,ROW(A1))) という数式を入れオートフィルで下へコピーすると 画像のような感じになります。 ※ 余計なお世話だったらごめんなさいね。m(_ _)m

puyopa
質問者

お礼

解答ありがとうございました。とても分かりやすい内容でした。 またわざわざシュミレーションまでしていただいて、ご親切にありがとうございました。 後半の記述では、作業列を使うことで、分かりやすさがアップして、動作も軽い内容ということで、 とても良いと思います。 但し、ここでは残念ながら、作業列が使えない条件でしたので、採用は見送らせていただきました。

関連するQ&A

  • 【Excel】条件を満たすデータを全て取り出す

    Excel2003を使用しています。 ある書類を作成するための下準備として、条件を満たすデータを全て取り出したいのですが、うまくいかないので、教えてください。 例えば、G7に入力されているデータがC列に入力されているデータと一致したら(必ず1個以上あります)、一致するD列とE列のデータをそれぞれ別セルに全て取り出したいのですが、どのようにすればいいでしょうか? よろしくお願いします。

  • Excel関数で一致した条件を合計する方法

    Excelの関数を使って、E2:E4のセルにF列の「A」~「D」に 一致した場合、G列の「8」または「9」を加算する方法を教えて下さい。 例えば、スギの場合だと...... スギの1日目が「A」の時、F1:G4の表をもとに、「8」になり スギの2日目が「C」の時「7」になり スギの3日目が「A」の時「8」になり、 E2の合計は「8+7+8」と加算されるということです。 スギの合計は23、 マツの合計は25、 サクラの合計は28というふうになればいいのですが・・・。 どなたか教えて下さい。お願いします。   A   B   C   D   E    F  G   1     1日  2日  3日 合計  A  8 2 スギ  A   C   A       B  9 3 マツ  C   D   A       C  7 4 サクラ B   B   D       D  10

  • VBAを使って検索したセルをコピーして別の場所に貼り付ける。

    こんにちは。 業務でエクセルを使っていたのですが、 あまりに毎回時間がかかってしまうため、 VBAを利用して自動化したいと考えています。 まず、以下のようなシートが存在します。 A   B      C D E     F       G  H 1             2  なす          とまと   3 20 3 かぼちゃ         えんどう  4 55 4 きゅうり         りんご   2 82 5 とまと           6                7               みかん  3 10 8 にんじん         ごぼう  9  21 9 はくさい         うり   10 33 10 ねぎ 次のような作業を自動化したいのです。 1.A列に入っている野菜の名前と一致するものがF列にあるかどうか検索する。 2.もし一致するセルがあれば、そのセルとその横のセル、もう一つ横のセルをまとめてコピーしてそれぞれC、D、E列で、検索したもとの野菜と同じ行にペーストする。 3.この操作をA列にある全ての野菜について行い、 もし、F列に一致するものがなければ、CDE列は空欄にしておく。 4.A列一番下まで完了すれば作業終了。 以上です。 よろしくお願い致します。

  • 列ごとの数値の一致と不一致を調べるVBAについて

    画像のように各列ごとにランダムな数値が入力されています。この時に各列ごとに同じ数値が入っているかいないかを調べたいのですが、どのようにプログラムを作ればいいかわからなく質問しました。 画像の内容としては、列Aのセル中の数値と列Bのセル中の数値は一致しないのでB15セルに"1" 列Aのセル中の数値と列Cのセル中の数値は『66』が一致するのでC15セルには何も入力せず というように D15セルは列Aと列Dの一致、不一致の結果 C16セルは列Bと列Cの一致、不一致の結果 D16セルは列Bと列Dの一致、不一致の結果 D17セルは列Cと列Dの一致、不一致の結果 を入力できるプログラムがあれば教えていただければ幸いです。よろしくお願いします。

  • エクセル関数でセル個数検索で2つの条件が一致する行数を求める方法はあり

    エクセル関数でセル個数検索で2つの条件が一致する行数を求める方法はありますでしょうか? セル個数の場合=COUNTIF(A1:A50,"晴れ")でセル個数を求めますがB1:B50のセルに曜日が記入されているとしてA列の晴れとB列の日曜日が一致するセルが何回(何行)あるか求める関数はありますでしょうか?よろしくお願いします。ソフトはXPを使用しています。

  • エクセルにて条件一致をカウントさせる

    <データ>  セルA セルB 1  qqq   www 2  hhh   uuu 3  mmm   ooo 以下続く   <条件>  <結果>  セルD セルE 1  qqq    www     1 2  qqq    ttt      0 使用関数 countif(A:B,D1:E1)        ↑       複数では出来ない 上の様な感じでセルA、Bにそれぞれ文字列(複数)が入っていて条件に当てはまる場合(セルD,Eと一致する場合) にカウントさせたいのですがカウントできません。 良い方法はないでしょうか?

  • エクセル複数条件一致の数式

    質問失礼します。 下記のエクセルデータから、E列のセルに、条件にあわせて5か6、もしくは空白を表示させる数式を作りたいと考えています。 条件として セルE2に5を表示さる場合 D2がa4の時、A列から、同じa4を検索し、この場合は、行10と行11が該当します。 その該当する行から、 セルD2の文字列a4がある行のA列のセル、この場合は、セルA2のa1 と文字列が一致するセルB11の11行目が選択され、その行にあるC列の数字を、E2セルに表示させたいです。 E列に入れる数式は作ることが可能でしょうか? 色々試してみましたが、どうしてもうまくできませんでした。 よろしくお願いします。   A  B  C   D    E 1        2 a1  a2   5    a4   5 3 a1  a3       a3   6 4 a1  a1       5 a2  a3   5    a1   5 6 a2  a1       7 a3  a1   6    a2   5 8 a3  a1       a4   6 9 a3  a4   5    a2   5 10 a4  a3   6    a3   5 11 a4  a1   5    a2

  • 条件に一致しない時間の場合に警告メッセージを出すようにするにはどうすればよいでしょうか

    前回、QNo.3023122 日にちごとの作業時間の合計を出すにはどうすればよいのでしょうか (http://oshiete1.goo.ne.jp/qa3023122.html) という質問をさせていただいた者です。 今回教えていただきたいのは、条件に一致しない時間の場合に警告メッセージを出すようにするにはどうすればよいかということです。 具体的には算出した一日あたりの作業合計時間が8時間以外であれば警告メッセージを出したいということです。 サンプルデータとしては A列  B列 C列  D列           E列          F列                                    G列 年  月  日  作業内容        作業時間       作業時間合計チェック                      作業時間合計/日 2007  5   1  営業           4:00                                                8:00 2007  5   1  提携先との打合せ  2:30                                                 8:00 2007  5   1  会議           1:30                                                8:00 2007  5   9  社内での作業      1:00                                               8:00 2007  5   9  提携先との打合せ  0:30                                                8:00 2007  5   9  営業           6:30                                                8:00 2007  5   10  会議           1:00         作業時間の合計が正しくない可能性があります。         4:00 2007  5   10  営業           1:00         作業時間の合計が正しくない可能性があります。         4:00 2007  5   10  提携先との打合せ    1:00         作業時間の合計が正しくない可能性があります。      4:00 2007  5   10  会議           1:00         作業時間の合計が正しくない可能性があります。      4:00 というもので、F列にどのような記述をすればよいかが分からないでおります。 私が試したのは、F3のセルに  =if(or(g3<8,0<=g3<8),"作業時間の合計が正しくない可能性があります。","") という記述をしたのですが、うまく出来ませんでした。 どこがいけないのかまったく分かりません。 お分かりになられる方がおられましたら、教えてください。

  • 【firefox】検索バーの検索語句履歴の並びを変えたい。

    【firefox】検索バーの検索語句履歴の並びを変えたい。 どういう順番で並んでいるのか、イマイチわからないのですが、少なくとも時間列ではなさそうです。 これを時間列で並び替えるのは出来ないのでしょうか? 要するに、最新の検索語句が一番上になり、その後も昇順降順、任意に設定出来ると理想なんですが、そういう設定があるのかどうかわかりません。 よろしくお願いいたします。

  • 【EXCEL】条件が一致したら、入力が可能になる。

    (画像を添付しています。) 「条件が一致したら、入力が可能になる」方法を探しています。 【バージョン EXCEL2010】 -- 例) 条件選択セル:B2セル ⇒ ここで条件『A』『B』『C』のいずれかを選択します。 入力欄セル:D3セル ⇒ 条件選択セルで『A』を選んでいた場合のみ入力可能       E3セル ⇒ 条件選択セルで『B』を選んでいた場合のみ入力可能       F3セル ⇒ 条件選択セルで『C』を選んでいた場合のみ入力可能 -- このようなことを行ないたいです。 ご教授お願いいたします。

専門家に質問してみよう