• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル2007 リスト選択後の計算式)

エクセル2007 リスト選択後の計算式のエラー解消方法

このQ&Aのポイント
  • エクセル2007でリストから選択した項目に合わせて計算式を設定する方法について説明します。
  • 質問者は、P17を5とし、リストからA183PおよびA186Pを選択すると正しい計算結果が表示されるが、B186Pを選択すると誤った結果が表示されるという問題が発生しています。
  • エクセルのLOOKUP関数を使用する場合、検索範囲は昇順に並ぶ必要があります。質問者がB186Pを選択した場合、B186Pは検索範囲の最初の項目なので、正しい結果が表示されません。この問題を解決するためには、検索範囲を昇順に並べ替えるか、別の方法で計算式を構築する必要があります。

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

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

テストで判りやすいように P17に1にしまう。 セルに入れる式を=IF(OR(P17="",R16=""),"",P17*LOOKUP(R16,{"A183P","A186P","B186P";183,186,187})) (186-->187にする) のように変えてテストしてみてください。結果がやはり、おかしいですか? >式のA183P","A186P","B186PのA,Bは質問では全角のA,Bになっているようですか其れで意図どおりですか? 式とR16セルの値で、その点合致してますか? Pは半角英字ですか? 上記で問題が無ければ、その旨返答していただければ幸い(別観点の考え直しが必要)。 (私の「テストではうまく行くように思えるため) ーー 別観点の話だが、 LOOKUP系統の関数は LOOKUP(ベクトル形式) LOOKUP(配列形式) VLOOKUP(TRUE,FALSEの2種) HLOOKUP(TRUE,FALSEの2種) の4(6)つありますが、できれば、後の2者(のFALSE型)を使うほうが判りやすいと思うが。 並び順なども考慮する必要が無い点など。

tonkotsu0707
質問者

お礼

結局のところ、KJ186P-の-を全角の「-」に変えたら きちんと計算してくれました。なのでやはり、この文字列に何かしらの 計算が働いていたのかもしれません。 謎は解けないままですし、表記された時に若干微妙ですが これで対応したいと思います。 教えていただいた別の関数に関しましては、まったく無知なので 勉強してみますね。 ありがとうございました。

tonkotsu0707
質問者

補足

こんにちは 早々のご指導ありがとうございました。 簡単な文字列でテストをしてみると、ちゃんと出来るので 数式に誤りはないように思います。 実際、使いたい数式は =(IF(OR(P17="",R16=""),"",P17*LOOKUP(R16,{"KJ186P-3CJCA","KJ183P-3CRCA","KJ186P-3CRCA";186,183,186})))/1000 P17にかりに、100と入力しましたら KJ186P-3CJCAを選択した場合 18.60と出ないといけないのに どうしても18.30と出てしまうんです。 順番をかえてもだめです。 半角にしてみたり全角にしてみたりしてもだめです。 KJ186P-3CJCAという文字列がなんらかの数式になっているなんて事は あるのでしょうか もしも何かお気づきの点がありましたら、お知らせください。