「RGB値(赤・緑・青の数値)をWebカラーコードに変換したいのに、計算が面倒…」
スプレッドシートでデザインやWeb制作の作業をしていると、10進数の数値を16進数で表現したい場面が出てきます。255を「FF」、0を「00」に変換するといった作業を手計算でやるのは、慣れていないと大変ですよね。
そんなときに役立つのがGoogleスプレッドシートのDEC2HEX関数です。10進数のセルを指定するだけで、16進数の文字列にすぐ変換できますよ。
しかも桁数を指定してゼロ埋めできるので、RGBカラーコード(#FF0000のような形式)をスプレッドシート上で自動生成することも可能です。Excelとも互換性があるため、ファイルをやり取りする現場でも安心して使えますね。
この記事では、DEC2HEX関数の基本から桁数指定・カラーコード生成・エラー対処法まで解説します。ARRAYFORMULAでの一括変換や実務の活用例にも触れていきますよ。
DEC2HEX関数とは?
DEC2HEX関数(読み方: デック・ツー・ヘックス)は、10進数を16進数に変換するエンジニアリング関数です。Googleスプレッドシートに標準搭載されていて、追加設定なしで使えます。
16進数は0〜9の数字とA〜Fのアルファベット(合計16種類)で数値を表す方法です。10進数の「10」は16進数の「A」、「15」は「F」、「16」は「10」になります。
WebデザインやCSS、データ通信の分野では16進数がよく登場します。特にWebカラーコード(#FF0000のような#RRGGBB形式)は、RGBそれぞれの数値を2桁の16進数で表したものです。DEC2HEX関数を使えば、この変換作業をスプレッドシートで自動化できますよ。
たとえば =DEC2HEX(255) と入力すると、結果は「FF」です。10進数の255(1バイトの最大値)が、16進数ではたった2文字で表現されることがわかります。
関数名の由来
関数名を分解すると、次の意味になります。
- DEC = Decimal(デシマル、10進数)
- 2 = to(〜へ)
- HEX = Hexadecimal(ヘキサデシマル、16進数)
つまり「DECからHEXへ」、10進数を16進数に変換するという意味がそのまま名前になっています。逆変換のHEX2DEC関数とセットで覚えると便利ですよ。
DEC2HEX関数でできること
DEC2HEX関数の特徴をまとめると、次のとおりです。
- 10進数を16進数の文字列に変換する
- 変換できる範囲は -549,755,813,888〜549,755,813,887(40ビット符号付き整数)
- 桁数を指定して先頭にゼロ埋めできる
- 負の数は2の補数(40ビット)で返される
- ExcelのDEC2HEX関数と仕様が同じで、ファイル共有でもそのまま動作する
NOTE
DEC2HEX関数はDEC2BIN関数(10進→2進)やDEC2OCT関数(10進→8進)と同じ「DECシリーズ」の関数です。変換先の基数だけが違うので、一度覚えると他の変換関数も使いやすくなりますよ。
DEC2HEX関数の書き方(構文と引数)
基本構文
=DEC2HEX(数値, [桁数])
カッコの中に、変換したい10進数と、必要に応じて桁数を指定します。桁数は省略できますよ。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値 | 必須 | 16進数に変換したい10進数。-549,755,813,888〜549,755,813,887の範囲で指定する |
| 桁数 | 任意 | 結果の最小文字数(1〜10)。省略すると必要最小限の桁数で返される |
第1引数:変換する10進数
数値に指定できるのは、次の条件を満たす値だけです。
- -549,755,813,888以上 549,755,813,887以下の整数(40ビット符号付き整数の範囲)
- 直接入力でもセル参照でもOK
- 小数を指定した場合は切り捨てて処理される
- 範囲外は #NUM! エラー
DEC2BINが-512〜511の狭い範囲なのに対して、DEC2HEXは約5,500億という非常に広い範囲を扱えます。
第2引数:桁数(省略可)
桁数のルールは、次のとおりです。
- 1〜10の範囲で指定する
- 結果の桁数より小さい値を指定すると #NUM! エラー
- 0や負の値を指定するとエラーになる
- 負の数を変換した場合、桁数指定は無視されて常に10桁で返される
WARNING
DEC2HEX関数の戻り値は数値ではなく「文字列」です。そのまま計算に使おうとすると文字列として扱われます。16進数を10進数に戻して計算したい場合はHEX2DEC関数を使ってくださいね。
10進数と16進数の対応表
DEC2HEX関数の動きをイメージしやすくするため、よく使う値の対応を表にまとめました。
| 10進数 | 16進数(DEC2HEX) | 備考 |
|---|---|---|
| 0 | 0 | |
| 9 | 9 | |
| 10 | A | Aが10を表す |
| 15 | F | Fが15を表す |
| 16 | 10 | 16進数の繰り上がり |
| 100 | 64 | 6×16 + 4 |
| 255 | FF | 1バイトの最大値 |
| 256 | 100 | 2バイト目に繰り上がり |
| 65535 | FFFF | 2バイトの最大値 |
16進数は「16の累乗の足し算」で値が決まります。右から順に1、16、256、4096…と位が重みを持つイメージですね。
たとえば10進数の「255」は、16×15 + 15 = 240+15 で、16進数にすると FF になります。Webカラーコードの #FF0000(純粋な赤)の「FF」がまさにこの値ですよ。
DEC2HEX関数の基本的な使い方
直接入力で変換する
もっともシンプルな使い方から見ていきましょう。
=DEC2HEX(255)
結果は「FF」です。1バイト(0〜255)の最大値を16進数で表すと、2文字で済みますね。
=DEC2HEX(100)
結果は「64」です。100 = 6×16 + 4 の計算から、16進数では「64」になります。
セル参照で変換する
実務では、セルに入っている10進数を変換する場面が多いです。A2のセルに「255」が入っている場合は、次のように書きます。
=DEC2HEX(A2)
結果は「FF」です。セル参照でも直接入力と同じように動作します。
ARRAYFORMULAで一括変換する
スプレッドシートならではの強みが、ARRAYFORMULA関数との組み合わせです。
=ARRAYFORMULA(DEC2HEX(A2:A10))
A2からA10までの10進数データを、1つの数式で一気に16進数に変換できます。
| A列: 10進数 | B列: 数式 | 結果 |
|---|---|---|
| 0 | =ARRAYFORMULA(DEC2HEX(A2:A6)) | 0 |
| 100 | ↓ | 64 |
| 255 | ↓ | FF |
| 65535 | ↓ | FFFF |
| 16777215 | ↓ | FFFFFF |
桁数を指定して出力する(ゼロ埋め)
DEC2HEX関数の第2引数「桁数」を使うと、出力の文字数を揃えられます。RGBカラーコード変換でとくに便利な機能ですよ。
2桁固定フォーマット出力
Webカラーコードは「RGB各色を2桁の16進数」で表します。DEC2HEXで2桁固定にしておくと、コードが崩れません。
=DEC2HEX(5, 2)
結果は「05」です。桁数を省略すると「5」とだけ表示されますが、2を指定したことで先頭に「0」が追加されました。
| 数式 | 結果 | 用途 |
|---|---|---|
| =DEC2HEX(0, 2) | 00 | 最小値(カラーコードの色なし) |
| =DEC2HEX(5, 2) | 05 | 2桁固定 |
| =DEC2HEX(255, 2) | FF | 最大値(最も強い色) |
| =DEC2HEX(128, 2) | 80 | 中間値 |
TIP
1バイト(0〜255)の16進数は必ず2桁以内に収まるので、桁数に「2」を指定すると安全に揃えられます。3桁以上のRGB値は通常存在しないので、2桁固定で問題ありませんよ。
実務活用例:RGBカラーコード変換
DEC2HEX関数の最も身近な実務活用例が、RGBカラーコードの生成です。デザイン作業やCSSスタイル管理をスプレッドシートで行う場合に役立ちます。
RGBからWebカラーコード(#RRGGBB)を作る
RGBの3つの数値(各0〜255)を16進数2桁に変換して連結すれば、Webカラーコードが完成します。
="#"&DEC2HEX(A2, 2)&DEC2HEX(B2, 2)&DEC2HEX(C2, 2)
A2に赤(R)、B2に緑(G)、C2に青(B)の数値が入っている場合、この数式でカラーコードを自動生成できます。
| R(赤) | G(緑) | B(青) | カラーコード |
|---|---|---|---|
| 255 | 0 | 0 | #FF0000(赤) |
| 0 | 128 | 0 | #008000(緑) |
| 0 | 0 | 255 | #0000FF(青) |
| 255 | 165 | 0 | #FFA500(オレンジ) |
| 128 | 0 | 128 | #800080(紫) |
デザインの色管理表をスプレッドシートで作っておけば、CSS作業のときにコピペするだけで済みますよ。
負の数の変換(2の補数・40ビット)
DEC2HEX関数で負の数を変換すると、40ビット(10桁16進数)の2の補数表現が返されます。
負の数の変換例
=DEC2HEX(-1)
結果は「FFFFFFFFFF」(10桁すべてF)です。40ビットすべてが1になる、2の補数表現の特徴的な値です。
=DEC2HEX(-100)
結果は「FFFFFFFF9C」です。
| 数式 | 結果 | 備考 |
|---|---|---|
| =DEC2HEX(-1) | FFFFFFFFFF | 10桁固定 |
| =DEC2HEX(-100) | FFFFFFFF9C | 10桁固定 |
| =DEC2HEX(-549755813888) | 8000000000 | 負の最小値 |
NOTE
負の数の変換では、第2引数の桁数指定は無視されます。常に10桁で返されるため、2桁や4桁を指定しても10桁の結果になりますよ。
16進数の2の補数の読み方
先頭の16進数が「8」以上(8〜F)なら負の数を表しています。これはDEC2BINで先頭ビットが1なら負の数というのと同じ仕組みです。
- 正の数: 先頭が0〜7
- 負の数: 先頭が8〜F
エラーの種類と対処法
#NUM! エラー
次のいずれかに当てはまると #NUM! エラーになります。
- 数値が範囲外(-549,755,813,888 未満または 549,755,813,887 超)
- 桁数に 0 以下の値を指定した
- 桁数に結果の桁数より少ない値を指定した
=DEC2HEX(1000000000000) → #NUM!(範囲外)
=DEC2HEX(255, 1) → #NUM!(255のHEXは"FF"で2桁、1桁は不足)
#VALUE! エラー
数値や桁数に数値型でない値(文字列など)を直接指定すると #VALUE! エラーになります。
=DEC2HEX("abc") → #VALUE!
=DEC2HEX(255, "a") → #VALUE!
セル参照の場合はセルが空でも「0」として扱われることがありますが、文字列が入ったセルを直接参照した場合はエラーになります。
エラー対処:IFERRORで包む
変換対象のデータが信頼できない場合は、IFERRORで包んでおくと安心です。
=IFERROR(DEC2HEX(A2, 2), "エラー")
A2に範囲外の値や文字列が入っていた場合でも、「エラー」と表示して処理が止まりません。
DEC2HEX関数とExcelの互換性
GoogleスプレッドシートのDEC2HEX関数は、ExcelのDEC2HEX関数と仕様が同じです。構文・引数・変換ルール・エラー条件のすべてが一致しています。
ExcelファイルをGoogleスプレッドシートで開いた場合でも、DEC2HEX関数はそのまま動作します。逆にスプレッドシートで作成した数式をExcelで開いても問題ありませんよ。
NOTE
Excelでは2007年以降は標準搭載ですが、2003以前のバージョンでは「分析ツールアドイン」の有効化が必要でした。現在のExcel環境では気にする必要はほぼありませんが、古いファイルを引き継ぐ場合は注意してください。
DECシリーズ3関数の比較
DECシリーズの3関数を比較すると、変換先と扱える範囲が異なります。
| 関数 | 変換先 | 有効範囲(正) | 負の数桁数 | 主な用途 |
|---|---|---|---|---|
| DEC2BIN | 2進数 | 0〜511 | 10桁 | ビットフラグ・IPアドレス |
| DEC2OCT | 8進数 | 0〜536,870,911 | 10桁 | Linuxパーミッション(chmod) |
| DEC2HEX | 16進数 | 0〜549,755,813,887 | 10桁 | カラーコード・メモリアドレス |
DEC2HEXは3つの中でもっとも広い範囲を扱えます。メモリアドレスや大きな識別子を16進数で管理する場面でも使えますよ。
まとめ
DEC2HEX関数は、10進数を16進数に変換するエンジニアリング関数です。
- 基本構文:
=DEC2HEX(数値, [桁数]) - 有効範囲: -549,755,813,888〜549,755,813,887
- 桁数を指定するとゼロ埋めで出力できる
- 負の数は常に10桁(40ビット2の補数)で返される
- RGBカラーコード変換で最もよく活用される
特に ="#"&DEC2HEX(R, 2)&DEC2HEX(G, 2)&DEC2HEX(B, 2) のカラーコード生成パターンは、デザイン管理やCSS作業で重宝しますよ。
逆変換にはHEX2DEC関数を使います。またDEC2BINやDEC2OCTと組み合わせれば、さまざまな基数変換をスプレッドシート上で完結できますよ。
