「ネットワーク機器の設定ファイルに並んでいる16進数のエラーコードを、社内のエラーDBと突き合わせたい…」
スプレッドシートでシステム管理台帳や障害記録を扱っていると、16進数のコードを10進数に変換して集計・VLOOKUP検索したい場面が出てきます。電卓で変換するのは間違いのもとですし、16進数のまま管理すると後の集計が面倒ですよね。
そんなときに役立つのがGoogleスプレッドシートのHEX2DEC関数です。16進数の文字列を指定するだけで、10進数の数値に変換してくれますよ。
HEX2BINやHEX2OCTと違い、桁数引数がなくシンプルな構文で使えます。しかも戻り値が数値型なので、そのままSUM関数やVLOOKUP検索に渡せます。Excelとも互換性があるため、ファイルをやり取りする現場でも安心ですね。
この記事では、HEX2DEC関数の基本から戻り値の数値活用・カラーコード分析・エラー対処法まで解説します。ARRAYFORMULAでの一括変換や実務の活用例にも触れていきますよ。
HEX2DEC関数とは?
HEX2DEC関数(読み方: ヘックス・ツー・デック)は、16進数を10進数に変換するエンジニアリング関数です。Googleスプレッドシートに標準搭載されていて、追加設定なしで使えます。
16進数は0〜9の数字とA〜Fのアルファベット(合計16種類)で数値を表す方法です。コンピュータやネットワーク機器の設定値・カラーコード・バイナリデータの表現によく使われます。HEX2DEC関数を使えば、こうした16進数をスプレッドシート上で10進数に変換して、集計や検索に活用できますよ。
たとえば =HEX2DEC("FF") と入力すると、結果は「255」です。16進数の「FF」が10進数の255(1バイトの最大値)と同じだとわかります。
関数名の由来
関数名を分解すると、次の意味になります。
- HEX = Hexadecimal(ヘキサデシマル、16進数)
- 2 = to(〜へ)
- DEC = Decimal(デシマル、10進数)
つまり「HEXからDECへ」、16進数を10進数に変換するという意味がそのまま名前になっています。逆変換のDEC2HEX関数とセットで覚えると便利ですよ。
HEX2DEC関数でできること
HEX2DEC関数の特徴をまとめると、次のとおりです。
- 16進数を10進数の数値に変換する
- 変換できる範囲は -549,755,813,888〜549,755,813,887(40ビット符号付き整数)
- 桁数引数がない(HEX2BIN関数・HEX2OCT関数と異なる)
- 戻り値は数値型(文字列ではない)→ SUM・AVERAGE・VLOOKUP にそのまま使える
- ExcelのHEX2DEC関数と仕様が同じで、ファイル共有でもそのまま動作する
NOTE
HEX2DEC関数はDEC2HEX関数(10進→16進)と逆の変換を行います。また、BIN2DEC関数(2進→10進)と合わせてよく使われますよ。
HEX2DEC関数の書き方(構文と引数)
基本構文
=HEX2DEC(数値)
カッコの中に、変換したい16進数を指定するだけです。HEX2BINやHEX2OCTと違い、桁数引数はありません。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値 | 必須 | 10進数に変換したい16進数(最大10文字)。-549,755,813,888〜549,755,813,887 に相当する値のみ有効 |
桁数を指定する第2引数はありません。シンプルに1つの引数だけで使えますよ。
第1引数:変換する16進数
数値に指定できるのは、次の条件を満たす値です。
- 0〜9とA〜F(大文字・小文字どちらでもOK)のみで構成された文字列
- 変換結果が -549,755,813,888〜549,755,813,887 の範囲に収まるもの
- 正の数: 0〜7FFFFFFFFF(16進数、10進数では 0〜549,755,813,887)
- 負の数: 8000000000〜FFFFFFFFFF(40ビット2の補数表現)
- 範囲外の値は #NUM! エラー
WARNING
HEX2DEC関数の引数には「16進数の文字列」または「16進数が入ったセル参照」を指定します。
=HEX2DEC(FF)のようにクォートなしで入力すると、FFが変数名とみなされエラーになります。=HEX2DEC("FF")のように文字列として指定してください。
16進数と10進数の対応表
HEX2DEC関数の動きをイメージしやすくするため、よく使われる16進数の対応を表にまとめました。
| 16進数 | 10進数 | 備考 |
|---|---|---|
| 0 | 0 | ゼロ |
| A | 10 | |
| F | 15 | 1桁の最大値 |
| FF | 255 | 1バイト最大値 |
| 100 | 256 | 1バイト超え |
| FFFF | 65535 | 2バイト最大値 |
| FFFFFF | 16,777,215 | 3バイト最大値(#FFFFFF=白) |
| 7FFFFFFFFF | 549,755,813,887 | HEX2DEC の正の最大値 |
16進数の1桁は10進数の0〜15に対応します。2桁になると最大255(= 16²−1)、3桁になると最大4095(= 16³−1)と指数的に大きくなりますよ。
HEX2DEC関数の基本的な使い方
直接入力で変換する
もっともシンプルな使い方から見ていきましょう。
=HEX2DEC("FF")
結果は「255」です。16進数の「FF」(両桁とも最大の15)が10進数で表されました。
=HEX2DEC("1A")
結果は「26」です。1桁目の「1」が16、2桁目の「A」が10なので、16+10=26 となります。
=HEX2DEC("100")
結果は「256」です。3桁目が1なので 16² = 256 が確認できます。
セル参照で変換する
実務では、セルに入っている16進数を変換する場面が多いです。A2に「FF」が入っている場合は次のように書きます。
=HEX2DEC(A2)
結果は「255」です。
ARRAYFORMULAで一括変換する
スプレッドシートならではの強みが、ARRAYFORMULA関数との組み合わせです。
=ARRAYFORMULA(HEX2DEC(A2:A10))
A2からA10までの16進数データを、1つの数式で一気に10進数に変換できます。
| A列: 16進数 | B列: 数式 | 結果 |
|---|---|---|
| A | =ARRAYFORMULA(HEX2DEC(A2:A6)) | 10 |
| FF | ↓ | 255 |
| 100 | ↓ | 256 |
| FFFF | ↓ | 65535 |
| 1A | ↓ | 26 |
戻り値は数値型(四則演算に直接使える)
HEX2DEC関数の最大の特徴が、戻り値が数値型である点です。HEX2BIN関数や HEX2OCT関数の戻り値がテキスト(文字列)であるのと異なります。
数値型で返るため、そのまま計算やLOOKUP関数に使えますよ。
SUM・AVERAGEで集計できる
=SUM(HEX2DEC(A2:A10))
ARRAYFORMULAなしでも、配列数式として機能します。複数の16進数を一括変換して合計を出せますよ。
=AVERAGE(ARRAYFORMULA(HEX2DEC(A2:A10)))
平均値も同様に計算できます。
VLOOKUPの検索値として使える
エラーコードを16進数で管理している台帳から、10進数に変換してDBを検索する場面では次のように書けます。
=VLOOKUP(HEX2DEC(A2), エラーDB!A:B, 2, FALSE)
A2の16進数エラーコードを10進数に変換し、エラーDB表の10進数列から対応するメッセージを検索しています。
HEX2BIN・HEX2OCTで変換した場合はテキスト型なので、数値で管理されているDBとは一致しません。HEX2DEC を使うことで、このような数値前提のLOOKUPが自然に書けますよ。
実務活用例:カラーコードのRGB成分を10進で取り出す
HEX2DEC関数の代表的な実務活用が、Webカラーコードの解析です。#FF8000のような16進数カラーコードから、R(赤)・G(緑)・B(青)の10進数値を取り出せます。
MID関数との組み合わせ
カラーコードの先頭#を除いた6文字から、2文字ずつMID関数で切り取り、HEX2DECで変換します。
=HEX2DEC(MID(A2,1,2)) ← R(赤)
=HEX2DEC(MID(A2,3,2)) ← G(緑)
=HEX2DEC(MID(A2,5,2)) ← B(青)
A2に「FF8000」(ハッシュなし)が入っている場合の結果です。
| 数式 | 結果 | 意味 |
|---|---|---|
| =HEX2DEC(MID(“FF8000”,1,2)) | 255 | R = 255(最大) |
| =HEX2DEC(MID(“FF8000”,3,2)) | 128 | G = 128 |
| =HEX2DEC(MID(“FF8000”,5,2)) | 0 | B = 0 |
#RRGGBB形式でハッシュが含まれる場合は、MIDの開始位置を2に変えてください。
=HEX2DEC(MID(A2,2,2)) ← R(#FF8000 の場合、位置2から2文字)
よく使うカラーコードのRGB変換例
| カラーコード | R | G | B | 色 |
|---|---|---|---|---|
| FF0000 | 255 | 0 | 0 | 赤 |
| 00FF00 | 0 | 255 | 0 | 緑 |
| 0000FF | 0 | 0 | 255 | 青 |
| FFFF00 | 255 | 255 | 0 | 黄 |
| FFFFFF | 255 | 255 | 255 | 白 |
| 000000 | 0 | 0 | 0 | 黒 |
| FF8000 | 255 | 128 | 0 | オレンジ |
負の数の変換(40ビット2の補数)
HEX2DEC関数で負の数に相当する16進数を変換すると、負の10進数が返されます。
負の数の仕組み
40ビット(10桁の16進数)の最上位ビットが1の場合、2の補数表現として負の数と解釈されます。
=HEX2DEC("FFFFFFFFFF")
結果は「-1」です。40ビットすべてが1は、2の補数で -1 を表します。
=HEX2DEC("FFFFFFFE00")
結果は「-512」です。
| 入力(16進数) | 結果(10進数) | 備考 |
|---|---|---|
| FFFFFFFFFF | -1 | 40ビット全て1 |
| FFFFFFFE00 | -512 | |
| 8000000000 | -549,755,813,888 | 最小値(負の最大) |
| 7FFFFFFFFF | 549,755,813,887 | 最大値(正の最大) |
TIP
負の数の変換が必要な場面は、符号付きレジスタ値や温度センサーのオーバーフロー値の管理などです。通常の業務では正の数だけを扱うことがほとんどですよ。
エラーの種類と対処法
#NUM! エラー
次のいずれかに当てはまると #NUM! エラーになります。
- 変換結果が -549,755,813,888〜549,755,813,887 の範囲外
- 0〜9・A〜F(a〜f)以外の文字を含む16進数を指定した
=HEX2DEC("GGGG") → #NUM!(G は16進数では無効な文字)
=HEX2DEC("XYZ") → #NUM!(すべて無効な文字)
#VALUE! エラー
引数に数値や論理値など、文字列でない型を直接指定すると #VALUE! エラーになる場合があります。セル参照では発生しません。
エラー対処:IFERRORで包む
変換対象のデータが信頼できない場合は、IFERRORで包んでおくと安心です。
=IFERROR(HEX2DEC(A2), "変換エラー")
A2に無効な16進数が入っていた場合でも、「変換エラー」と表示して処理が止まりません。
エラー防止:正規表現で事前チェック
大量データを処理する前に、16進数として有効かどうかを確認しておくと安心です。
=REGEXMATCH(A2, "^[0-9A-Fa-f]+$")
TRUEならHEX2DECで変換できる可能性が高いです。
HEX2DEC関数とExcelの互換性
GoogleスプレッドシートのHEX2DEC関数は、ExcelのHEX2DEC関数と仕様が同じです。構文・引数・変換ルール・エラー条件のすべてが一致しています。
ExcelファイルをGoogleスプレッドシートで開いた場合でも、HEX2DEC関数はそのまま動作します。逆にスプレッドシートで作成した数式をExcelで開いても問題ありませんよ。
HEX2シリーズ3関数の比較
HEXシリーズの変換関数(HEX2から始まる)を比較すると、変換先と扱える範囲が異なります。
| 関数 | 変換先 | 有効範囲(10進数換算) | 桁数引数 | 戻り値型 |
|---|---|---|---|---|
| HEX2BIN | 2進数 | -512〜511 | あり | テキスト |
| HEX2OCT | 8進数 | -536,870,912〜536,870,911 | あり | テキスト |
| HEX2DEC | 10進数 | -549,755,813,888〜549,755,813,887 | なし | 数値 |
HEX2DECだけが桁数引数を持たず、戻り値も数値型です。四則演算・VLOOKUP・集計関数に直接渡せるのはHEX2DECだけなので、変換後に計算が必要な場合はHEX2DECを使いましょう。
HEX2BINやHEX2OCTを使って変換後に計算したい場合は、さらにBIN2DEC・OCT2DEC関数を挟む必要があります。
まとめ
HEX2DEC関数は、16進数を10進数に変換するエンジニアリング関数です。
- 基本構文:
=HEX2DEC(数値)← 引数は1つだけ - 有効範囲: -549,755,813,888〜549,755,813,887(正: 0〜7FFFFFFFFF)
- 桁数引数なし(HEX2BIN・HEX2OCTとの違い)
- 戻り値は数値型 → SUM・VLOOKUP・四則演算に直接使える
- カラーコードRGB抽出・エラーコード照合などの実務で活躍
=HEX2DEC("FF") → 255 のように、16進数を10進数に変換してそのまま計算に使えるのがHEX2DECの最大の強みですよ。
逆変換にはDEC2HEX関数を使います。またBIN2DEC関数(2進→10進)やHEX2BIN関数(16進→2進)と組み合わせることで、さまざまな基数変換をスプレッドシート上で完結できますよ。
