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

スポンサーリンク

「10進数を16進数に変換したいけど、手計算は面倒…」

カラーコードやMACアドレスなど、16進数が必要になる場面は意外とありますよね。でもA〜Fが混ざる16進数の変換を手作業でやるのは大変です。

ExcelのDEC2HEX関数を使えば、10進数から16進数への変換を一発で行えます。この記事では、DEC2HEX関数の使い方を基本からエラー対策まで解説しますよ。

  1. ExcelのDEC2HEX関数とは?読み方と基本概要
    1. 読み方と意味
    2. どんなときに使うか(16進数の実務ユースケース)
  2. DEC2HEX関数の書き方(構文と引数)
    1. 基本構文
    2. 引数の説明
    3. 変換できる数値の範囲(-549,755,813,888〜549,755,813,887)
    4. なぜDEC系関数で最も範囲が広いのか
    5. 対応バージョン一覧
  3. DEC2HEX関数の基本的な使い方
    1. シンプルな変換例(0〜549,755,813,887)
    2. 負の数の変換(2の補数表現)
    3. 桁数を指定してゼロ埋めする
  4. DEC2HEX関数のよくあるエラーと対処法
    1. #NUM!エラー:範囲外と桁数の問題
    2. #VALUE!エラー:文字列・空白セルの混入
    3. エラーパターン早見表
    4. IFERROR関数と組み合わせてエラー回避
  5. 549,755,813,887を超える値を16進数に変換するテクニック
    1. BASE関数を使う方法(Microsoft 365 / Excel 2013以降)
    2. 分割結合で対応する方法
  6. 実用例:RGB値からカラーコードを一括生成する
    1. カラーコード生成の数式
    2. 代表色の対応表
    3. 逆変換:カラーコードからRGB値を取り出す
  7. 実用例:MACアドレスと文字コードを16進数で管理する
    1. MACアドレスのフォーマット変換
    2. 文字コードの16進数変換(CODE関数との連携)
  8. HEX2DEC関数で逆変換する(16進数→10進数)
    1. 往復変換で検算する
    2. DEC2HEXとHEX2DECの仕様比較
  9. DEC系3関数を比較する(DEC2BIN・DEC2OCT・DEC2HEX)
    1. 変換先・有効範囲・主な用途の比較表
    2. どの関数を選ぶか
  10. 進数変換関数の全体マップ(全12関数)
  11. まとめ

ExcelのDEC2HEX関数とは?読み方と基本概要

DEC2HEX関数は、10進数を16進数に変換するExcelの関数です。エンジニアリング関数の1つで、進数変換を自動化してくれます。

10進数は私たちが普段使っている0〜9の数字で表す方法です。一方、16進数は「0〜9」と「A〜F」の16種類の文字で数を表します。

読み方と意味

読み方は「デック・ツー・ヘックス」です。

  • DEC = Decimal(デシマル、10進数)
  • 2 = to(〜へ)
  • HEX = Hexadecimal(ヘクサデシマル、16進数)

つまり「10進数から16進数へ」という意味です。関数名がそのまま機能を表しているので覚えやすいですよ。

どんなときに使うか(16進数の実務ユースケース)

DEC2HEX関数は次のような場面で活躍します。

  • カラーコード変換: RGB値(0〜255)を「#FF0000」のような16進数カラーコードに変換
  • MACアドレス管理: ネットワーク機器のMACアドレスを16進数で整理・照合
  • 文字コード確認: CODE関数で取得した文字コード番号を16進数に変換
  • メモリアドレス: プログラミングでメモリダンプの値を確認
  • 情報処理試験: 進数変換の練習や検算に活用

16進数は2進数4桁をちょうど1桁で表現できます。そのためIT分野ではデータを短く読みやすく表記する手段として広く使われていますよ。

DEC2HEX関数の書き方(構文と引数)

基本構文

=DEC2HEX(数値, [桁数])

引数は2つあります。必須なのは「数値」だけです。

引数の説明

引数必須/任意説明
数値必須16進数に変換したい10進数の整数。セル参照でもOK
桁数任意結果の文字数を指定。先頭をゼロで埋めて桁揃え

引数1: 数値(必須)

16進数に変換したい10進数の整数を指定します。直接数値を入力しても、セル参照で指定してもOKです。

小数を指定した場合は、小数点以下が切り捨てられます。たとえば =DEC2HEX(255.9) は「FF」になります。

引数2: 桁数(省略可)

結果の文字数(桁数)を整数で指定します。省略すると、変換に必要な最小限の桁数で返されます。

指定すると先頭にゼロを埋めて桁数を揃えてくれます。カラーコードの2桁固定など、見た目を統一したいときに便利ですよ。

NOTE

桁数に小数を指定すると小数点以下が切り捨てられます。0以下の値を指定すると#NUM!エラーになります。

変換できる数値の範囲(-549,755,813,888〜549,755,813,887)

DEC2HEX関数が変換できるのは -549,755,813,888から549,755,813,887 の整数です。

この範囲は40ビットの符号付き整数に対応しています。

  • 正の最大値: 549,755,813,887 → 7FFFFFFFFF(10桁)
  • 負の最小値: -549,755,813,888 → 8000000000(10桁)

範囲外の数値を指定すると#NUM!エラーになります。

なぜDEC系関数で最も範囲が広いのか

DEC系3関数の入力範囲は、変換先の進数に応じて異なります。

関数ビット数最大桁数正の最大値
DEC2BIN10ビット10桁511
DEC2OCT30ビット10桁536,870,911
DEC2HEX40ビット10桁549,755,813,887

3関数とも最大出力桁数は10桁で同じです。しかし16進数は1桁で4ビットを表現できるため、同じ10桁でも40ビット分の情報を扱えます。

8進数は1桁で3ビット、2進数は1桁で1ビットなので、16進数のDEC2HEXが最も広い範囲を持つわけですね。

対応バージョン一覧

DEC2HEX関数は、Excel 2007以降で標準搭載されています。

バージョン対応状況
Microsoft 365(Windows / Mac)対応
Excel 2024 / 2021 / 2019 / 2016対応
Excel for the web対応
Excel 2007 / 2010 / 2013対応
Excel 2003以前分析ツールアドインが必要

現在の主要バージョンならアドイン不要でそのまま使えますよ。

DEC2HEX関数の基本的な使い方

シンプルな変換例(0〜549,755,813,887)

まずは関数に直接値を入力してみましょう。

=DEC2HEX(255)

結果は「FF」です。10進数の255は、16進数でFFになります。

変換の仕組みを確認しておきます。16進数では各桁に16のべき乗を対応させて合計します。

2桁目1桁目
16進数F (=15)F (=15)
重み16^1 = 1616^0 = 1
計算15 x 16 = 24015 x 1 = 15

合計: 240 + 15 = 255 ですね。

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

入力(10進数)出力(16進数)備考
00ゼロ
10A10以上はアルファベット
15F1桁の最大値
1610桁上がり
10064 
255FF1バイトの最大値
256100 
10003E8 
65535FFFF2バイトの最大値
16777215FFFFFF3バイトの最大値(RGB最大)

セルの値を参照して変換することもできます。A1に「200」が入っているなら、次の数式です。

=DEC2HEX(A1)

結果は「C8」です。参照先の値を変えれば結果も自動で更新されますよ。

負の数の変換(2の補数表現)

DEC2HEX関数に負の数を指定すると、2の補数(にのほすう)で表現された10桁の16進数が返ります。

2の補数とは、コンピュータが負の整数を表す仕組みです。DEC2HEX関数では40ビット相当の2の補数で表現されます。

=DEC2HEX(-1)

結果は「FFFFFFFFFF」です。40ビット全部が1になる値です。

=DEC2HEX(-100)

結果は「FFFFFFFF9C」です。桁数の指定に関係なく、常に10桁で返されます。

負の数の代表的な変換例です。

入力(10進数)出力(16進数)備考
-1FFFFFFFFFF全桁F(40ビットすべて1)
-100FFFFFFFF9C10桁固定
-256FFFFFFFF00 
-549,755,813,8888000000000負の最小値

負の数かどうかは先頭の文字で判断できます。先頭が「8」〜「F」なら負の数です。先頭が「0」〜「7」なら正の数になります。

桁数を指定してゼロ埋めする

第2引数に桁数を指定すると、先頭にゼロを埋めて桁数を揃えられます。

=DEC2HEX(255, 4)

結果は「00FF」です。4桁に揃えてくれました。

桁数を指定しない場合と比べてみましょう。

数式結果備考
=DEC2HEX(10)A最小桁数(1桁)
=DEC2HEX(10, 2)0A2桁にゼロ埋め
=DEC2HEX(255)FF最小桁数(2桁)
=DEC2HEX(255, 4)00FF4桁にゼロ埋め
=DEC2HEX(255, 8)000000FF8桁にゼロ埋め

カラーコードでは各色2桁固定が必要です。MACアドレスも各オクテット2桁固定です。桁数指定はこうした場面で欠かせませんよ。

DEC2HEX関数のよくあるエラーと対処法

DEC2HEX関数で発生するエラーは主に2種類です。原因別に見ていきましょう。

#NUM!エラー:範囲外と桁数の問題

#NUM!エラーが出る原因は3つあります。

1. 数値が変換範囲外

=DEC2HEX(549755813888)    → #NUM!エラー
=DEC2HEX(-549755813889)   → #NUM!エラー

変換できる範囲は-549,755,813,888〜549,755,813,887です。この範囲外の値を指定するとエラーになります。

2. 桁数が結果より少ない

=DEC2HEX(255, 1)   → #NUM!エラー

255を16進数にすると「FF」で2桁必要です。桁数に1を指定すると足りないためエラーになります。

3. 桁数が0以下

=DEC2HEX(255, 0)   → #NUM!エラー
=DEC2HEX(255, -1)  → #NUM!エラー

桁数は1以上の整数を指定してください。

#VALUE!エラー:文字列・空白セルの混入

数値や桁数に文字列を指定すると#VALUE!エラーです。

=DEC2HEX("ABC")     → #VALUE!エラー
=DEC2HEX(255, "A")  → #VALUE!エラー

セル参照で変換する場合は、参照先が数値型かどうか確認しましょう。文字列として入力された数字(左寄せで表示される数字)も#VALUE!エラーの原因になります。

VALUE関数(文字列を数値に変換する関数)で事前に数値化すると安全ですよ。

=DEC2HEX(VALUE(A1))

エラーパターン早見表

エラー原因数式例対処法
#NUM!数値が範囲外=DEC2HEX(549755813888)値を範囲内に収める
#NUM!桁数が0以下=DEC2HEX(255, 0)桁数を1以上にする
#NUM!桁数が結果より少ない=DEC2HEX(255, 1)桁数を結果以上にする
#VALUE!数値が文字列=DEC2HEX(“ABC”)数値型のデータを指定
#VALUE!桁数が文字列=DEC2HEX(255, “A”)桁数に数値を指定

IFERROR関数と組み合わせてエラー回避

エラーが出る可能性がある場合は、IFERROR関数(エラー時に代替値を返す関数)で囲むと安全です。

=IFERROR(DEC2HEX(A1, 2), "変換エラー")

この数式なら、A1の値が範囲外でも「変換エラー」と表示されます。

大量のデータを一括変換するときは、あらかじめIFERRORで囲んでおくと安心ですよ。

549,755,813,887を超える値を16進数に変換するテクニック

DEC2HEX関数の上限は約5,497億です。それより大きな値を16進数にしたい場面もありますよね。

BASE関数を使う方法(Microsoft 365 / Excel 2013以降)

Excel 2013以降なら、BASE関数(ベース関数)を使う方法があります。BASE関数は任意の基数(2〜36)に変換できる関数です。

=BASE(1000000000000, 16)

結果は「E8D4A51000」です。DEC2HEX関数の範囲外の値もそのまま変換できます。

ただしBASE関数には注意点があります。

項目DEC2HEXBASE
入力範囲約-5,497億〜約5,497億0〜2^53
負の数2の補数で返す非対応(エラー)
桁数指定第2引数で指定第3引数で指定
出力文字大文字(A〜F)大文字(A〜F)
対応バージョンExcel 2007以降Excel 2013以降

負の数の変換が必要ならDEC2HEX関数を使いましょう。正の大きな値だけならBASE関数が便利ですよ。

分割結合で対応する方法

BASE関数が使えないExcel 2007〜2010の環境では、値を上位・下位に分割して結合する方法が使えます。

=DEC2HEX(INT(A1/65536), 4) & DEC2HEX(MOD(A1, 65536), 4)

この数式は次の手順で動きます。

  1. INT(A1/65536) で上位16ビット(65536で割った商)を計算
  2. MOD(A1, 65536) で下位16ビット(65536で割った余り)を計算
  3. それぞれをDEC2HEX関数で4桁にゼロ埋め変換
  4. & で文字列結合して8桁の16進数を生成

A1に100000を入れると、結果は「000186A0」です。

ただし分割結合は正の数のみ対応です。負の数の2の補数が必要な場合はBASE関数を検討してください。

実用例:RGB値からカラーコードを一括生成する

DEC2HEX関数の最もポピュラーな活用例が、RGB値からのカラーコード変換です。

Webデザインで使うカラーコード(#FF0000など)は、R(赤)・G(緑)・B(青)の各値を16進数2桁で表したものです。各値は0〜255の10進数なので、DEC2HEX関数で変換できます。

カラーコード生成の数式

RGB(255, 128, 0)をカラーコードに変換してみましょう。

=DEC2HEX(255, 2)   → FF(赤)
=DEC2HEX(128, 2)   → 80(緑)
=DEC2HEX(0, 2)     → 00(青)

1つのセルにまとめる場合は、次のように書きます。

="#"&DEC2HEX(A1, 2)&DEC2HEX(B1, 2)&DEC2HEX(C1, 2)

A1に255、B1に128、C1に0が入っていれば、結果は「#FF8000」(オレンジ色)です。

IFERRORで囲んでおくと、RGB値が0〜255の範囲外だったときにも安心です。

=IFERROR("#"&DEC2HEX(A1,2)&DEC2HEX(B1,2)&DEC2HEX(C1,2), "入力値エラー")

代表色の対応表

代表的な色のRGB値とカラーコードの対応です。

RGBカラーコード
25500#FF0000
01280#008000
00255#0000FF
255255255#FFFFFF
000#000000
オレンジ2551280#FF8000
1280128#800080

逆変換:カラーコードからRGB値を取り出す

カラーコードからRGB値を取り出すには、HEX2DEC関数とMID関数を組み合わせます。

A1に「#FF8000」が入っているとします。

=HEX2DEC(MID(A1, 2, 2))   → 255(赤)
=HEX2DEC(MID(A1, 4, 2))   → 128(緑)
=HEX2DEC(MID(A1, 6, 2))   → 0(青)

MID関数(文字列の途中から指定文字数を取り出す関数)で2文字ずつ抜き出し、HEX2DEC関数で10進数に戻す流れです。DEC2HEXとHEX2DECの往復変換が活きる場面ですね。

実用例:MACアドレスと文字コードを16進数で管理する

カラーコード以外にも、DEC2HEX関数が活躍する実務シーンがあります。

MACアドレスのフォーマット変換

MACアドレスは「AA:BB:CC:DD:EE:FF」のように、6つのオクテットを16進数2桁で表記します。機器管理台帳でMACアドレスを整理するときに便利です。

たとえばA1〜F1に各オクテットの10進数値が入っている場合、次の数式でMACアドレス形式に変換できます。

=DEC2HEX(A1,2)&":"&DEC2HEX(B1,2)&":"&DEC2HEX(C1,2)&":"&DEC2HEX(D1,2)&":"&DEC2HEX(E1,2)&":"&DEC2HEX(F1,2)

A1〜F1に「0, 26, 106, 63, 255, 1」と入っていれば、結果は「00:1A:6A:3F:FF:01」です。

各オクテットは0〜255の範囲なので、DEC2HEX関数の範囲内に収まります。桁数を2に指定して「0A」のようにゼロ埋めするのがポイントですよ。

文字コードの16進数変換(CODE関数との連携)

Excel のCODE関数(コード関数)は、文字の文字コード番号を10進数で返します。この値をDEC2HEX関数で16進数に変換すると、プログラミングでよく使う16進数表記が得られます。

=DEC2HEX(CODE("A"))

結果は「41」です。ASCIIコードで「A」は10進数65、16進数で41になります。

主な文字の対応表です。

文字CODE関数の結果(10進数)DEC2HEX変換(16進数)
A6541
Z905A
a9761
z1227A
04830
95739

プログラムのデバッグやデータ変換作業で、文字コードを確認したいときに試してみてください。

HEX2DEC関数で逆変換する(16進数→10進数)

DEC2HEX関数の逆変換にはHEX2DEC関数を使います。セットで覚えておくと便利です。

往復変換で検算する

変換結果が正しいか確認するには、往復変換が有効です。

=HEX2DEC(DEC2HEX(100))

結果が「100」に戻れば変換が正確だと確認できます。負の数でも同様です。

=HEX2DEC(DEC2HEX(-100))

結果は「-100」です。2の補数で表現された10桁の16進数を、HEX2DEC関数が正しく負の数に戻してくれますよ。

DEC2HEXとHEX2DECの仕様比較

項目DEC2HEXHEX2DEC
変換方向10進数 → 16進数16進数 → 10進数
入力-549,755,813,888〜549,755,813,887の整数最大10桁の16進数文字列
出力テキスト文字列(0〜Fの大文字)数値(約-5,497億〜約5,497億)
桁数指定あり(第2引数)なし

入力と出力の型が逆転する点に注意です。DEC2HEX関数はテキストを返し、HEX2DEC関数は数値を返します。

DEC系3関数を比較する(DEC2BIN・DEC2OCT・DEC2HEX)

Excelには10進数から他の進数に変換するDEC系関数が3つあります。構文はすべて 関数名(数値, [桁数]) で同じです。

変換先・有効範囲・主な用途の比較表

項目DEC2BINDEC2OCTDEC2HEX ※この記事
変換先2進数8進数16進数
ビット数10ビット30ビット40ビット
入力範囲(正)0〜5110〜536,870,9110〜549,755,813,887
入力範囲(負)-512〜-1-536,870,912〜-1-549,755,813,888〜-1
主な用途ビット演算、ネットワークUnixパーミッションカラーコード、MACアドレス

ビット数の違いには数学的な理由があります。3関数とも最大出力は10桁です。しかし1桁あたりのビット数が異なるため、扱える範囲に差が出ます。

  • 2進数: 1桁 = 1ビット → 10桁 = 10ビット
  • 8進数: 1桁 = 3ビット → 10桁 = 30ビット
  • 16進数: 1桁 = 4ビット → 10桁 = 40ビット

3関数とも負の数は10桁の補数で返す点が共通しています。

どの関数を選ぶか

迷ったときは、変換先の用途で選びましょう。

  • ビット単位の操作が目的DEC2BIN(2進数が直感的)
  • Unixパーミッション(755など)を扱うDEC2OCT
  • カラーコード(#FF0000)やMACアドレスを扱う → DEC2HEX

複数の進数を行き来するなら、まずDEC2HEXで16進数に変換し、そこからHEX2BINHEX2OCTで他の進数に変換する方法もありますよ。

進数変換関数の全体マップ(全12関数)

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

変換元\変換先→ 2進数(BIN)→ 8進数(OCT)→ 10進数(DEC)→ 16進数(HEX)
2進数(BIN)BIN2OCTBIN2DECBIN2HEX
8進数(OCT)OCT2BINOCT2DECOCT2HEX
10進数(DEC)DEC2BINDEC2OCTDEC2HEX ※この記事
16進数(HEX)HEX2BINHEX2OCTHEX2DEC

この命名規則を覚えておけば、どの関数を使えばいいか迷いませんよ。

まとめ

ExcelのDEC2HEX関数は、10進数を16進数に変換する関数です。

ポイントを整理します。

  • 構文は =DEC2HEX(数値, [桁数]) の最大2引数
  • 変換できる範囲は約-5,497億〜約5,497億(DEC系で最も広い)
  • 桁数を指定すると先頭をゼロで埋めて桁揃えできる
  • 負の数は10桁の2の補数で返される
  • RGB値からカラーコードを一括生成できる
  • MACアドレスや文字コードの管理にも活用できる
  • #NUM!エラーは「範囲外」「桁数不足」「桁数ゼロ以下」が原因
  • #VALUE!エラーは「文字列の混入」が原因
  • 範囲超過にはBASE関数や分割結合で対応
  • 逆変換にはHEX2DEC関数を使う
  • Excel 2007以降で標準搭載。アドイン不要

まずは =DEC2HEX(255) で「FF」が返ることを試してみてください。

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