DevToolBox

Excelで16進数⇔10進数を変換する方法(関数・VBA)

最終更新日: 2026-07-21公開日: 2026-07-21執筆: DevToolBox編集部

Excelで機器の管理番号やシステムの出力値を扱うと、16進数を10進数へ直す場面があります。単発なら標準関数、定型業務ならVBA、大量データなら一括変換ツールという使い分けが効率的です。「excel 16進数」「16進数 excel」と調べている事務・データ担当者向けに、式とコードを解説します。

Converting hex to decimal in Excel is straightforward with HEX2DEC and DEC2HEX. This guide also covers limits, longer values, VBA conversion, and bulk data.

TL;DR

Hex Converter

複数行の16進数データをまとめて変換し、結果をExcelへ戻せます。

今すぐ試す →

1. HEX2DECで16進数を10進数へ変換 / Hex to decimal

16進数がA2セルに文字列として入っている場合は =HEX2DEC(A2) と入力します。直接指定する場合は次のとおりです。0x や末尾の h は付けません。

=HEX2DEC("FF")    // 255
=HEX2DEC("1A")    // 26
=HEX2DEC(A2)      // A2の値を変換

「excel 16進数 文字列 変換」で注意したいのが先頭の0です。00FF の桁数を残すなら入力列を先に「文字列」にします。ただし変換結果自体は 255 です。

2. DEC2HEXで10進数を16進数へ変換 / Decimal to hex

「16進数 10進数 変換 エクセル」の逆方向には DEC2HEX を使います。第2引数で桁数を指定すると正数の左側を0で埋められます。

=DEC2HEX(255)       // "FF"
=DEC2HEX(255, 4)    // "00FF"
=DEC2HEX(A2)        // A2の値を変換

必要な桁数より小さく指定すると #NUM! になります。結果は数値ではなく文字列です。

3. 10桁制限と負の数 / Limits and negative numbers

HEX2DEC が受け取れる16進数は最大10文字です。正数は 00000000007FFFFFFFFF、負数は 8000000000FFFFFFFFFF の40ビット2の補数表現です。

=HEX2DEC("7FFFFFFFFF")    // 549755813887
=HEX2DEC("FFFFFFFFFF")    // -1
=DEC2HEX(-1)              // "FFFFFFFFFF"

DEC2HEX の入力範囲は -549755813888549755813887 です。負数は常に10桁になり、桁数引数は無視されます。外部システムとの照合ではビット幅も確認してください。

4. 10桁を超える16進数 / Longer values

Microsoft 365など動的配列関数が使えるExcelでは、次の式で各桁を数値化し、SUMPRODUCT で桁の重みを合計できます。A2には 0x なしの値を入れます。

=LET(h,UPPER(A2),
 d,XMATCH(MID(h,SEQUENCE(LEN(h)),1),
 MID("0123456789ABCDEF",SEQUENCE(16),1),0)-1,
 SUMPRODUCT(d*16^(LEN(h)-SEQUENCE(LEN(h)))))

Excelの数値は有効数字がおおむね15桁なので、巨大な整数は1の位まで正確とは限りません。この式は符号なし正数用です。長いIDや多数の値は Hex Converter での変換が手早いです。

5. VBAで変換する / VBA conversion

VBA 16進数変換では、文字列の先頭に &H を付けて CLng に渡します。逆方向は Hex 関数で文字列にします。

Function HexToDecimal(ByVal hexString As String) As Long
    HexToDecimal = CLng("&H" & hexString)
End Function

Function DecimalToHex(ByVal decimalValue As Long) As String
    DecimalToHex = Hex(decimalValue)
End Function

Sub ConversionExample()
    Range("B2").Value = HexToDecimal(CStr(Range("A2").Value))
    Range("D2").Value = DecimalToHex(CLng(Range("C2").Value))
End Sub

VBAの Long は符号付き32ビット整数なので範囲外ではオーバーフローします。空セルや不正文字のチェックも実運用では追加してください。VB.NET 16進数変換は別環境で、通常は Convert.ToInt64(hexString, 16)decimalValue.ToString("X") を使います。

6. 複数セルを一括変換 / Bulk conversion

数件なら =HEX2DEC(A2) を下までコピーし、反復する定型処理ならVBAを使います。一度だけ数十〜数百件を処理するなら、関数を1件ずつ整えるよりHex Converterへ列ごと貼り付け、結果をコピーしてExcelへ戻す方が効率的です。

  1. Excelで変換したいセル範囲をコピーする
  2. Hex Converterへまとめて貼り付けて変換する
  3. 結果をコピーし、Excelの別列へ値として貼り付ける

「16進数 10進数 変換方法」を調べながら行う単発作業や、「16進数 10進数 変換ツール」を探している場合に特に便利です。元列を残すと照合ややり直しも簡単です。

English summary

Use =HEX2DEC("FF") to return 255 and =DEC2HEX(255) to return "FF". Both functions use a maximum 10-digit, 40-bit hexadecimal representation; negative values use two's complement. In VBA, use CLng("&H" & hexString) and Hex(decimalValue). For a large one-off list, bulk conversion is often faster than maintaining worksheet formulas.

まとめ / Summary

Excelの変換は HEX2DECDEC2HEX で完了します。ただし10桁制限、負数の2の補数、Excelの数値精度には注意が必要です。少数なら関数、反復処理ならVBA、大量の単発データなら一括変換ツールが適します。

Hex Converter

複数行をまとめて変換し、結果をExcelへ戻せます。

今すぐ試す →

関連ツール / Related tools

関連ガイド / Related guides