「16進数を10進数に変換したいけど、計算が面倒…」
Excelには、この変換を一瞬で行える関数があります。それがHEX2DEC関数です。
カラーコードの解析やシステムログの確認など、16進数を10進数に変換する場面は意外と多いもの。でも手作業で変換するのはミスのもとですよね。
この記事では、ExcelのHEX2DEC関数の基本から2の補数の仕組み、エラー対策まで解説します。
ExcelのHEX2DEC関数とは
HEX2DEC関数は、16進数を10進数に変換するExcelの関数です。
16進数は「0〜9」と「A〜F」の16種類の文字で数を表します。一方、10進数は普段使っている0〜9の数です。
たとえば16進数の「FF」は10進数で「255」です。HEX2DEC関数を使えば、この変換を自動で行えます。
関数名の読み方と意味
読み方は「ヘックス・ツー・デシマル」です。
- HEX = Hexadecimal(ヘクサデシマル、16進数)
- 2 = to(〜へ)
- DEC = Decimal(デシマル、10進数)
つまり「16進数から10進数へ」という意味です。関数名がそのまま機能を表しているので覚えやすいですよ。
どんなときに使うか
HEX2DEC関数は次のような場面で活躍します。
- カラーコード(#FF6600など)からRGB値を数値で取得したいとき
- ネットワークログの16進数アドレスを10進数で確認したいとき
- システムのエラーコード(16進数表記)を10進数に変換したいとき
- 情報処理試験の勉強で進数変換を練習したいとき
対応バージョン
Excel 2007以降は標準搭載されています。アドインの追加は不要です。
Excel for Microsoft 365(Windows/Mac)、Excel for the web、Excel 2024/2021/2019/2016 で動作します。Excel 2003以前を使っている場合は、分析ツールアドインの有効化が必要です。
HEX2DEC関数の書式と引数
基本構文は次のとおりです。
=HEX2DEC(数値)
引数は1つだけです。HEX2BIN関数やHEX2OCT関数にある「桁数」引数はありません。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値 | 必須 | 10進数に変換したい16進数 |
引数のルール
「数値」には10進数に変換したい16進数を指定します。
直接値を入力してもセル参照でもOKです。指定できるのは最大10文字(40ビット)までです。
大文字・小文字は区別されません。「1F」でも「1f」でも同じ結果(31)になります。
変換できる数値の範囲
HEX2DEC関数が変換できる範囲は次のとおりです。
| 区分 | 16進数 | 10進数 |
|---|---|---|
| 正の最大値 | 7FFFFFFFFF | 549,755,813,887(約5,498億) |
| 負の最小値 | 8000000000 | -549,755,813,888(約-5,498億) |
40ビットの2の補数で表現されるため、この範囲になります。HEX2BIN関数(-512〜511)やHEX2OCT関数(約-5.4億〜約5.4億)と比べて非常に広い範囲を扱えますよ。
戻り値は数値型
HEX2DEC関数の戻り値は数値型です。
ここがHEX2BIN関数やHEX2OCT関数との大きな違いです。HEX2BINとHEX2OCTはテキスト型を返します。一方、HEX2DECは数値を返します。
そのため、結果をそのまま計算に使えます。SUMやAVERAGEなどの数値関数と組み合わせても問題ありません。
=HEX2DEC("A") + 5
結果は「15」です。10進数の数値として返るので、後続の計算にそのまま組み込めますよ。
HEX2DEC関数の使い方
正の16進数を変換する
まずは正の数を変換してみましょう。
=HEX2DEC("FF")
結果は 255 です。16進数のFFは、10進数で255になります。
変換の仕組みを確認しておきます。各桁に16のべき乗を掛けて合計します。
| 桁 | F(=15) | F(=15) |
|---|---|---|
| 位の重み | 16^1 = 16 | 16^0 = 1 |
| 計算 | 15 × 16 = 240 | 15 × 1 = 15 |
合計は 240 + 15 = 255 です。
よく使う変換例をまとめておきます。
| 入力(16進数) | 出力(10進数) | 備考 |
|---|---|---|
| 0 | 0 | |
| A | 10 | |
| F | 15 | 1桁の最大値 |
| 10 | 16 | 16進数の桁上がり |
| 1F | 31 | |
| FF | 255 | 8ビットの最大値 |
| 100 | 256 | |
| FFFF | 65535 | 16ビットの最大値 |
| 7FFFFFFFFF | 549,755,813,887 | 正の最大値 |
セルの値を参照して変換することもできます。A1に「1A」が入っているとします。
=HEX2DEC(A1)
結果は 26 です。参照先の値を変えれば結果も自動で更新されます。複数の値をまとめて変換したいときに活用してみてください。
負の数を変換する(2の補数)
HEX2DEC関数は、負の数も変換できます。40ビットの2の補数(にのほすう)で表現された16進数を指定すると、負の10進数が返ります。
2の補数とは、コンピュータが負の整数を表す仕組みです。最上位ビット(第40ビット)が「1」なら負の数を意味します。
16進数では、8〜Fで始まる10文字の値が負の数です。最上位の4ビットが1000〜1111(16進数で8〜F)になるためです。
=HEX2DEC("FFFFFFFFFF")
結果は -1 です。全桁Fの値は、2の補数で-1を意味します。
負の数の代表的な変換例です。
| 入力(16進数) | 出力(10進数) | 備考 |
|---|---|---|
| FFFFFFFFFF | -1 | 全桁F |
| FFFFFFFFFE | -2 | |
| FFFFFFFF5B | -165 | |
| FFFFFF0000 | -65,536 | |
| 8000000000 | -549,755,813,888 | 負の最小値 |
ポイントは「10文字かどうか」です。たとえば「FF」は255(正の数)です。一方「FFFFFFFFFF」は-1(負の数)になります。文字数が10文字で先頭が8〜Fのときだけ負の数として解釈されますよ。
逆変換のDEC2HEX関数を使えば元に戻せます。
=DEC2HEX(HEX2DEC("1F"))
結果は「1F」です。正しく往復変換できることを確認できますよ。
カラーコードのRGB値を取得する
HEX2DEC関数の実務での活用例として、カラーコードの分解があります。
WebデザインやExcelの書式設定で使うカラーコードは「#FF6600」のような16進数6桁の形式です。先頭2桁がR(赤)、中央2桁がG(緑)、末尾2桁がB(青)を表します。
MID関数(文字列から指定位置の文字を取り出す関数)とHEX2DEC関数を組み合わせると、RGB値を数値で取得できます。
A1に「#FF6600」が入っているとします。
=HEX2DEC(MID(A1,2,2))
MID関数で「#」の次の2文字目から2文字を取り出し、HEX2DECで10進数に変換します。
| 成分 | 数式 | 16進数 | 10進数 |
|---|---|---|---|
| R(赤) | =HEX2DEC(MID(A1,2,2)) | FF | 255 |
| G(緑) | =HEX2DEC(MID(A1,4,2)) | 66 | 102 |
| B(青) | =HEX2DEC(MID(A1,6,2)) | 00 | 0 |
HEX2DECの戻り値が数値型なので、取得したRGB値はそのまま計算に使えます。色の明度を計算したり、条件付き書式の判定に使ったりできますよ。
よくあるエラーと対処法
HEX2DEC関数で発生するエラーは主に#NUM!エラーです。原因別に対処法を見ていきましょう。
#NUM!エラー:10文字を超えている
16進数の文字数が10文字を超えるとエラーになります。
=HEX2DEC("1FFFFFFFFFF") → #NUM!エラー(11文字)
HEX2DEC関数が受け付けるのは10文字までです。入力値の文字数を確認してください。LEN関数(文字数を返す関数)で事前にチェックする方法もあります。
#NUM!エラー:16進数に使えない文字を含む
0〜9とA〜F以外の文字を含むとエラーです。
=HEX2DEC("GG") → #NUM!エラー
=HEX2DEC("1Z") → #NUM!エラー
16進数で使える文字は0〜9とA〜Fだけです。G以降のアルファベットや記号は使えません。データをコピーしたときに余計な文字が混入していないか確認しましょう。
エラー一覧表
| エラー | 発生条件 | 対処法 |
|---|---|---|
| #NUM! | 文字数が10文字を超えている | 入力値を10文字以内にする |
| #NUM! | 0〜9・A〜F以外の文字を含む | 無効な文字を取り除く |
IFERROR関数と組み合わせてエラーを回避する
エラーが出る可能性がある場合は、IFERROR関数(エラー時に代替値を返す関数)で囲むと安全です。
=IFERROR(HEX2DEC(A1), "変換エラー")
この数式なら、A1の値が不正でも「変換エラー」と表示されます。大量のデータを一括変換するときに活用してみてください。
HEX2BIN・HEX2OCTとの違い
Excelには16進数を他の進数に変換するHEX系関数が3つあります。それぞれの違いを比較してみましょう。
引数・戻り値型・変換範囲の比較表
| 項目 | HEX2DEC ※この記事 | HEX2BIN | HEX2OCT |
|---|---|---|---|
| 変換先 | 10進数 | 2進数 | 8進数 |
| 引数の数 | 1つ(数値のみ) | 2つ(数値, 桁数) | 2つ(数値, 桁数) |
| 桁数引数 | なし | あり | あり |
| 戻り値の型 | 数値 | テキスト | テキスト |
| 変換範囲(10進数) | 約-5,498億〜約5,498億 | -512〜511 | -536,870,912〜536,870,911 |
大きな違いは3つあります。
1. 桁数引数がない
HEX2DEC関数には桁数引数がありません。引数は「数値」の1つだけです。HEX2BINやHEX2OCTには第2引数でゼロ埋めの桁数を指定できます。
2. 戻り値が数値型
HEX2DEC関数だけが数値型で返ります。そのまま四則演算に使えるのが強みです。HEX2BINとHEX2OCTはテキスト型なので、計算に使うには変換が必要です。
3. 変換範囲が広い
HEX2DEC関数は約5,498億の範囲を扱えます。HEX2BINは-512〜511、HEX2OCTは約-5.4億〜約5.4億です。
用途に応じて使い分けてみてください。
進数変換12関数一覧
Excelの進数変換関数は全部で12種類あります。関数名の規則は「変換元 + 2 + 変換先」です。
| 関数名 | 変換方向 |
|---|---|
| BIN2DEC | 2進数 → 10進数 |
| BIN2HEX | 2進数 → 16進数 |
| BIN2OCT | 2進数 → 8進数 |
| DEC2BIN | 10進数 → 2進数 |
| DEC2HEX | 10進数 → 16進数 |
| DEC2OCT | 10進数 → 8進数 |
| HEX2BIN | 16進数 → 2進数 |
| HEX2DEC ※この記事 | 16進数 → 10進数 |
| HEX2OCT | 16進数 → 8進数 |
| OCT2BIN | 8進数 → 2進数 |
| OCT2DEC | 8進数 → 10進数 |
| OCT2HEX | 8進数 → 16進数 |
この命名規則を覚えておけば、どの関数を使えばいいか迷いませんよ。
まとめ
HEX2DEC関数は、16進数を10進数に変換する関数です。
ポイントを整理します。
- 構文は
=HEX2DEC(数値)の1引数のみ。桁数引数はない - 戻り値は数値型。そのまま四則演算に使える
- 変換できる範囲は約-5,498億〜約5,498億(最大10文字)
- 負の数は2の補数で解釈される。10文字で先頭が8〜Fなら負の数
- #NUM!エラーは「10文字超過」か「無効な文字」が原因
- 逆変換にはDEC2HEX関数を使う
- カラーコードのRGB値取得にも活用できる(MID関数と組み合わせ)
- Excel 2007以降で標準搭載。アドイン不要
まずは =HEX2DEC("FF") で「255」が返ることを試してみてください。
