スプレッドシートのDEC2HEX関数の使い方|10進→16進

スポンサーリンク

「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)備考
00 
99 
10AAが10を表す
15FFが15を表す
161016進数の繰り上がり
100646×16 + 4
255FF1バイトの最大値
2561002バイト目に繰り上がり
65535FFFF2バイトの最大値

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
10064
255FF
65535FFFF
16777215FFFFFF

桁数を指定して出力する(ゼロ埋め)

DEC2HEX関数の第2引数「桁数」を使うと、出力の文字数を揃えられます。RGBカラーコード変換でとくに便利な機能ですよ。

2桁固定フォーマット出力

Webカラーコードは「RGB各色を2桁の16進数」で表します。DEC2HEXで2桁固定にしておくと、コードが崩れません。

=DEC2HEX(5, 2)

結果は「05」です。桁数を省略すると「5」とだけ表示されますが、2を指定したことで先頭に「0」が追加されました。

数式結果用途
=DEC2HEX(0, 2)00最小値(カラーコードの色なし)
=DEC2HEX(5, 2)052桁固定
=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(青)カラーコード
25500#FF0000(赤)
01280#008000(緑)
00255#0000FF(青)
2551650#FFA500(オレンジ)
1280128#800080(紫)

デザインの色管理表をスプレッドシートで作っておけば、CSS作業のときにコピペするだけで済みますよ。

負の数の変換(2の補数・40ビット)

DEC2HEX関数で負の数を変換すると、40ビット(10桁16進数)の2の補数表現が返されます。

負の数の変換例

=DEC2HEX(-1)

結果は「FFFFFFFFFF」(10桁すべてF)です。40ビットすべてが1になる、2の補数表現の特徴的な値です。

=DEC2HEX(-100)

結果は「FFFFFFFF9C」です。

数式結果備考
=DEC2HEX(-1)FFFFFFFFFF10桁固定
=DEC2HEX(-100)FFFFFFFF9C10桁固定
=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関数を比較すると、変換先と扱える範囲が異なります。

関数変換先有効範囲(正)負の数桁数主な用途
DEC2BIN2進数0〜51110桁ビットフラグ・IPアドレス
DEC2OCT8進数0〜536,870,91110桁Linuxパーミッション(chmod)
DEC2HEX16進数0〜549,755,813,88710桁カラーコード・メモリアドレス

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と組み合わせれば、さまざまな基数変換をスプレッドシート上で完結できますよ。

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