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

スポンサーリンク

「ネットワーク機器の設定ファイルに並んでいる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進数備考
00ゼロ
A10 
F151桁の最大値
FF2551バイト最大値
1002561バイト超え
FFFF655352バイト最大値
FFFFFF16,777,2153バイト最大値(#FFFFFF=白)
7FFFFFFFFF549,755,813,887HEX2DEC の正の最大値

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
FF255
100256
FFFF65535
1A26

戻り値は数値型(四則演算に直接使える)

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))255R = 255(最大)
=HEX2DEC(MID(“FF8000”,3,2))128G = 128
=HEX2DEC(MID(“FF8000”,5,2))0B = 0

#RRGGBB形式でハッシュが含まれる場合は、MIDの開始位置を2に変えてください。

=HEX2DEC(MID(A2,2,2))   ← R(#FF8000 の場合、位置2から2文字)

よく使うカラーコードのRGB変換例

カラーコードRGB
FF000025500
00FF0002550
0000FF00255
FFFF002552550
FFFFFF255255255
000000000
FF80002551280オレンジ

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

HEX2DEC関数で負の数に相当する16進数を変換すると、負の10進数が返されます。

負の数の仕組み

40ビット(10桁の16進数)の最上位ビットが1の場合、2の補数表現として負の数と解釈されます。

=HEX2DEC("FFFFFFFFFF")

結果は「-1」です。40ビットすべてが1は、2の補数で -1 を表します。

=HEX2DEC("FFFFFFFE00")

結果は「-512」です。

入力(16進数)結果(10進数)備考
FFFFFFFFFF-140ビット全て1
FFFFFFFE00-512 
8000000000-549,755,813,888最小値(負の最大)
7FFFFFFFFF549,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進数換算)桁数引数戻り値型
HEX2BIN2進数-512〜511ありテキスト
HEX2OCT8進数-536,870,912〜536,870,911ありテキスト
HEX2DEC10進数-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進)と組み合わせることで、さまざまな基数変換をスプレッドシート上で完結できますよ。

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