• 締切済み

エクセルの関数について

abs関数で求めた数値に対応する値をVLOOKUPで検索することができないのは、何故でしょうか?

みんなの回答

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

>6:00-6::07=0:07  1   表は0:05は1 0:06は2 0:07は3 という感じです。のに1を返してきます。 1を返す理由は良くわかりませんが、例示のデータ(引き算の順が逆?)で6::07から6:00を引き算すると0:07と表示されますが、実際は正確に「0:07」と同じではありません。 このケースでは、引き算した答え(2つのセルを引いたセル)から0:07と入力したセルを引き算すると、「######」のエラーが表示され、マイナスの時間になっていることを示しますので実際は0:07よりもわずかに小さい値となります(セルの表示形式を「数値」にして15桁以上表示してみてください)。 このように、小数点以下の数値を引き算したときは、入力した値よりもわずかに大きいあるいはわずかに小さい値となる可能性がありますので、VLOOKUP関数では1つずれた結果になることがあるわけです。 一方、時間データをオートフィルコピーした場合も、実際に入力した結果と異なる結果になります。 例えばA1セルに「0:01」、A2セルに「0:02」と入力して下方向にオートフィルコピーするとA3セルの「0:03」は入力した「0:03」と同じではなく(この場合も入力値がわずかに小さい)、VLOOKUP関数などで、この数値を参照する場合は注意が必要です。 これらの丸め誤差の影響を避けるようにするには、リスト側と検索値側で、それぞれ以下のような数式で丸め誤差を解消する(入力値と同じ結果になる)ようにします。 VLOOUP数式のリストの数字(例えば0:01を開始値として0:01刻みの数値を入力する場合、以下の式をオートフィルコピー) =TEXT("0:01"*ROW(A1),"h:mm")*1 検索値(引き算の数式)は以下の式にしてください(引き算の答えの部分を入力値と同じ結果にする関数) =TEXT(検索値,"h:mm")*1

7693380
質問者

お礼

皆様ありがとうございました。うまく機能するようになりました。また、ひとつ賢くなりました。^^ こりずに、再度投函したときはまた、よろしくお願いします。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

>abs関数で求めた数値に対応する値をVLOOKUPで検索することができない 検索できないとはエラーが出るのか、別の値が表示されるのかいずれでしょうか? また、具体的に、どのような計算式で求めた数字なのでしょうか? この計算値に小数点以下の数字が混入している場合には、丸め誤差のために見掛けは同じ数字に見えても実際は違う値になっている可能性が考えられます(この場合は#N/Aエラー)。 また、小数点以下の数字(時間などを含む)をオートフィルコピーで入力した場合も、同様の現象が発生する可能性があります。 元データの入力値(関数で求めている場合はその関数)と実際に使用されているABS関数とVLOOKUP関数の数式を具体的に提示されれば、原因を特定しやすいと思います。

7693380
質問者

お礼

早速のご指南ありがとうございます。そもそもやりたいことは「秒の誤差により減点を自動計算させようと思っています」例えばA,・B間を6秒遅れれば2点の減点、B・C間を10秒であれば5点の減点というように6区間で合計○○点の減点を求めたいのですが、正しい数値を返してくれません。原因は仰られる通り、秒単位の時間でしょうかね。 6:00-6::07=0:07  1   表は0:05は1 0:06は2 0:07は3 という感じです。のに1を返してきます。秒をやめて整数に数値化してやれないか考えて見ます。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

>abs関数で求めた数値に対応する値をVLOOKUPで検索することができないのは、何故でしょうか? できます。正常に表示しないという場合は VLOOKUP関数に使用した引数や、検索する範囲の内容がわからないと何とも言えません。 考えられるケース 1.検索値が数値で、検索する範囲の数値が文字列になっている 2.VLOOKUPの最期の引数がTrueで検索する範囲が昇順で並んでいない 3.VLOOKUPの最期の引数がFalseで検索する範囲に該当する値がない ※3でよくあるケースが、小数点以下の端数が邪魔している

関連するQ&A