excel

【Excel】エクセルで16進数を変換する方法|10進数・2進数へ関数で変換する手順

エクセルで16進数を10進数へ変換するDECIMAL関数 - DECIMAL関数でエラーになる入力
当サイトでは記事内に広告を含みます

エクセルで機器のログ、色コード、メモリ番地、製品番号などを扱っていると、16進数を10進数や2進数に読み替えたい場面があります。

16進数は0から9に加えてAからFを使う表記方法であり、ぱっと見ただけでは数値の大きさを判断しにくいことがあります。

しかし、Excelには16進数を10進数へ変換するDECIMAL関数、16進数を2進数へ変換するHEX2BIN関数、10進数を16進数へ変換するDEC2HEX関数が用意されています。

関数の入力規則、桁数の制限、エラーになる原因まで把握すれば、変換作業を表計算の中で自動化できます。

この記事で扱う主な変換

・16進数から10進数への変換はDECIMAL関数

・16進数から2進数への変換はHEX2BIN関数

・10進数から16進数への変換はDEC2HEX関数

・2進数から16進数への変換はBIN2HEX関数

サンプルでは1行目を見出し行とし、2行目以降に16進数の値を入力する前提で説明します。

 

エクセルで16進数を10進数へ変換するDECIMAL関数

それではまず、16進数を10進数へ変換するDECIMAL関数について解説していきます。

A列 B列
16進数 10進数
1A 26
FF 255
100 256

 

DECIMAL関数の書式

DECIMAL関数は、指定した進数の文字列を10進数へ変換する関数です。

16進数専用ではなく、2進数から36進数までの基数を指定できるため、進数変換をまとめて扱いたい場合に便利です。

DECIMAL関数の基本式

=DECIMAL(文字列,基数)

16進数を変換する場合

=DECIMAL(A2,16)

A2に1Aが入力されているとき、B2に=DECIMAL(A2,16)と入力すると、結果は26になります。

第1引数には数値ではなく、16進数として扱う文字列またはセル参照を指定することがポイントです。

16進数ではAが10、Bが11、Cが12、Dが13、Eが14、Fが15を表します。

そのため1Aは、1×16+10という計算になり、10進数では26です。

セルに英字が含まれていても、DECIMAL関数では大文字と小文字を区別せずに処理できます。

【操作のポイント】基数の指定には16を入力し、変換元の16進数はA2のようなセル参照で指定すると数式をコピーしやすくなります。

 

サンプルデータへの数式入力

実務では、A列に16進数が連続して並び、B列に10進数の結果を表示する形にすると確認しやすくなります。

たとえばA1に16進数、B1に10進数という見出しを入力し、A2からA10に変換元の値を入力します。

B2には次の数式を入力します。

=DECIMAL(A2,16)

Enterキーで確定すると、A2の値に対応する10進数がB2へ表示されます。

次にB2右下のフィルハンドルを下方向へドラッグすると、B3以降にも同じ仕組みの数式がコピーされます。

オートフィル後のB3では=DECIMAL(A3,16)、B4では=DECIMAL(A4,16)のように参照先が自動で切り替わります。

1件ずつ関数を書き直す必要がないため、大量のログ値を変換する作業にも向いています。

結果が左寄せで表示されることがありますが、セルの表示形式やデータの状態によるものであり、数値として計算に利用できる場合がほとんどです。

【操作のポイント】1行目をヘッダーにして、数式はB2から開始します。変換対象を追加する場合もA列へ入力して数式を下へコピーします。

 

DECIMAL関数でエラーになる入力

DECIMAL関数で#NUM!エラーや#VALUE!エラーが出た場合は、16進数として認識できない文字が混ざっていないかを確認します。

16進数で使える文字は0から9、およびAからFです。

G、H、Zのような文字は16進数に存在しないため、=DECIMAL(“1G”,16)のような式ではエラーになります。

また、セル内に余分なスペース、全角の英数字、改行が含まれる場合も、意図した変換ができないことがあります。

入力値の前後に空白があるデータでは、TRIM関数を組み合わせると整理できます。

前後の空白を除去して変換する式

=DECIMAL(TRIM(A2),16)

全角文字が混在する場合は、入力データそのものを半角へ整える作業も必要です。

エラーを空欄表示にしたいときは、IFERROR関数で式を囲む方法もあります。

=IFERROR(DECIMAL(A2,16),””)と入力すれば、変換できない値では空白を返せます。

ただし、エラーを隠すと入力ミスに気付きにくくなるため、検査用の表ではエラーを残す判断も大切です。

【操作のポイント】英字はAからFだけを使用します。データを外部から貼り付けた場合は、空白や全角文字も確認しましょう。

エクセルで16進数を10進数へ変換するDECIMAL関数 - DECIMAL関数でエラーになる入力

 

エクセルで16進数を2進数へ変換するHEX2BIN関数

続いては、16進数を2進数へ変換するHEX2BIN関数を確認していきます。

A列 B列
16進数 2進数
A 1010
1F 11111
FF 11111111

 

HEX2BIN関数の基本式

HEX2BIN関数は16進数を2進数へ直接変換する関数です。

関数名はHexadecimal to Binaryを意味し、計算式の中間で10進数へ変換する手間を省けます。

HEX2BIN関数の基本式

=HEX2BIN(数値,桁数)

桁数を指定しない式

=HEX2BIN(A2)

A2に1Fが入力されている場合、=HEX2BIN(A2)の結果は11111です。

16進数の1桁は2進数の4桁に対応します。

たとえば16進数のFは2進数の1111、16進数のAは2進数の1010です。

HEX2BIN関数は、ビットフラグや電子回路の設定値を確認する場面で役立ちます。

ただし、この関数は分析ツール関数の系統に属し、扱える範囲に制約があります。

非常に大きい16進数を変換したい場合は、後述するDECIMAL関数なども含めて別の設計を検討しましょう。

【操作のポイント】通常は=HEX2BIN(A2)で十分です。2進数を一定の桁数で表示したい場合だけ第2引数を使います。

 

桁数をそろえるplaces引数

HEX2BIN関数の第2引数には、結果の2進数を何桁で表示するかを指定できます。

この引数はplacesと呼ばれ、先頭に0を付けて表示桁をそろえたいときに使用します。

8桁で表示する式

=HEX2BIN(A2,8)

A2がAの場合、=HEX2BIN(A2,8)の結果は00001010です。

桁数を指定しない場合の結果は1010ですが、8ビット単位で資料を作るなら00001010の方が比較しやすいでしょう。

先頭の0を残したい場合は、セルの表示形式ではなくHEX2BIN関数の第2引数で桁数を指定するのが基本です。

第2引数には、結果の桁数より小さい数値を指定できません。

たとえば1Fの結果は11111で5桁なので、=HEX2BIN(“1F”,4)とするとエラーになります。

データ仕様が8ビット、16ビット、32ビットのどれなのかを先に確認しておくと、桁数指定で迷いません。

【操作のポイント】8ビットのデータなら第2引数に8を指定します。値そのものではなく、見た目の桁数を整える用途です。

 

負の数として扱われるケース

HEX2BIN関数では、特定の範囲の16進数を負の数として解釈する場合があります。

これはコンピューターが負数を表すときに使う2の補数という仕組みに関係します。

たとえば、符号付きのビット列として値を扱う機器では、先頭ビットが1のデータが負数を意味することがあります。

Excelの変換結果が期待した正の数と異なるように見える場合は、元データが符号なし整数なのか、符号付き整数なのかを確認してください。

16進数の見た目だけで数値の意味を決めず、データを出力した機器やシステムの仕様を優先することが重要です。

ビット列をそのまま確認する目的なら、HEX2BIN関数の結果を文字列として保存しておく方法もあります。

10進数の演算まで行う場合には、符号の扱いを明確にしたうえでDECIMAL関数やIF関数を組み合わせます。

【操作のポイント】変換値が想定と異なるときは、符号付き表現と2の補数の仕様を確認します。特に機器ログでは重要な確認項目です。

 

10進数と2進数から16進数へ戻す変換関数

続いては、10進数または2進数を16進数へ変換する方法を確認していきます。

A列 B列 C列
10進数 16進数 2進数
26 1A 11010
255 FF 11111111

 

DEC2HEX関数による10進数の変換

DEC2HEX関数は10進数を16進数へ変換する関数です。

10進数の測定値や計算結果を、機器の設定値やカラーコードの形式へ変換したい場合に利用できます。

DEC2HEX関数の基本式

=DEC2HEX(数値,桁数)

A2が26の場合

=DEC2HEX(A2)

A2に26が入力されていれば、結果は1Aです。

第2引数の桁数を指定すると、先頭に0を補って表示できます。

=DEC2HEX(A2,4)と入力した場合、26は001Aと表示されます。

色のRGB値や通信データでは、固定桁の16進数表記が求められることが多いため、桁数指定が便利です。

一方で、DEC2HEX関数には扱える数値の範囲があります。

非常に大きい整数を変換する場合は、対象となる桁数やExcelの関数仕様を事前に確認しておきましょう。

【操作のポイント】10進数から16進数へ変換する式は=DEC2HEX(A2)です。固定桁の仕様がある場合は第2引数で桁数を指定します。

 

BIN2HEX関数による2進数の変換

BIN2HEX関数は2進数を16進数へ変換します。

2進数を4桁ずつに区切れば手計算でも16進数へ変換できますが、Excelでは関数を使う方が速く、転記ミスも抑えられます。

BIN2HEX関数の基本式

=BIN2HEX(数値,桁数)

A2が11111111の場合

=BIN2HEX(A2,2)

11111111は4桁ごとに1111と1111へ分けられ、それぞれFに相当するため、結果はFFです。

2進数がセルに入力されているとき、先頭の0が消えることがあります。

たとえば00001010を入力しても10として扱われるケースがあるため、先頭の0が意味を持つデータは文字列として管理する必要があります。

2進数の先頭ゼロを保持したい場合は、セルの表示形式を文字列にしてから入力する方法が有効です。

入力済みのデータに先頭ゼロを追加するなら、TEXT関数やRIGHT関数を使う方法もあります。

【操作のポイント】2進数の桁数そのものに意味がある場合は、入力前にセルを書式設定から文字列にしておくと安全です。

 

BASE関数とDECIMAL関数の使い分け

BASE関数は10進数を任意の進数へ変換する関数で、DECIMAL関数とは反対方向の処理を担います。

16進数だけでなく、8進数や36進数へ変換する表を作りたい場合にはBASE関数が役立ちます。

BASE関数の基本式

=BASE(数値,基数,最小桁数)

26を16進数へ変換する式

=BASE(A2,16)

BASE(A2,16)はDEC2HEX(A2)と似た結果を返しますが、関数ごとに扱える数値範囲や用途が異なります。

16進数の変換だけを分かりやすく記述するなら、DEC2HEX関数とHEX2DEC関数を使う構成が理解しやすいでしょう。

複数の進数へ拡張する予定がある表では、BASE関数とDECIMAL関数を対にしておくと数式を統一できます。

変換元が10進数ならBASE関数、変換先が10進数ならDECIMAL関数という方向で覚えると整理しやすくなります。

【操作のポイント】16進数専用の表はDEC2HEX関数、複数の基数を扱う表はBASE関数を選ぶと数式の目的が明確になります。

 

関数入力とオートフィルの操作画面

続いては、数式を入力して下の行へコピーする操作画面を確認していきます。

A列 B列
16進数 10進数の数式
1A =DECIMAL(A2,16)
2B 下へコピー

 

数式バーへのDECIMAL関数入力

Windows版Excelでは、変換結果を表示したいセルを選択してから数式を入力します。

この例ではB2を選択し、数式バーまたはセル上に=DECIMAL(A2,16)と入力します。

Book1 – Excel ● □ ×
ファイル ホーム 挿入 ページ レイアウト 数式 データ 校閲 表示
貼り付け
B
罫線
中央揃え
B2
fx
=DECIMAL(A2,16)
A B C
1 16進数 10進数
2 1A 26
3 2B
赤枠のB2を選択して数式バーへ入力します

数式の先頭には必ず半角の=を付けます。

関数名を入力すると候補が表示されるため、DECIMALを選択してから引数を設定しても構いません。

入力後にEnterキーを押すと、B2には計算結果の26が表示されます。

セル内には結果が表示され、数式バーには元の関数が残るため、どのような計算をしているか後から確認できます。

【操作のポイント】結果を置くB2を選択してから、=DECIMAL(A2,16)を入力します。数式バーは長い式を確認するときにも便利です。

 

フィルハンドルによる数式コピー

B2の数式を複数行へ反映するには、セル右下に表示される小さな四角形であるフィルハンドルを使用します。

B2を選択すると、選択枠の右下に小さな四角が表示されます。

その部分を下方向へドラッグすると、数式が連続する行へコピーされます。

変換元のA列に空白がない場合は、フィルハンドルをダブルクリックする方法も便利です。

ダブルクリックすると、隣接するA列の入力済み範囲に合わせてB列の数式が自動でコピーされます。

コピー先ではA2という相対参照がA3、A4へ自動調整されるので、基本的に数式を書き換える必要はありません。

ただし、基数の16をセル参照にして固定したい場合は、絶対参照を使うことがあります。

たとえばD1に16を入力しているなら、=DECIMAL(A2,$D$1)と入力すると、コピー後もD1への参照が変わりません。

【操作のポイント】数式を入力したセルの右下を下へドラッグします。基数を別セルに置く場合は$D$1のような絶対参照を使います。

 

値貼り付けによる変換結果の固定

関数で変換した結果を他のシステムへ渡す場合、数式ではなく値だけを残したいことがあります。

このような場合は、変換済みのセル範囲をコピーし、貼り付け先で値として貼り付けを選択します。

値貼り付け後のセルにはDECIMAL関数は残らず、表示されていた10進数だけが保存されます。

元の16進数を変更しても結果が変わらなくなるため、提出用ファイルや確定データの作成に向いています。

一方で、作業途中の表では数式を残しておく方が、入力値の修正に追従できて便利です。

計算途中は数式、外部へ渡す最終データは値貼り付けという使い分けをすると管理しやすくなります。

値貼り付けの操作

コピーしたセルを右クリックします。

貼り付けのオプションから値を選択します。

【操作のポイント】値貼り付けを行う前に、元の数式入りの表を残しておくと、あとで変換条件を検証できます。

 

16進数変換で知っておきたい桁数とエラー対策

続いては、16進数変換で失敗しやすい桁数とエラー対策を確認していきます。

入力例 確認内容 対応
00FF 先頭ゼロ 文字列として管理
1G 使用不可の文字 AからFへ修正
空白付きFF 余分な空白 TRIM関数で除去

 

先頭ゼロが消える問題

16進数の00FFとFFは数値としての大きさは同じですが、データ形式としては桁数が異なる場合があります。

通信プロトコル、バイト列、固定長の識別コードでは、先頭の0も情報の一部です。

Excelが入力値を数値とみなすと、先頭の0を削除することがあります。

そのため、00FFのような値を扱う列は、入力前に文字列形式へ設定するか、先頭にアポストロフィを付けて入力します。

固定桁の16進数は数値ではなく文字列として保存する意識が大切です。

変換後に固定桁へ整えたい場合は、DEC2HEX関数の第2引数を使います。

たとえば10進数255を4桁の16進数へ戻す式は=DEC2HEX(255,4)であり、結果は00FFです。

【操作のポイント】16進数の桁数に意味があるデータは、入力前に文字列形式へ設定し、変換後は関数の桁数指定で整えます。

 

HEX2DEC関数とDECIMAL関数の違い

16進数を10進数へ変換する関数には、HEX2DEC関数もあります。

HEX2DEC関数は16進数専用であり、式が短くて目的を読み取りやすい点が特徴です。

16進数を10進数へ変換する二つの式

=HEX2DEC(A2)

=DECIMAL(A2,16)

通常の16進数であれば、どちらも同じ変換結果を得られます。

HEX2DEC関数は16進数だけを扱う表に適しており、DECIMAL関数は2進数や8進数なども扱う汎用的な表に向いています。

変換する進数が16進数だけならHEX2DEC関数、基数を変更する可能性があるならDECIMAL関数という選び方が分かりやすいでしょう。

チームで利用するブックでは、数式を見た人が理解しやすい方を採用することも重要です。

複数の関数を混在させるより、同じ用途の列では関数を統一した方が保守しやすくなります。

【操作のポイント】16進数専用の変換なら=HEX2DEC(A2)も利用できます。複数進数を一つの表で扱う場合はDECIMAL関数が便利です。

 

色コードと数値データの違い

Web制作や画像編集で見かける16進数のカラーコードは、一般的な数値計算用の16進数とは扱い方が少し異なります。

たとえば#FF0000は赤を表すRGBカラーコードで、FF、00、00という3組の値に分けて考えます。

先頭の#は色コードの記号であり、DECIMAL関数へそのまま渡すことはできません。

変換する場合は、#を除いたうえで、必要に応じて2文字ずつ取り出します。

赤成分のFFを10進数へ変換する式は、=DECIMAL(MID(A2,2,2),16)のように書けます。

カラーコードは6桁全体を一つの数値として扱うのではなく、R、G、Bの2桁ずつに分けることが基本です。

値がFFなら255、00なら0となり、RGBの各成分を10進数で確認できます。

【操作のポイント】カラーコードの#は変換対象に含めません。MID関数で2桁ずつ抜き出してからDECIMAL関数へ渡します。

 

まとめ エクセルで16進数を変換する方法

エクセルで16進数を10進数へ変換する基本の方法は、=DECIMAL(A2,16)を使用することです。

16進数専用の表では、=HEX2DEC(A2)を使っても同様に10進数へ変換できます。

16進数を2進数へ変換したい場合は、=HEX2BIN(A2)を使用します。

表示桁をそろえたいときは、=HEX2BIN(A2,8)のように第2引数へ必要な桁数を指定しましょう。

10進数を16進数へ戻すときは=DEC2HEX(A2)、2進数を16進数へ戻すときは=BIN2HEX(A2)が役立ちます。

先頭の0が意味を持つ固定桁データは文字列として管理することで、変換前の情報を失いにくくなります。

また、AからF以外の文字、全角文字、余分な空白が含まれるとエラーの原因になります。

まずは少数のサンプルデータで変換結果を確認し、問題がなければオートフィルで数式を下の行へ展開してください。

16進数、10進数、2進数の関係をExcel関数で整理すれば、機器ログやコード値の確認作業を効率よく進められるようになります。