• ベストアンサー

Excelで16桁の16進数を10進数に変換

Excelを使って、16桁の16進数を10進数に変換したいと考えております。 HEX2DECでは、桁数が多すぎてエラーとなってしまいました。 関数の組み合わせでも、VBAで組むのでもどちらでも構いません。 こうすればできる、というようなアイデアだけでも、いただけるとうれしいです。 宜しくお願いいたします。

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

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

Excelで、セルに数値として表現できる桁数は15桁だから、16桁の16進数を10進数に変換すると、20桁を超えることもあるので、数値としては表示できない。文字列として表示する。元になる16進データも文字列です。16^iとすると誤差が出るので、4^i*4^iに分けてある。 多分、16進24桁まで変換できます。 Function hexdec(hexdata) As String l = Len(hexdata) For i = 0 To l - 1 hexstr = Mid(hexdata, l - i, 1) Select Case hexstr Case "A", "a" dhex = 10 Case "A", "a" dhex = 11 Case "B", "b" dhex = 12 Case "C", "c" dhex = 13 Case "D", "d" dhex = 14 Case "E", "e" dhex = 10 Case "F", "f" dhex = 15 Case "0" To "9" dhex = Val(hexstr) Case Else MsgBox "error" End Select cd = CDec(dhex) * CDec(4 ^ i) * CDec(4 ^ i) hdec = hdec + cd Next hexdec = CStr(hdec) End Function

yasuyasu77
質問者

お礼

ありがとうございました!!大変助かりました。

その他の回答 (2)

  • x1va
  • ベストアンサー率26% (802/3006)
回答No.2

間違えた。 ×16の7乗 ○16の8乗 です。

yasuyasu77
質問者

お礼

ありがとうございます。 ただ、「上8桁を10進変換したもの×16の8乗」の計算をExcel2003で行うと、有効桁数15を超えた結果となってしまいます。 『Excelで「10桁の自然数x10桁の自然数」を計算する方法』、という質問を別にたてることにします。

  • x1va
  • ベストアンサー率26% (802/3006)
回答No.1

元の16桁をleft関数とright関数を使い上8桁と下8桁に分離して、それぞれをhex2decで計算すればいいのでは。 あとは、 上8桁を10進変換したもの×16の7乗+下8桁を10進変換したもの で計算できると思います。

関連するQ&A