ExcelのHEX2DEC関数|16進数を10進数に変換する方法

スポンサーリンク

「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進数
正の最大値7FFFFFFFFF549,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 = 1616^0 = 1
計算15 × 16 = 24015 × 1 = 15

合計は 240 + 15 = 255 です。

よく使う変換例をまとめておきます。

入力(16進数)出力(10進数)備考
00 
A10 
F151桁の最大値
101616進数の桁上がり
1F31 
FF2558ビットの最大値
100256 
FFFF6553516ビットの最大値
7FFFFFFFFF549,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))FF255
G(緑)=HEX2DEC(MID(A1,4,2))66102
B(青)=HEX2DEC(MID(A1,6,2))000

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 ※この記事HEX2BINHEX2OCT
変換先10進数2進数8進数
引数の数1つ(数値のみ)2つ(数値, 桁数)2つ(数値, 桁数)
桁数引数なしありあり
戻り値の型数値テキストテキスト
変換範囲(10進数)約-5,498億〜約5,498億-512〜511-536,870,912〜536,870,911

大きな違いは3つあります。

1. 桁数引数がない
HEX2DEC関数には桁数引数がありません。引数は「数値」の1つだけです。HEX2BINHEX2OCTには第2引数でゼロ埋めの桁数を指定できます。

2. 戻り値が数値型
HEX2DEC関数だけが数値型で返ります。そのまま四則演算に使えるのが強みです。HEX2BINHEX2OCTはテキスト型なので、計算に使うには変換が必要です。

3. 変換範囲が広い
HEX2DEC関数は約5,498億の範囲を扱えます。HEX2BINは-512〜511、HEX2OCTは約-5.4億〜約5.4億です。

用途に応じて使い分けてみてください。

進数変換12関数一覧

Excelの進数変換関数は全部で12種類あります。関数名の規則は「変換元 + 2 + 変換先」です。

関数名変換方向
BIN2DEC2進数 → 10進数
BIN2HEX2進数 → 16進数
BIN2OCT2進数 → 8進数
DEC2BIN10進数 → 2進数
DEC2HEX10進数 → 16進数
DEC2OCT10進数 → 8進数
HEX2BIN16進数 → 2進数
HEX2DEC ※この記事16進数 → 10進数
HEX2OCT16進数 → 8進数
OCT2BIN8進数 → 2進数
OCT2DEC8進数 → 10進数
OCT2HEX8進数 → 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」が返ることを試してみてください。

タイトルとURLをコピーしました