Excelで16進数を扱う場面では、DEC2HEX関数やHEX2DEC関数を使えば、10進数との変換を短時間で行えます。
16進数は、プログラムのカラーコード、メモリ番地、機器の通信データ、数値のビット表現などでよく使われる表記方法です。
一見すると英字が混ざって難しく見えますが、16進数は0から9までの数字とAからFまでの文字で数を表す仕組みを理解すると、Excelでの変換や計算が進めやすくなります。
この記事では、16進数を10進数・2進数へ変換する関数、セルの表示形式、計算時の注意点までを順番に解説します。
Excelで16進数を変換する主な関数は、DEC2HEX関数、HEX2DEC関数、HEX2BIN関数、BIN2HEX関数です。
計算前には、対象のセルが文字列なのか数値なのかを確認することが大切です。
Excelで16進数を変換する方法【DEC2HEX関数とHEX2DEC関数】
【操作のポイント】10進数から16進数へはDEC2HEX関数、16進数から10進数へはHEX2DEC関数を使います。
それではまず、10進数と16進数を相互に変換する基本操作について解説していきます。
| A列 | B列 | C列 |
|---|---|---|
| 1 | 10進数 | 16進数 |
| 2 | 255 | FF |
| 3 | 4095 | FFF |
DEC2HEX関数で10進数を16進数へ変換する方法【桁数指定】
DEC2HEX関数は、10進数を16進数の文字列へ変換する関数です。
たとえば、A2セルに255が入力されている場合、B2セルへ次の数式を入力します。
=DEC2HEX(A2)
この数式の結果はFFです。
DEC2HEX関数の戻り値は数値ではなく文字列であるため、見た目が数字に見えても、そのまま通常の足し算には使えない点に注意しましょう。
2つ目の引数に桁数を指定すると、先頭を0で埋めた固定桁の表記にできます。
=DEC2HEX(A2,4)
上記の式では、255を00FFとして表示します。
通信仕様書や機器のデータ表で4桁・8桁の16進数が必要なときは、桁数指定が便利です。

なお、DEC2HEX関数で扱える10進数には範囲があります。
Excelの標準仕様では、正の値だけではなく負の値も10桁の16進数として表せますが、負数を扱う場面では2の補数表現を意識する必要があります。
通常の業務表で正の整数を変換するだけなら、まずは0から大きすぎない値を対象にして試すと理解しやすいでしょう。
HEX2DEC関数で16進数を10進数へ戻す方法【入力規則】
16進数の値を10進数に戻したい場合は、HEX2DEC関数を使用します。
たとえば、B2セルにFFが入力されているなら、C2セルに次の式を入力してください。
=HEX2DEC(B2)
結果は255になります。
16進数の英字は大文字でも小文字でも入力できますが、一覧表の見た目を整えるなら大文字に統一する方法が実用的です。
HEX2DEC関数は、AからF以外の文字や16進数として不正な記号を含むとエラーになります。
たとえばG、Z、ハイフン、全角英数字が混ざっていると、#NUM!エラーや#VALUE!エラーの原因になることがあります。

外部システムから貼り付けたデータを変換するときは、見えない空白や全角文字にも注意が必要です。
TRIM関数で余分な半角スペースを削除し、必要に応じてASC関数で半角へ寄せてからHEX2DEC関数へ渡すと、データの整形に役立ちます。
複数行をまとめて変換するオートフィル操作【連続データ】
1行目にヘッダーがあり、A列のA2セルから10進数が並んでいる場合は、B2セルにDEC2HEX関数を設定して下方向へコピーします。
数式内のA2は相対参照なので、下へコピーするとA3、A4のように参照先が自動で変わります。
最初のセルに正しい数式を作り、フィルハンドルをダブルクリックする操作なら、隣接するデータ行までまとめて変換できます。
A2に10進数、B2に=DEC2HEX(A2)を入力し、B2右下の小さな四角を下へドラッグします。
途中に空白行がある表では、ダブルクリックだけでは意図した最終行までコピーされない場合があります。
その場合は、必要な範囲を選択してCtrlキーとDキーで下方向へコピーする方法も有効です。
データ件数が多いほど、1件ずつ変換せず数式をコピーする方法が効率的です。
16進数を2進数へ変換する方法【HEX2BIN関数】
【操作のポイント】16進数1桁は2進数4桁に対応するため、HEX2BIN関数でビット列を確認できます。
続いては、16進数を2進数に変換する関数と、2進数から16進数へ戻す方法を確認していきます。
| A列 | B列 | C列 |
|---|---|---|
| 1 | 16進数 | 2進数 |
| 2 | 2F | 101111 |
| 3 | A5 | 10100101 |
HEX2BIN関数による16進数から2進数への変換【ビット表現】
HEX2BIN関数は、16進数を2進数に変換するための関数です。
A2セルに2Fがある場合、B2セルには次の数式を入力します。
=HEX2BIN(A2)
結果は101111になります。
2Fを位ごとに分けると、2は0010、Fは1111です。
つまり、00101111となり、先頭の不要な0を省いた101111がExcelの結果として返されます。
16進数から2進数へ変換すると、各桁が持つビットの状態を目で追いやすくなります。

8ビットや16ビットなど、一定の桁数で表示したいときは、第2引数に桁数を指定します。
=HEX2BIN(A2,8)
この式では、2Fを00101111として8桁表示できます。
フラグ管理や制御信号の確認では、先頭の0も意味を持つことがあるため、桁数指定を忘れないようにしましょう。
BIN2HEX関数による2進数から16進数への変換【逆変換】

2進数の文字列を16進数に変換する場合は、BIN2HEX関数を使います。
たとえばA2セルに10100101が入力されているなら、B2セルへ次の式を設定します。
=BIN2HEX(A2)
結果はA5です。
2進数を4桁ごとに区切ると1010と0101になり、それぞれAと5に対応します。
この対応関係を知っておくと、関数の結果が正しいかを手計算でもおおよそ確認できます。
2進数は桁が長くなりやすいため、16進数へまとめるとデータ表の横幅を抑えられます。
第2引数で必要な桁数を指定すると、たとえばA5を00A5のように固定長で表示できます。
ただし、桁数の指定は表示用の文字列を整える目的であり、セル内の実際の数値計算とは別に考える必要があります。
2進数と16進数の対応表を作る方法【4ビット単位】
変換の仕組みを理解するには、0からFまでの対応表をExcelで作る方法もおすすめです。
A列に0から15までの10進数を入力し、B列に=DEC2HEX(A2)、C列に=DEC2BIN(A2,4)を入力すると、10進数・16進数・4ビットの2進数を並べられます。
たとえば10進数の10は、16進数ではA、2進数では1010です。
10進数の15は、16進数ではF、2進数では1111となります。
=DEC2BIN(A2,4)
16進数のAは10、Bは11、Cは12、Dは13、Eは14、Fは15を意味します。
この表を作っておけば、関数の使い方だけでなく、データ形式の違いも整理できます。
特にカラーコードやバイト列を扱う場合は、4ビット単位の対応を覚えておくと便利でしょう。
16進数の表示形式と文字列の扱い【先頭ゼロとエラー対策】
【操作のポイント】16進数は文字列として扱われることが多いため、先頭の0とセルの表示形式を確認します。
続いては、16進数の表示を整える方法と、先頭のゼロが消える問題への対処を確認していきます。
| A列 | B列 | |
|---|---|---|
| 1 | 元の値 | 4桁の16進数表示 |
| 2 | 15 | 000F |
| 3 | 160 | 00A0 |
DEC2HEX関数で先頭に0を付ける方法【固定桁表示】
16進数を4桁や8桁でそろえたい場合は、DEC2HEX関数の第2引数を使います。
たとえば15を4桁の16進数にする数式は、次のとおりです。
=DEC2HEX(A2,4)
結果はFではなく000Fになります。
固定桁の16進数では、先頭の0もデータの書式として重要です。
機器のレジスタ値、RGBカラーコード、バイト列などでは、桁数がそろっていないと比較や照合がしにくくなります。
TEXT関数で数値を16進数へ変換しようとするケースもありますが、通常の数値変換にはDEC2HEX関数を使うほうが目的に合います。
文字列として保存する方法【セルの書式設定】
16進数の値を手入力する際、0012のように先頭の0を残したいことがあります。
セルへ入力する前に表示形式を文字列へ変更するか、入力の先頭にアポストロフィを付ける方法があります。
たとえば、’0012と入力すると、セル上では0012と表示されます。
ただし、この入力値は文字列です。
文字列の16進数を足し算や引き算に使う場合は、先にHEX2DEC関数で10進数へ戻す必要があります。
セルの左上に緑色の三角形が表示される場合は、数値が文字列として保存されていることを知らせるExcelのエラーチェックである可能性があります。
それ自体が誤りとは限らず、16進数のコードを保存する目的なら文字列のままで問題ない場合もあります。
エラー値が表示される原因【入力範囲と全角文字】
変換関数で#NUM!エラーが出る場合は、入力値が関数の対応範囲を超えていることが考えられます。
また、#VALUE!エラーが出る場合は、セル内に空白、全角文字、16進数として使えない文字が入っていないか確認しましょう。
たとえば「FF」は見た目がFFに近くても全角英字なので、HEX2DEC関数では正しく処理できないことがあります。
=HEX2DEC(ASC(TRIM(A2)))
このようにTRIM関数で前後の余分な空白を除き、ASC関数で全角英数字を半角へ変換してから処理する方法があります。
ただし、データに日本語や特殊文字が含まれる場合には、変換後の内容も確認してください。
エラーを隠すだけでなく、元データの形式を正すことが再発防止につながります。
16進数を使った計算方法【加算・減算・論理演算】
【操作のポイント】16進数のままでは四則演算できないため、10進数へ変換して計算後に16進数へ戻します。
続いては、16進数の値を使って加算や減算を行うときの基本的な考え方を確認していきます。
| A列 | B列 | C列 | |
|---|---|---|---|
| 1 | 16進数1 | 16進数2 | 加算結果 |
| 2 | A0 | 0F | AF |
16進数同士を加算する数式【10進数経由】
A2セルにA0、B2セルに0Fが入力されている場合、16進数としての合計をC2セルに求めるには次の式を使います。
=DEC2HEX(HEX2DEC(A2)+HEX2DEC(B2))
結果はAFです。
A0は10進数で160、0Fは10進数で15なので、合計は175です。
175を16進数へ戻すとAFになります。
16進数の計算は、変換、計算、再変換の順番で組み立てると数式の意味を追いやすくなります。
固定4桁で表示したい場合は、式の外側のDEC2HEX関数へ第2引数の4を追加してください。
16進数同士を減算する数式【負の値の注意】
16進数の差を求める場合も、HEX2DEC関数で10進数へ変換してから引き算を行います。
=DEC2HEX(HEX2DEC(A2)-HEX2DEC(B2))
たとえばA2がA0、B2が0Fなら、結果は91です。
ただし、引き算の結果が負になると、DEC2HEX関数は2の補数形式による10桁の16進数を返します。
負の値を単純なマイナス記号付きの16進数として表示したい場合は、別途IF関数で符号を分ける設計が必要です。
差が負になる可能性のある表では、どのビット幅で値を扱うのかを事前に決めておくと混乱を避けられます。
BITAND関数などを使う論理演算【フラグ判定】
ビット単位で状態を確認したいときは、BITAND関数、BITOR関数、BITXOR関数などが役立ちます。
たとえば16進数のA5に対して、下位4ビットだけを確認したい場合は、10進数へ変換した値と15をBITAND関数で計算します。
=DEC2HEX(BITAND(HEX2DEC(A2),15))
15は16進数ではFであり、下位4ビットだけを取り出すためのマスク値です。
この式は、通信データに含まれるフラグや、複数の状態が1つの数値にまとめられたビットフィールドを確認するときに使えます。
論理演算を使う場合は、各ビットがどの意味を持つかを仕様書と照合することが重要です。
数式の結果だけを見て判断せず、ビット位置と判定条件を表の見出しにも明記すると、後から確認しやすくなります。
関数選びと実務での注意点【DECIMAL関数とBASE関数】
【操作のポイント】変換対象の範囲や桁数が大きい場合は、DECIMAL関数とBASE関数も検討します。
続いては、標準の16進数変換関数で対応しにくい場面と、代替となる関数を確認していきます。
| A列 | B列 | |
|---|---|---|
| 1 | 16進数文字列 | 10進数への変換 |
| 2 | 1ABC | 6844 |
DECIMAL関数で基数を指定する方法【汎用変換】
DECIMAL関数は、指定した基数の文字列を10進数へ変換できる関数です。
A2セルの16進数を10進数へ変換する場合は、次の式を使います。
=DECIMAL(A2,16)
HEX2DEC関数と似た目的で使えますが、DECIMAL関数は2進数から36進数までの基数を指定できる点が特徴です。
たとえば2進数なら2、8進数なら8、16進数なら16を第2引数に指定します。
複数の進数を同じ考え方で変換したい表では、DECIMAL関数がわかりやすい選択肢になります。
ただし、Excelのバージョンや共有先の環境によって利用できる関数が異なる場合もあるため、配布用ファイルでは事前確認が必要です。
BASE関数で10進数から16進数へ変換する方法【大きい数値】
BASE関数は、10進数を任意の基数の文字列へ変換する関数です。
A2セルの10進数を16進数へ変換する式は、次のとおりです。
=BASE(A2,16)
第3引数を指定すると、必要な桁数に合わせて先頭の0を付けられます。
=BASE(A2,16,8)
この式なら、8桁の16進数として文字列を作成できます。
DEC2HEX関数には扱える数値範囲の制約があるため、より大きな正の整数を16進数へ変換したい場合はBASE関数が候補になります。
ただしExcelの数値は精度に限界があるため、非常に長い16進数や桁数の多い識別子は、数値化せず文字列として扱う設計も検討しましょう。
CSV貼り付けと指数表示の注意点【データ保護】
CSVファイルをExcelで開くと、16進数らしいコードが意図せず数値として解釈される場合があります。
特に先頭の0が削除されたり、長い数字列が指数表示になったりすると、元データの照合に支障が出るかもしれません。
取り込み前に対象列のデータ型を文字列へ設定する、またはExcelのデータ取り込み機能で列の形式を指定する方法が安全です。
識別コードや固定長の16進数は、計算用の数値ではなく文字列として保持する場面があります。
変換用の列と原本を保存する列を分けておけば、計算後に元データへ戻って確認できます。
業務で重要なログや機器データを扱うときは、元ファイルを複製してから作業する習慣も大切です。
まとめ Excelで16進数を変換する方法【2進数変換と10進数計算】
Excelで16進数を変換する際は、10進数から16進数へ変換するDEC2HEX関数と、16進数から10進数へ戻すHEX2DEC関数を基本として使います。
16進数を2進数へ変換するならHEX2BIN関数、2進数を16進数へ変換するならBIN2HEX関数が便利です。
16進数のまま加算や減算を行いたい場合は、HEX2DEC関数で10進数へ変換して計算し、DEC2HEX関数で16進数に戻す流れを使いましょう。
先頭の0を残したいときは、DEC2HEX関数やBASE関数の桁数指定を利用します。
一方で、識別子や固定長コードとして16進数を保存する場合は、セルを文字列として扱うことが重要です。
DECIMAL関数とBASE関数を使えば、16進数以外の進数も含めた汎用的な変換表を作れます。
変換後の値が計算用なのか表示用なのかを区別し、用途に応じた関数と書式を選んでいきましょう。