- 締切済み
SUMとVLOOKUPの併用で、検索値がずれる
Excelを使って、いわゆる「運賃表」を制作しています。 隣駅間の距離を入力して、それをSUMを使って足して行くような形で各駅間の距離を計算し、 VLOOKUPを使ってその距離数を元に運賃を表示するような仕組みです。 ところが、一部の場所で距離と運賃が合わないのです。 画像で言うと下北沢から経堂までの部分です。 正しくは150円になるはずですが、120円と表示されています。 よく調べたら、距離は「3,1」なのに、実際VLOOKUPで検索していた値は「3,0」だったと分かりました。 このように、距離の値と実際に検索する値が噛み合わない箇所が他にも少しありました。 噛み合わない箇所は、全て検索される値が0,1少なくなっていました。 全部ずれているならともかく、一部だけと言うのも気分になります。 いろいろ調べてみたのですが、さっぱりわかりません。 SUMかVLOOKUP関数の不具合なのでしょうか。 VLOOKUP関数ですが、画像のK9の部分は、 =VLOOKUP($G14;運賃データ!$A$1:$B$20;2) のように設定しています。 値や運賃データ、VLOOKUPの設定に異常はないはずなのですが…。 書式の設定が原因でもないようです。 この現象の原因と解決策が分かる方がいらっしゃったら、教えていただけたら幸いです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7941)
>「実際は3.1になっていない」というのは、どういうことでしょうか…? 文字通り、3.1ではないという意味です。それ以上でもそれ以外でもありません。 G14の計算式の方にROUND関数を組み込んで、間違いなく(完全な)3.1を計算させた方が手っ取り早いかもしれませんね。 あるいは、エクセルのオプションで「表示桁数で計算する」の設定を入れて計算させる手もあります。見えてないところで3.1が3.1では無い状況を、自動で回避してくれます。 状況(=原因)を推測しようにも、G14でどこから何をどう計算しているのかの情報もありません。「;」と「,」然り、あなたのエクセルの(情報提供されていない)独自の状況は判りようも無いです、という事です。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! あくまで憶測ですが・・・ SUMで3.1を計算している訳ですよね? おそらく、3.0989といったような感じで正確に3.1にはなっていないのでは? セル幅を広げて小数点以下の数値をもう少し表示してみてください。 もしそうであれば、ROUND・ROUNDUP・ROUNDDOWN関数当を併用して小数点以下第1位までの表示にしてはどうでしょうか? ※ 余計なお世話かもしれませんが、 VLOOKUP関数の「検索の型」を指定されていませんので 今回はTRUE型にして =VLOOKUP(ROUND($G14,1),運賃データ!$A$1:$B$20,2,1) といった感じの方が良いと思います。m(_ _)m
- keithin
- ベストアンサー率66% (5278/7941)
G14に3.1であるように見えているのが、実際は3.1になっていないのが直接の原因です。VLOOKUP関数の問題ではありません。 簡易な方策としては 今の式:何やらいろいろ書き間違いがありますが =VLOOKUP($G14;運賃データ!$A$1:$B$20;2) を、 =VLOOKUP(ROUND($G14,1),運賃データ!$A$1:$B$20,2) のようにしてみて下さい。 また、場合によっては運賃データシートのA列の数列についても、全く同じようにROUND関数を噛ませてしっかり計算する必要があるかもしれません。
補足
, が ; になっているのはコンピュータ本体の言語設定などが問題かもしれません。 , で打ち込むとエラーが出てしまうので。 ROUND関数を使ってちゃんと表示できるようになりましたが、結局原因はよく分からぬままです。 「実際は3.1になっていない」というのは、どういうことでしょうか…?
補足
小数点以下を表示しましたが、 3,10000000.. となっています。 ただ、ROUND関数を使用したところ正しく表示が出来たので、結局はご指摘の通りかもしれませんが、「なぜ?」と言うモヤモヤは解けぬままです。 VLOOKUPでTRUE型を指定する時は省略可とありましたので、今回は省略してあります。