「10進数を16進数に変換したいけど、手計算は面倒…」
カラーコードやMACアドレスなど、16進数が必要になる場面は意外とありますよね。でもA〜Fが混ざる16進数の変換を手作業でやるのは大変です。
ExcelのDEC2HEX関数を使えば、10進数から16進数への変換を一発で行えます。この記事では、DEC2HEX関数の使い方を基本からエラー対策まで解説しますよ。
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関数の入力範囲は、変換先の進数に応じて異なります。
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 = 16 | 16^0 = 1 |
| 計算 | 15 x 16 = 240 | 15 x 1 = 15 |
合計: 240 + 15 = 255 ですね。
よく使う変換例をまとめておきます。
| 入力(10進数) | 出力(16進数) | 備考 |
|---|---|---|
| 0 | 0 | ゼロ |
| 10 | A | 10以上はアルファベット |
| 15 | F | 1桁の最大値 |
| 16 | 10 | 桁上がり |
| 100 | 64 | |
| 255 | FF | 1バイトの最大値 |
| 256 | 100 | |
| 1000 | 3E8 | |
| 65535 | FFFF | 2バイトの最大値 |
| 16777215 | FFFFFF | 3バイトの最大値(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進数) | 備考 |
|---|---|---|
| -1 | FFFFFFFFFF | 全桁F(40ビットすべて1) |
| -100 | FFFFFFFF9C | 10桁固定 |
| -256 | FFFFFFFF00 | |
| -549,755,813,888 | 8000000000 | 負の最小値 |
負の数かどうかは先頭の文字で判断できます。先頭が「8」〜「F」なら負の数です。先頭が「0」〜「7」なら正の数になります。
桁数を指定してゼロ埋めする
第2引数に桁数を指定すると、先頭にゼロを埋めて桁数を揃えられます。
=DEC2HEX(255, 4)
結果は「00FF」です。4桁に揃えてくれました。
桁数を指定しない場合と比べてみましょう。
| 数式 | 結果 | 備考 |
|---|---|---|
| =DEC2HEX(10) | A | 最小桁数(1桁) |
| =DEC2HEX(10, 2) | 0A | 2桁にゼロ埋め |
| =DEC2HEX(255) | FF | 最小桁数(2桁) |
| =DEC2HEX(255, 4) | 00FF | 4桁にゼロ埋め |
| =DEC2HEX(255, 8) | 000000FF | 8桁にゼロ埋め |
カラーコードでは各色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関数には注意点があります。
| 項目 | DEC2HEX | BASE |
|---|---|---|
| 入力範囲 | 約-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)
この数式は次の手順で動きます。
INT(A1/65536)で上位16ビット(65536で割った商)を計算MOD(A1, 65536)で下位16ビット(65536で割った余り)を計算- それぞれをDEC2HEX関数で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値とカラーコードの対応です。
| 色 | R | G | B | カラーコード |
|---|---|---|---|---|
| 赤 | 255 | 0 | 0 | #FF0000 |
| 緑 | 0 | 128 | 0 | #008000 |
| 青 | 0 | 0 | 255 | #0000FF |
| 白 | 255 | 255 | 255 | #FFFFFF |
| 黒 | 0 | 0 | 0 | #000000 |
| オレンジ | 255 | 128 | 0 | #FF8000 |
| 紫 | 128 | 0 | 128 | #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進数) |
|---|---|---|
| A | 65 | 41 |
| Z | 90 | 5A |
| a | 97 | 61 |
| z | 122 | 7A |
| 0 | 48 | 30 |
| 9 | 57 | 39 |
プログラムのデバッグやデータ変換作業で、文字コードを確認したいときに試してみてください。
HEX2DEC関数で逆変換する(16進数→10進数)
DEC2HEX関数の逆変換にはHEX2DEC関数を使います。セットで覚えておくと便利です。
往復変換で検算する
変換結果が正しいか確認するには、往復変換が有効です。
=HEX2DEC(DEC2HEX(100))
結果が「100」に戻れば変換が正確だと確認できます。負の数でも同様です。
=HEX2DEC(DEC2HEX(-100))
結果は「-100」です。2の補数で表現された10桁の16進数を、HEX2DEC関数が正しく負の数に戻してくれますよ。
DEC2HEXとHEX2DECの仕様比較
| 項目 | DEC2HEX | HEX2DEC |
|---|---|---|
| 変換方向 | 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つあります。構文はすべて 関数名(数値, [桁数]) で同じです。
変換先・有効範囲・主な用途の比較表
| 項目 | DEC2BIN | DEC2OCT | DEC2HEX ※この記事 |
|---|---|---|---|
| 変換先 | 2進数 | 8進数 | 16進数 |
| ビット数 | 10ビット | 30ビット | 40ビット |
| 入力範囲(正) | 0〜511 | 0〜536,870,911 | 0〜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桁の補数で返す点が共通しています。
どの関数を選ぶか
迷ったときは、変換先の用途で選びましょう。
複数の進数を行き来するなら、まずDEC2HEXで16進数に変換し、そこからHEX2BINやHEX2OCTで他の進数に変換する方法もありますよ。
進数変換関数の全体マップ(全12関数)
Excelの進数変換関数は全部で12種類あります。関数名の規則は「変換元 + 2 + 変換先」です。
| 変換元\変換先 | → 2進数(BIN) | → 8進数(OCT) | → 10進数(DEC) | → 16進数(HEX) |
|---|---|---|---|---|
| 2進数(BIN) | — | BIN2OCT | BIN2DEC | BIN2HEX |
| 8進数(OCT) | OCT2BIN | — | OCT2DEC | OCT2HEX |
| 10進数(DEC) | DEC2BIN | DEC2OCT | — | DEC2HEX ※この記事 |
| 16進数(HEX) | HEX2BIN | HEX2OCT | HEX2DEC | — |
この命名規則を覚えておけば、どの関数を使えばいいか迷いませんよ。
まとめ
ExcelのDEC2HEX関数は、10進数を16進数に変換する関数です。
ポイントを整理します。
- 構文は
=DEC2HEX(数値, [桁数])の最大2引数 - 変換できる範囲は約-5,497億〜約5,497億(DEC系で最も広い)
- 桁数を指定すると先頭をゼロで埋めて桁揃えできる
- 負の数は10桁の2の補数で返される
- RGB値からカラーコードを一括生成できる
- MACアドレスや文字コードの管理にも活用できる
- #NUM!エラーは「範囲外」「桁数不足」「桁数ゼロ以下」が原因
- #VALUE!エラーは「文字列の混入」が原因
- 範囲超過にはBASE関数や分割結合で対応
- 逆変換にはHEX2DEC関数を使う
- Excel 2007以降で標準搭載。アドイン不要
まずは =DEC2HEX(255) で「FF」が返ることを試してみてください。
