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") を使います。

複数セルをまとめて処理し、不正な値はエラーにせず「invalid」と表示したい場合は、ループとエラー処理を組み合わせます。

Sub ConvertRangeHexToDecimal()
    Dim cell As Range
    For Each cell In Selection
        If cell.Value <> "" Then
            On Error Resume Next
            Err.Clear
            cell.Offset(0, 1).Value = CLng("&H" & cell.Value)
            If Err.Number <> 0 Then cell.Offset(0, 1).Value = "invalid"
            On Error GoTo 0
        End If
    Next cell
End Sub

変換したい16進数のセル範囲を選択してこのマクロを実行すると、隣列に10進値(または不正値の場合は"invalid")が一括入力されます。

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

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

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

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

7. Excelのバージョンと互換性 / Version compatibility

HEX2DECDEC2HEXはExcel 2007以降は標準搭載の関数です。それより古いExcel 2003以前では 「アナリシス ツールパック」アドインの読み込みが必要でした。Googleスプレッドシートにも同名・同仕様の関数があるため、 共有ファイルでもそのまま使えます。

8. よくあるエラーと対処 / Common errors and fixes

症状 / Symptom原因 / Cause対処 / Fix
=HEX2DEC("0xFF")#NUM!0x接頭辞のxは16進文字ではないため無効な入力扱い0xを除いて"FF"のみを渡す
11桁以上の値で#NUM!HEX2DECは10文字(40bit)までしか受け付けない桁数を確認し、収まらない場合はHex Converter等の64bit対応ツールを使う
=DEC2HEX(255, 1)#NUM!指定した桁数が実際に必要な桁数より小さい桁数引数は0埋め用なので、必要最小桁数以上を指定する
変換結果が数式や関数で使えないDEC2HEXの戻り値は文字列であり数値ではない数値として扱うならVALUE関数などで明示的に変換する

9. 実例:機器ステータスの一覧を変換する / Example: device status log

機器から出力されたステータスレジスタの値(16進数)を一覧化し、レポート用に10進数へ変換する例です。 A列に元の16進値、B列に変換式を並べます。

A列(元データ)        B列(変換式と結果)
1F                   =HEX2DEC(A2)   → 31
A2                   =HEX2DEC(A3)   → 162
FF00                 =HEX2DEC(A4)   → 65280

// 逆に、10進の閾値をログと同じ4桁16進表記へ揃えたい場合
=DEC2HEX(4000, 4)    // "0FA0"

元列を残したまま変換列を追加すると、後から桁数や表記ルールの認識違いに気づいた際も照合が容易です。

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へ戻せます。

今すぐ試す →

よくある質問 / FAQ

Excelで16進数を10進数に変換する関数は何ですか?
HEX2DEC関数です。=HEX2DEC("FF") で 255 が得られます。逆は =DEC2HEX(255) で FF になります。0x や末尾の h は付けません。
HEX2DECで扱える桁数に制限はありますか?
16進表現は最大10桁までです。負数は40ビットの2の補数として扱われます。
VBAで16進数を変換するにはどう書きますか?
16進数から10進数へは CLng("&H" & hexString)、10進数から16進数へは Hex(decimalValue) を使います。
先頭が0の16進数がうまく扱えません
セルの値が数値として解釈され、先頭の0が失われている可能性があります。16進数は文字列として入力してください。

関連ツール / Related tools

関連ガイド / Related guides