「RGB値をカラーコードに直したいけど、16進数の計算が面倒…」「桁数を揃えた16進数の一覧を作りたい」。そんな場面で手が止まっていませんか?
255を「FF」、128を「80」と暗算で直すのは、慣れていないとミスのもと。1件ずつ電卓で変換していたら、色が20個あるだけで日が暮れてしまいます。
そこで使いたいのが、Googleスプレッドシートの DEC2HEX関数 です。10進数を渡すだけで16進数の文字列に変換でき、桁数を指定すればゼロ埋めまで自動でやってくれます。
まずは結論。よく使う数式はこの3つです。
=DEC2HEX(255) → FF
=DEC2HEX(75, 4) → 004B(4桁にゼロ埋め)
="#"&DEC2HEX(A2,2)&DEC2HEX(B2,2)&DEC2HEX(C2,2) → #RRGGBB
3つ目は、A2・B2・C2 に入れたR・G・Bの値からカラーコードを作る式です。この記事では構文の基本から、ゼロ埋め・RGB変換・一括変換・負の数・エラー対処まで順に見ていきましょう。
スプレッドシートのDEC2HEX関数の使い方(構文と基本例)
DEC2HEX関数(読み方: デック・トゥー・ヘックス)は、10進数を16進数に変換するエンジニアリング関数です。名前は「DEC(Decimal=10進数)to HEX(Hexadecimal=16進数)」の略。
Googleスプレッドシートに標準で入っているので、アドオンなどの準備は要りません。16進数は0〜9とA〜Fの16種類の文字で数を表す書き方で、Webのカラーコードでおなじみですよね。
構文と引数
=DEC2HEX(decimal_number, [significant_digits])
日本語に置き換えると =DEC2HEX(10進数, [桁数]) という形です。第2引数の桁数は省略できます。
| 引数 | 必須/任意 | 内容 |
|---|---|---|
| decimal_number(10進数) | 必須 | 変換したい10進数。-549,755,813,888〜549,755,813,887 の範囲 |
| significant_digits(桁数) | 任意 | 結果の桁数。結果より大きいと左側を0で埋める |
Google公式ヘルプによると、第1引数は数値でも文字列でも受け付けます。=DEC2HEX(100) と =DEC2HEX("100") は、どちらも「64」を返すとされています。
セル参照でも使い方は同じ。A2 に「255」が入っていれば、次の式で「FF」が返ります。
=DEC2HEX(A2)
10進数と16進数の対応表
よく出てくる値を一覧にしました。DEC2HEXの結果のイメージをつかむのに使ってください。
| 10進数 | DEC2HEXの結果 | ひとこと |
|---|---|---|
| 0 | 0 | |
| 9 | 9 | ここまでは10進と同じ |
| 10 | A | 10をAで表す |
| 15 | F | 1桁の最大値 |
| 16 | 10 | 16で繰り上がる |
| 100 | 64 | 6×16+4 |
| 255 | FF | 15×16+15。カラーコードの最大値 |
| 256 | 100 | 3桁目に繰り上がる |
| 4095 | FFF | 3桁の最大値 |
| 65535 | FFFF | 4桁の最大値 |
16進数は右の桁から1、16、256、4096…と重みが上がっていきます。255なら「15×16+15」なので、15を表すFが2つ並んで「FF」になるわけです。
桁数指定でゼロ埋めする/RGBからカラーコードを作る
DEC2HEXの第2引数を使うと、結果の桁数を揃えられます。カラーコード作りに欠かせない機能なので、しっかり押さえておきましょう。
桁数指定(ゼロ埋め)の考え方
桁数に結果より大きい数を渡すと、足りない分だけ左側に0が付きます。結果より小さい数を渡すと、ゼロ埋めではなくエラーになる点に注意してください。
| 数式 | 結果 | ポイント |
|---|---|---|
| =DEC2HEX(5) | 5 | 桁数を省略すると最小の桁数 |
| =DEC2HEX(5, 2) | 05 | 2桁にゼロ埋め |
| =DEC2HEX(75, 4) | 004B | 75は4B。4桁にそろえる |
| =DEC2HEX(100, 8) | 00000064 | 公式ヘルプの使用例 |
| =DEC2HEX(255, 1) | #NUM! | FFは2桁なので1桁に収まらない |
ゼロ埋めが効くのは正の数だけです。負の数では桁数が無視されるので、詳しくは後半の「負の数」の章を見てください。
RGBから#RRGGBBを作る色管理表
カラーコードの「#RRGGBB」は、R(赤)・G(緑)・B(青)の値をそれぞれ2桁の16進数にして並べたもの。各値は0〜255なので、桁数に2を指定すれば必ず2桁にそろいます。
A列にR、B列にG、C列にBを入れたら、D2 に次の式を入れて下にコピーしましょう。
="#"&DEC2HEX(A2,2)&DEC2HEX(B2,2)&DEC2HEX(C2,2)
| A: R | B: G | C: B | D: カラーコード | 色のイメージ |
|---|---|---|---|---|
| 255 | 0 | 0 | #FF0000 | 赤 |
| 0 | 128 | 0 | #008000 | 緑 |
| 255 | 165 | 0 | #FFA500 | オレンジ |
| 51 | 102 | 204 | #3366CC | 青系 |
| 245 | 245 | 245 | #F5F5F5 | 薄いグレー |
桁数の2を付け忘れると、0が「0」の1文字になってしまいます。たとえば緑の行は「#0800」となり、カラーコードとして使えません。
ブランドカラーや資料の配色をこの表で管理しておくと、CSSやスライドの色指定にそのまま貼れて便利です。小文字のコードが欲しいときは、全体を LOWER で包めば「#ffa500」の形にできます。
範囲を一括変換する(ARRAYFORMULA)とBASE関数との使い分け
行が増えるたびに数式をコピーするのは手間ですよね。スプレッドシートなら ARRAYFORMULA を使って、1つのセルから全行を変換できます。
ARRAYFORMULAで1セルから全行変換
A列の10進数をB列に一括変換するなら、B2 に次の式を1つだけ入れます。
=ARRAYFORMULA(IF(A2:A="", "", DEC2HEX(A2:A)))
IF(A2:A="","",…) の部分は、空白行を空欄のまま残すための工夫です。空白セルをDEC2HEXに渡したときの挙動は公式に書かれていません。そのため、最初から空白を除外しておくと安心でしょう。
RGBの色管理表も同じ考え方で、D2 の1セルにまとめられます。
=ARRAYFORMULA(IF(A2:A="", "", "#"&DEC2HEX(A2:A,2)&DEC2HEX(B2:B,2)&DEC2HEX(C2:C,2)))
ARRAYFORMULAの結果が出る範囲に、別の値が入っていると展開できません。B列やD列の2行目より下は空けておいてください。
BASE関数・DECIMAL関数との違い
10進数を16進数にする方法は、DEC2HEXだけではありません。BASE関数を使っても =BASE(255,16) で「FF」が得られます。
| 比較項目 | DEC2HEX | BASE |
|---|---|---|
| 変換先 | 16進数のみ | 2〜36進数を指定 |
| 負の数 | 扱える(後述の2の補数) | 0以上の整数が前提 |
| ゼロ埋め | 第2引数(桁数) | 第3引数(最小桁数) |
| ゼロ埋めの例 | =DEC2HEX(4095,6) → 000FFF | =BASE(4095,16,6) → 000FFF |
どちらも、桁数が結果の桁数以上なら同じ答えになります。=DEC2HEX(255,2) と =BASE(255,16,2) は、どちらも「FF」。
違いが出るのは、負の数を扱うときと、16進数以外にも変換したいとき。16進数だけならDEC2HEX、36進数など他の基数も使うならBASE、と覚えておけば迷いません。
逆に、任意の基数の文字列を10進数に戻すときはDECIMAL関数が使えます。=DECIMAL("FF",16) で255に戻せる、BASEと対になる関数です。
DECシリーズ(DEC2BIN/DEC2OCT)との比較
DEC2HEXには、変換先だけが違う兄弟関数があります。扱える範囲がかなり違うので、表で確認しておきましょう。
DEC2BINは負の側も -512 までで、範囲は -512〜511 と狭め。大きな数を扱うなら、範囲がいちばん広いDEC2HEXが向いています。
逆向きに戻す関数は、2進数ならBIN2DEC関数、16進数ならHEX2DEC関数です。
負の数を変換するとどうなる?(40ビットの2の補数)
DEC2HEXは負の数も変換できます。Excel公式の仕様では、「-FF」のようにマイナス記号は付きません。負の数は、40ビットの「2の補数」という形の10桁の16進数で返ります。
負の数は10桁で返り、桁数指定は無視される
2の補数は、コンピューターが負の数を表すときの決まった書き方です。Excelの仕様で計算した代表例を3つ見てみましょう。
| 数式 | 結果 | ひとこと |
|---|---|---|
| =DEC2HEX(-1) | FFFFFFFFFF | 10桁すべてF |
| =DEC2HEX(-100) | FFFFFFFF9C | 末尾の9Cに-100の情報 |
| =DEC2HEX(-549755813888) | 8000000000 | 扱える最小の値 |
10桁で返るこの表し方は、Excel公式に例として載っているものです。Google公式ヘルプは返り値の形を書いていません。表の値はExcelの仕様から求めたので、実際のシートで確かめてください。
また、Google公式ヘルプには「10進数が負のとき、桁数の指定は無視される」と明記されています。=DEC2HEX(-1, 2) のように2桁を指定しても、2桁の「FF」にはなりません。
先頭が8〜Fなら負数
10桁の結果を見たら、先頭の1文字を確認しましょう。40ビットの2の補数なら、先頭が0〜7で正の数、8〜Fで負の数です。
注意したいのは、この見分け方が「10桁の結果」に限る点です。=DEC2HEX(255) の「FF」は先頭がFですが、2桁なので普通の正の数。
正の数で10桁になるのは、68,719,476,736(16進で1000000000)以上の大きな値だけです。負の数の結果を10進数に戻すなら、HEX2DEC関数に渡してみてください。
エラーの原因と対処(#NUM!・#VALUE!・IFERROR)
DEC2HEXでよく見るエラーは #NUM! と #VALUE! の2つです。原因を知っておけば、表のどこを直せばいいかすぐ分かります。
#NUM!の3原因早見表
| 原因 | 例 | 根拠 |
|---|---|---|
| 桁数が結果の桁数より少ない | =DEC2HEX(255, 1) | Google公式ヘルプに明記 |
| 10進数が範囲外 | =DEC2HEX(1000000000000) | 範囲はGoogle公式に明記。Excel公式では範囲外は #NUM! |
| 桁数に0以下を指定 | =DEC2HEX(255, 0) | Excel公式では #NUM! |
いちばん多いのは、1つ目の桁数不足でしょう。RGBの式で桁数を1にしてしまうと、10以上の値でエラーになります。
範囲外と桁数0以下について、Google公式ヘルプは結果のエラー名まで書いていません。Excel公式の仕様では #NUM! なので、スプレッドシートでもエラーになると考えておくと安全です。
#VALUE!とIFERRORでの回避
数値として読めない文字列(”abc” など)を渡すとエラーになります。Excel公式では、このケースは #VALUE! とされています。
手入力のデータや外部から貼り付けた表では、文字や空白が混ざりがち。そんなときは IFERROR で包んで、エラーの代わりに目印を出しておきましょう。
=IFERROR(DEC2HEX(A2, 2), "要確認")
範囲外の値や文字列が入っていても「要確認」と表示されるので、どの行を直すべきか一目で分かります。
Excel版との違い
ExcelにもDEC2HEX関数があり、構文は同じです。両方の公式で一致しているのは、次の3点。
- 扱える範囲(-549,755,813,888〜549,755,813,887)
- 負の数では桁数の指定が無視される
- 桁数が結果より少ないと #NUM! になる
一方で、Google公式ヘルプは負の数の返り値の形や、0以下の桁数・小数の扱いまでは書いていません。こうした細かい挙動は、ファイルをやり取りする前に実際のシートで確かめておくと安心です。
Excelでの使い方はExcelのDEC2HEX関数の解説にまとめています。なお、Excelでは2007以降なら標準で使えます。2003以前は「分析ツール」アドインが必要でした。
よくある質問とまとめ
最後に、DEC2HEXでつまずきやすいポイントをQ&Aで整理します。
FAQ
Q. DEC2HEXの結果は数値?文字列?
A. Google公式ヘルプによると、結果は16進数のテキストです。ただしスプレッドシートは、数字だけの結果を黙って数値に変えてしまうことがあります。
公式の例では、A2 に「100」(10進数256の16進表記)があるとき、=A2+20 は「120」になります。16進数として足し算したわけではないので、計算結果としては誤り。16進数で計算したいときは、HEX2DECで10進数に戻してから計算してください。
Q. 小数を渡すとどうなる?
A. DEC2HEXの公式ヘルプには、小数の扱いが書かれていません。確実に整数で変換したいなら、INT や ROUND で整数にしてから渡すのが無難です。
=DEC2HEX(INT(A2))
Q. 16進数を10進数に戻すには?
A. HEX2DEC関数を使います。カラーコードからRの値を取り出すなら、=HEX2DEC(MID(D2,2,2)) のように2文字ずつ切り出して戻しましょう。
Q. 「0x」を付けたい・小文字にしたい
A. 文字列なので、連結や関数で整えられます。="0x"&DEC2HEX(255) なら「0xFF」、=LOWER(DEC2HEX(255)) なら「ff」です。
まとめ
DEC2HEX関数は、スプレッドシートで10進数を16進数に変換する関数です。ポイントを振り返っておきましょう。
- 基本は
=DEC2HEX(255)で「FF」 - 桁数を指定すると
=DEC2HEX(75,4)で「004B」のようにゼロ埋め - RGBは
="#"&DEC2HEX(R,2)&DEC2HEX(G,2)&DEC2HEX(B,2)でカラーコードに - 一括変換は ARRAYFORMULA と IF で空白行を除外
- 負の数は桁数指定が無視され、Excelの仕様では10桁の2の補数で返る
- 桁数不足や範囲外は #NUM!、心配なら IFERROR で包む
まずは手元のRGB値で、色管理表を1枚作ってみてください。2桁指定の感覚がつかめれば、DEC2BINやDEC2OCTも同じ要領で使えます。

