こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ExcelでのVLOOKUP関数について

キー1を1000倍したうえで完全一致のVLOOKUP関数を使うと#N/Aエラーが発生します。
表示上は同じように見えますが内部的に異なる値となっているのでしょうか?
試しにエラー行に対して、キーとターゲットとなる当該セルを「=」でつないで確認しても「TRUE」となります。

添付画像は、
検索先としてA列に基準キーを130.168~130.192(step 0.001)で各行へ入力し、B列はA列を1000倍、C列はB列をROUND関数で整数値に丸めたものをキーとしました。
D列にVLOOKUPで参照する値を入力し、E列以降で以下の異なるパターンで値を参照しています。

(1)【E・F列】
・E列に整数値をキーとして130168~130192(step 1)で入力。
・E列をキーとしてB~D列のVLOOKUP関数としています。
  『=VLOOKUP(E3,B:D,3,FALSE)』
(2)【G・H列】
・G列にE列/100をキーとして計算。
・G列をキーとしてA~D列のVLOOKUP関数としています。
  『=VLOOKUP(G3,A:D,4,FALSE)』
(3)【I列】
・E列をキーとしてC~D列のVLOOKUP関数としています。
  『=VLOOKUP(E3,C:D,2,FALSE)』

シートを複製し、キーの入力範囲を0.001~0.025(E列は1~25)にした場合はエラーがでませんでした。
その他の確認としてはTEXT、JIS、ASCなどを組み合わせて文字列としたキー同士のVLOOKUPではエラーにならず値を参照できています。

投稿日時 - 2020-08-11 11:11:44

QNo.9783891

困ってます

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

》 B列はA列を1000倍
Excelに限らず、商用PCは小数点を含む計算には弱いと肝に銘じておきませう。
「小数点を含む計算」の最たる物が時刻計算です。(日付のシリアル値は整数だけど、時/分/秒の其れは小数のオンパレードです!)
其れから小数→整数にする際のコツは必要最小限の桁で四捨五入がお奨めです。
従って、B列の式 =A*1000 は =ROUND(A*1000,0) とするのが私の常套手段です。御試し下さい。

投稿日時 - 2020-08-12 19:02:47

お礼

>商用PCは小数点を含む計算には弱い
>小数→整数にする際のコツは必要最小限の桁で四捨五入
>B列の式 =A*1000 は =ROUND(A*1000,0) とする

見えている情報のみを信じ、特性を知らずに利用していると思わぬところに落とし穴があると気づかされました。

教えていただいた情報をヒントに以下のページも見つけることが出来ました。
https://docs.microsoft.com/ja-jp/office/troubleshoot/excel/floating-point-arithmetic-inaccurate-result

ありがとうございます。

投稿日時 - 2020-08-17 14:02:31

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

整数値の完全一致を返したいのであれば、F3のセルは
=VLOOKUP(E3,C:D,2,FALSE)

とすべきではないですか?

1000倍した数を検索しても130168.…になっているのですから。
ROUNDで処理したところからのVLOOKUPをするだけでいけるはずです。

投稿日時 - 2020-08-11 16:37:12

お礼

申し訳ありません、今回の一覧表の目的としてお伝えしていませんでした。
A~D列と、E~のデータは別表からのデータとなりまして、
その突合せを目的として今回の数式を組んで検証しておりました。
後者の表に入力された値はE列の整数値のみですので、A
列の小数値を1000倍する必要がありましたが、小数値の計算をしたところVLOOKUPで正常に取得できない状態となったため質問させていただきました。

投稿日時 - 2020-08-17 14:13:50

ANo.1

役立たずの判讀不能な添附圖!!

投稿日時 - 2020-08-11 14:18:20

お礼

何度か投稿し直したのですが、OKWAVEへ投稿した添付図が荒れてしまい閲覧困難な状態となってしまいました。
サイズによるものと思いますが、文字で何とか伝える手段も大切とのことで文章メインとさせていただきましたことお詫び申し上げます。

投稿日時 - 2020-08-17 14:08:09

あなたにオススメの質問