• ベストアンサー

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

添付画像に於いて、予測シートの手配月(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/7941)
回答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/7941)
回答No.1

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

takosu40
質問者

お礼

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

takosu40
質問者

補足

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

関連するQ&A