• ベストアンサー

条件一致の別シートから、セルデータ抽出

添付画像に於いて、予測シートの手配月(F2~F6)のデータを、実績シートから抽出する為のF2~F6に入力する関数をご教授下さい。 条件としては (1)予測シートの手配済?項目が”済”ならば、オーダ番号と一致するデータを実績シートから検索し、そのデータ行から手配月を抽出する。手配済?項目は"済"が入らない場合は必ず” ”となる。 (2)添付画像に於いてはオーダ番号が重複しているが、その場合、実績シートの若番の行のデータを抽出。 (3)予測シートのオーダ番号の並びはランダムであり、昇順降順には成らない。 (4)添付画像ではデータは5行だが、実際は3000~5000行はある。 私の方で、予測シートのF2セルに次の関数を入力しましたが、戻り値は#N/Aとなってしまいました。 =IF(D2="","",LOOKUP(A2,実績シート!A:A,実績シート!D:D)) 以上宜しくお願いします。

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

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

>#N/A 見た目はどちらも「同じ数字」が記入されているように見えますが,実際はどちらかのシートのオーダー番号列が「数値」で記入されており,他方のシートのオーダー番号が「数字で書かれた文字列」で記入されています。現時点ではどっちがどうなっているのかは,こちらにも判りません。 まっさらのエクセルに数字を記入すると,「数値で記入されている」状態になります。一方,何かヨクワカラナイ操作をしていたり,不適切な関数で計算させて表示している場合,「数字で書かれた文字列」になってしまうと,計算できなくなるということです。 「数値」と「数字で書かれた文字列」と,どちらを使っても構いませんが,統一しなければいけません。 なお非常にしばしば見かける失敗ですが,ここまでの説明を受けて勝手に「書式を確認しましたが違いを見つけられませんでした」でデキナイと訴えるご相談も多く見かけますが,「書式を確認しました。書式を変更しました。」では,対処にはならないので注意してください。 >実際の予測リストではオーダ番号項目の番号は >別の全予測オーダリストから製品グループ分をINDEX関数など使用し、抽出しています。  : >実績リストの方は、オーダ番号+他の番号があるので、関数により共通となる管理番号部分を関数で抽出しています。 このどちらも,「不適切な関数式」になっている可能性があります。「具体的な数式」を見てみないと,どちらをどう直しましょうとお話しする事はできません。 また,それぞれの数式は適切でも,それぞれの数式がそもそも元データとしている「オリジナルリスト」の方で,「数字が文字列で記入されている」可能性もあります。 とは言え,イチイチイチイチあなたのエクセルの今の数式を根掘り葉掘り聞いていても日が暮れてしまうので。 暫定的に,実績シート,予測シートの「両方について」,それぞれの「オーダー番号列」に今現在記入されている今のままの数式を 現状: =今の数式 となっているのを 変更後: =(今の数式)*1 と変更してください。

takosu40
質問者

お礼

ご回答有り難うございます。おっしゃるとおり、関数により表示させた書式にもんだ尾があったみたいです。暫定的対処法(簡単明瞭)で思い通りの動作となりました。感謝申し上げます。

その他の回答 (2)

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

実績シートがシート1に有り、予測シートがシート2にあるとします。 シート1には作業列を設け、F2セルには次の式を入力して下方にドラッグコピーします。 =A2&B2 シート2のF2セルには次の式を入力して下方にドラッグコピーします。 =IF(OR(A2="",COUNTIF(Sheet1!F:F,A2&B2)=0),"",INDEX(Sheet1!D:D,MATCH(A2&B2,Sheet1!F:F,0))) 作業列を設けることはデータ数が多い場合には計算速度を速めるうえで特に効果的です。

takosu40
質問者

お礼

ご回答有り難うございます。実際のリスト以外では動作するのですが、実際のリストでは#N/Aが表示したままとなります。KURUMITOさんのご回答で間違い出はないようですが、私の既存関数により適切な書式になっていなかったようです。申し訳ございませんが今回keithinさんのご回答にて問題クリアになったことからkeithinさんのご回答をベストアンサーとさせていただきます。本当に有り難うございました。

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

ご質問の状況ではLOOKUP関数は使えませんので, F2: =IF(D2="済",VLOOKUP(A2,実績シート!A:D,4,FALSE),"") のように計算します。 #参考 済記入済みでオーダが実績に「無い」場合は,判りやすくエラーになるようにしてあります。

takosu40
質問者

お礼

ご回答有り難うございました。最終的には、私がオーダ番号を表示比較させるための書式に問題があったようです。ご回答いただいた関数は問題なかったのですが、今回は#N/A表示解決のご回答を頂いた、keithinさんをベストトアンサーにさせていただきます。本当に有り難うございました。

takosu40
質問者

補足

早速のご回答有り難うございます。添付画像のリストでは動作良好です。只、実際のリストで確認書しところ、#N/A(値が数式または関数に対して無効です)と出てしまいます。基本的には添付画像と実際のリストに相違は無いです。しかし実際の予測リストではオーダ番号項目の番号は別の全予測オーダリストから製品グループ分をINDEX関数など使用し、抽出しています。実績リストの方は、オーダ番号+他の番号があるので、関数により共通となる管理番号部分を関数で抽出しています。それが問題なのでしょうか?エラーとなる要因をご教授いただきたくお願いします。

関連するQ&A

  • 2つの条件からシート2に抽出

    シート1 A1は手入力D4手入力、H2は=D2&C2 担当者と週で検索して抽出する式を教えて下さい。何度もすみません。 上手く出来なくて1行しか抽出しないんです。 上記の表から1週目だったら、1週目の担当者のデータをシート2の表に抽出 週2だったら2週目の担当者データを抽出 A1・D1は手入力 A3は=IF(COUNTIF(Sheet1!D$2:D$1000,B$1)=0,"",MATCH($B$1&$D$1,Sheet1!$H$2:$H$1000,0)) 上記の様にシート2に表示したいんです。 細かく教えて下さい。何度やっても1行目のデータしか抽出しないんです。 A3=IF(COUNTIF(Sheet1!D$2:D$1000,B$1)=0,"",MATCH($B$1&$D$1,Sheet1!$H$2:$H$1000,0)) B3=IF($A3="","",IF(VLOOKUP($A3,Sheet1!$A$2:$H$1000,COLUMN(B1),0)="","",VLOOKUP($A3,Sheet1!$A$2:$H$1000,COLUMN(B1),0))) A4の2行目以降1になってしまって同じ物しか出ないんです。 Aの番号の抽出方法の式を教えて下さい。

  • エクセルで、条件にあう複数の行を別のシートに抽出する

    《どなたか、お教え下さい》   エクセルで、条件にあう複数の行を別のシートに抽出してまとめる。 「sheet1」の下記の基本データを「sheet2」に「得意先」ごと「日付」の早い順にまとめたいのでが。関数を使ってできないものか、どなたかお教え下さい。「マクロ」や「Access」は使用したことがないので、関数を使ってやりたいと思いますが、できるものでしょうか。よろしくお願いします。 sheet1 番号 得意先 日付 商品名 商品詳細 金額 備考 1   A 2   B 2   B 4   D 5   E 6   F 2   B 3   C 5   E   A    B  番号  得意先   1   A      2   B   得意先名は、番号を入力することで表示されるように   3   C   関数「VLOOKUP」を使って表示させるようにしていま   4   D   す。    5   E   6   F  

  • 別シートに抽出

     データを別シートに抽出したい。 画像を参照して下さい。 シートの「一覧」を別シートへ関数を使って抽出したのですが、 思うような結果になりません。お教え下さい。 別シートに VLOOKUP(A3,'一覧'!$A$3:$E$36,2,1) VLOOKUP(A3,'一覧'!$A$3:$E$36,3,1) VLOOKUP(A3,'一覧'!$A$3:$E$36,4,1) VLOOKUP(A3,'一覧'!$A$3:$E$36,5,1)の関数をセルに入れてセル事に 抽出します。その時に別シートに A01・A02・A03・A03・A04・・・・ の順序で抽出したいのですが、うまく抽出できません。

  • 条件に一致する行データを別シートに抽出する

    日付別の各データが入力された総括のシートがあり「0」とします。 別に13個の項目別シートを固定の様式で作ってあります。「1~13」とします。 シート「0」のB2~B30までセル上に入力するデータが1~13の整数として入力する訳ですが、その入力されたデータセルの中で該当する数字を条件として抽出し目的のシートの決められた座標から順に行を開けずに表示したいのです。 例えばシート「0」のB列に6という数字が入力されていたら同じ行A、C、Dのデータを全てシート「6」のA、B、Cに表示させたいのです。 同じように他の数字も該当するシートに該当する数字の全てを表示したいのです できるだけ判り易く教えてくださいお願いします。

  • 複数シートから空白ではない行をすべて抽出

    タイトル行A1:D1、データの中身は、A2:D11の全く同じ様式のシートが複数あります。シート名はバラバラです。 全シートの空白ではない行を全て別の集計シートに抽出したいです。 空白行は抽出しません。 これを関数でどのようにつくればよいのでしょうか? 関数で無理ならVBAでお願いします。

  • Excel 複数シートから複数条件を別シートに

    Excel2007を使っています。 添付画像のように、A社、B社へ送った見積のうち、発注があったものだけを 別シートに月別一覧として表示させたいです。 A社、B社は別々のシートです。 初めのうちはシート毎にフィルタを使って抽出していたのですが、 データが大量にあるため、別シートで分かりやすく見れるようにしたいです。 また、当てはまる行のうち全ての項目を抽出するのではなく、添付画像のように指定した項目のみを表示させたいです。どなたか教えて下さい

  • 条件に一致するデータを別シートに詰めて表示させる

    エクセルについての質問です。列に項目、行に数値及び文字列が入っている元データがあります。R列の中で特定の文字列にあたる行のD列だけを抽出し、別シートに表示させたいのですがどのようにすればよろしいのでしょうか。関数についてあまり知識がありません。お助け願えないでしょうか。

  • データ表から条件一致データを抽出し別の1シート表示

    エクセルでマスター表から、データを抽出して表示させるのに困っています。 具体的には、下図1のB1~D10のデータ表があり、これをSheet2に下図2のように並べて、11行目から、4列おきに表示させたいのですがどうしたらよいのでしょうか。 以前に類似の質問があり、回答(http://qanda.rakuten.ne.jp/qa6497557.html)を参考にさせていただいたのですが、関数のみで表示され、簡明だったのですが、各々別々のシートに各人を抽出するケースのため、 今回の場合の一つのシートに逐次4列おきに表示しようと、コピーペースト等しても、うまくいきません、また数行下がった位置からスタートするだけで正しい表示がされません。これに使われた関数を何か一工夫する形で、できないでしょうか。 もし難しければ、VBAで教えていただけないでしょうか。 なお各図の下に示した数式は、上記回答であった数式です。 宜しくお願い致します。

  • ある条件の複数の氏名を別シート抽出

    添付画像のサンプルのような表があるとします。 これを例えば、「契約者リスト」の20XX年Y月の契約に〇が入っている人の名前を全員分、「契約抽出」に抽出する方法はありませんか?関数だけでお願いします。 「契約抽出」の青色のセルに任意の月を入力するとその月のものが抽出されるようにしたいです。 列番号を特定するために3行目と4行目の間に非表示にするテクニックを作ってもかまいません。

  • 条件にあうデータを別シートにコピーしたい。

    下記のようなデータがシート1にあります。  A  B  C  D  E   F 1支店 氏名 個数 〆  資格  成績 2大阪 田中 5  10     0 3大阪 小林 12 20 ×   100 4東京 佐藤 20 30     50 5東京 倉本 3  10 ×   0 6東京 野村 18 15     200 これを資格がD列【×】に該当するデータすべて、 E列【0】に該当するデータすべて を別シート2に一覧にしたいのです。 今回であれば  A  B  C  D  E   F 1支店 氏名 個数 〆  資格  成績 2大阪 田中 5  10     0 3大阪 小林 12 20 ×   100 4東京 倉本 3  10 ×   0 このようになるような結果にしたいのですが 毎回まずD列が【×】のデータだけを抽出して別シート3に貼り付け 次にE列が【0】のデータでかつ資格が【空白】のデータを抽出して シート3の最下部に張り付ける。 そして支店別に並び替える、という作業を繰り返していますが、 データの更新頻度が早くデータも約1000行あり順次増えていく予定です。 ですので更新のたびに一覧を作成するのに時間がかかり困っています。 何か良い方法があれば教えていただきたいのですが・・・ よろしくお願いします。 なお、例の最上段のABCDEFエクセルの列番号 最左列の12345はエクセルの行番号のつもりです。

専門家に質問してみよう