次の方法で共有

ExcelでDex2Hex関数の答えが違うときがあります。

Anonymous
2012-04-19T01:55:42+00:00

現象 (Excel 2010, 2007)

 元の数字 526990000を変換すると Dec2Hex 1F693AAFとなりますが、実際は16進数で一つずれています

ただ、答えが正しいときと違うときがあるようです。以下は実際にExcelから切り出したものですが、

16進数の最後の桁がFとなっているものは間違いで、0となっているものが正解です。

なぜこのような挙動をするかわかりません。

10進数          16進数(Dex2hex後)

526990000 1F693AAF
536990000 2001D12F
566990000 21CB94AF
626990000 255F1BAF
736990000 2BED932F
816990000 30B2472F
866990000 33AD37AF
886990000 34DE64AF
765010000 2D992050
757010000 2D1F0E50
741010000 2C2AEA50
685010000 28D46C50
653010000 26EC2450
645010000 26721250
522990000 1F2C31AF
882990000 34A15BAF
Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2012-04-19T05:04:02+00:00

y sakuda

どうもありがとうございます。

問題のセルの設定を数値に変え、小数点10桁に変えましたが、すべて0でした。

下記にコピーいたします。大小関係も問題ありませんでした。

526990000.0000000000
536990000.0000000000
566990000.0000000000
626990000.0000000000
736990000.0000000000
816990000.0000000000
866990000.0000000000
886990000.0000000000
765010000.0000000000
757010000.0000000000
741010000.0000000000
685010000.0000000000
653010000.0000000000
645010000.0000000000
522990000.0000000000
882990000.0000000000

ただ、解せないのは先ほどの問題のセルにINT(問題のセル)したのちに、

Dec2hexの関数を施すと正しい答えが得られました。そのため、桁落ちの問題が

どこかで起きていると推測しますが、見えてきません。今後は

安全のため整数演算のときはINT関数を入れてで対応しようと思います。

問題のブックを他のPCにコピーした際も問題が起こったので、ブックの問題なのかもしれません。

どうもありがとうございました。

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2012-04-19T02:33:06+00:00

Dec2Hexには問題無いと思います。

もし、変換した数字が計算されたものでしたら、そちらが桁落ちしている恐れが強いような気がします。

=INT(計算結果)

と言うようにして、桁落ちがないかどうか確認してください。

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

3 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2012-04-19T05:11:05+00:00

    Excelでは16ケタくらいしか有効数字がないので、小数点以下10桁と申し上げたのですが、

    計算途中で不動小数点のからむ計算結果ではExcelの表示が100%信頼できる保証はありません。

    まあ、なんでもかんでもINTをかますほど神経質になる必要もないでしょうが・・・・・・

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2012-04-19T04:47:52+00:00

    確認のためだけですが、問題のある数値の入っているセルの表示形式を数値にして、小数点以下を10ケタ以上にしてみてください。

    また、問題のある数値と問題のない数値を=A<B等の式で大小関係をチェックしてみてください。

    そのあたりで何も問題がなければ、そのブックが壊れかけている可能性も考えて対処された方が良いかもしれません。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2012-04-19T04:35:09+00:00

    y sakudaさま、

    ご連絡ありがとうございます。

    左の値をINT関数で確認しましたが、とくに桁落ちの問題は無いようです。

    また左の値はただの数字(値をコピー)でも、計算した値でも同じ結果でした。

    さらに確かめようとしていますが、

    現象が起こるときと起こらないときがあり(下の表のように)、さらに訳がわかりません。

    下の表は隣り合った列なのですが、セルの設定は標準です。これを数値に変えても変わりません。

    現象がおこっている元の値のセルをコピーすると、エラーが残ったままコピーされ、

    正しい答えのセルをコピーすると、正しいままコピーされます。

    そのため、最初からおかしい値がでるセルがないと最後まで現れないようです。

    セルの設定は同じなのですが、なぜだろう・・・。

    526990000 1F693AB0 526990000 1F693AB0
    536990000 2001D12F 536990000 2001D130
    566990000 21CB94AF 566990000 21CB94B0
    626990000 255F1BAF 626990000 255F1BB0
    736990000 2BED932F 736990000 2BED9330
    816990000 30B2472F 816990000 30B24730
    866990000 33AD37AF 866990000 33AD37B0
    886990000 34DE64AF 886990000 34DE64B0
    765010000 2D992050 765010000 2D992050
    757010000 2D1F0E50 757010000 2D1F0E50
    741010000 2C2AEA50 741010000 2C2AEA50
    685010000 28D46C50 685010000 28D46C50
    653010000 26EC2450 653010000 26EC2450
    645010000 26721250 645010000 26721250
    522990000 1F2C31AF 522990000 1F2C31B0
    882990000 34A15BAF 882990000 34A15BB0

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません