スプレッドシートのDECIMAL関数の使い方|10進数変換

スポンサーリンク

「16進数のカラーコードや2進数のデータを、10進数に変換したい…」

他のシステムから受け取ったN進数のデータを手計算で変換するのは大変ですよね。

桁ごとに基数のべき乗を掛けて足し合わせる作業は、時間もかかるしミスの元です。

そんなときに使えるのがDECIMAL関数です。N進数の文字列と基数を指定するだけで、10進数の数値に一発変換できます。

この記事では基本の書き方からBASE関数との使い分けまで紹介します。

DECIMAL関数とは?

DECIMAL関数(読み方: デシマル関数)は、N進数の文字列を10進数の数値に変換する関数です。

名前の「DECIMAL」は「10進数の」を意味する英語からきています。

たとえば =DECIMAL("FF", 16) と書くと「255」が返ります。16進数のFFを10進数に変換した結果ですね。

DECIMAL関数にできることをまとめると、次のとおりです。

  • 2進数・8進数・16進数の文字列を10進数に変換する
  • 2〜36進数まで好きな基数を指定できる
  • BASE関数と組み合わせて検算できる
  • 大文字・小文字を区別せずに変換できる

NOTE

DECIMAL関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、互換性は完全です。

DECIMAL関数の書き方(構文と引数)

基本構文

=DECIMAL(値, 基数)

カッコの中に変換元のN進数の文字列と、その文字列が何進数であるかを示す基数を指定します。

引数の説明

引数必須/任意説明
必須変換元のN進数を表す文字列
基数必須変換元の基数(2〜36の整数)

値には文字列を指定します。セル参照でも直接入力でもOKです。直接入力するときはダブルクォーテーション(")で囲んでください。基数は2〜36の範囲で指定できます。大文字と小文字は区別されないので、"FF" でも "ff" でも同じ結果になります。

DECIMAL関数の基本的な使い方

16進数を10進数に変換する

もっともよく使われるパターンです。

=DECIMAL("FF", 16)

結果は「255」です。16進数のFFを10進数に変換しています。

=DECIMAL("1A", 16)

結果は「26」です。16進数では10〜15をA〜Fの文字で表します。1Aは1×16+10=26です。

2進数を10進数に変換する

IT系のデータ処理でよく使われる変換です。

=DECIMAL("1010", 2)

結果は「10」です。2進数の1010を10進数に変換すると10になります。

=DECIMAL("11111111", 2)

結果は「255」です。2進数で8桁の11111111は10進数の255ですね。

8進数を10進数に変換する

ファイルのパーミッション(権限設定)などで使われる8進数の変換です。

=DECIMAL("10", 8)

結果は「8」です。8進数の10は10進数の8になります。

=DECIMAL("377", 8)

結果は「255」です。

セル参照を使う

A1に「FF」が入っているとします。

=DECIMAL(A1, 16)

結果は「255」です。セル参照を使えば、値を変えるだけで結果が自動更新されます。

特殊なケース

0を変換した場合は「0」が返ります。

=DECIMAL("0", 2)

結果は「0」です。

小文字で指定しても同じ結果が返ります。

=DECIMAL("ff", 16)

結果は「255」です。"FF" と同じ結果ですね。

DECIMAL関数の実践的な使い方・応用例

BASE関数と組み合わせて検算する

BASE関数で変換した結果をDECIMAL関数で元に戻せば、変換が正しいかどうか検算できます。

=BASE(255, 16)

結果は「FF」です。

=DECIMAL("FF", 16)

結果は「255」です。元の数値に戻りましたね。

1つの数式にまとめて検算することも可能です。

=DECIMAL(BASE(100, 8), 8)

結果は「100」です。元の値と一致すれば、変換は正しいといえます。

16進数カラーコードをRGB値に変換する

Webデザインなどで使われる16進数のカラーコード(例: FF8000)から、R・G・Bそれぞれの値を取り出せます。

A1に「FF8000」が入っているとします。

=DECIMAL(MID(A1,1,2), 16)

結果は「255」です。先頭2文字「FF」を赤(R)の値に変換しています。

=DECIMAL(MID(A1,3,2), 16)

結果は「128」です。3〜4文字目「80」を緑(G)の値に変換しています。

=DECIMAL(MID(A1,5,2), 16)

結果は「0」です。5〜6文字目「00」を青(B)の値に変換しています。

TIP

MID関数で文字列を2文字ずつ切り出して、それぞれをDECIMALで10進数に変換するのがポイントです。

2進数のビット列から10進数に一括変換する

複数のセルに2進数のデータが並んでいるとき、隣の列にDECIMAL関数を入れれば一括で10進数に変換できます。

A列に2進数のデータ(「1010」「1100」「1111」など)が入っているとします。

=DECIMAL(A1, 2)

この数式を下方向にコピーすれば、すべての行で10進数に変換されます。

BASE関数との違い・使い分け

関数動作用途
BASE10進数 → N進数に変換2進数・16進数などへの変換
DECIMALN進数 → 10進数に変換16進数カラーコードの数値化など

逆関数の関係

DECIMAL関数とBASE関数は逆関数の関係にあります。BASEで変換した結果をDECIMALに渡すと、元の値に戻ります。

BASE(100, 2) → "1100100"
DECIMAL("1100100", 2) → 100

つまり「10進数 → N進数」がBASE、「N進数 → 10進数」がDECIMALです。

使い分けの目安

DECIMAL関数を使う場面:

  • 16進数のカラーコードを数値に変換したい
  • 2進数や8進数のデータを10進数で計算したい
  • 他システムから受け取ったN進数データを数値化したい

BASE関数を使う場面:

  • 10進数の数値を2進数・8進数・16進数で表示したい
  • カラーコードを生成したい
  • ビット列を作成したい

TIP

DECIMALは「10進数に戻る」変換、BASEは「10進数から出る」変換と覚えるとわかりやすいです。BASE関数の詳しい使い方はスプレッドシートのBASE関数の使い方で解説しています。

戻り値の型の違い

もうひとつ大きな違いがあります。

  • DECIMAL関数の戻り値は数値。そのまま計算に使えます
  • BASE関数の戻り値は文字列。算術演算には使えません
=DECIMAL("FF", 16) + 1

この数式は「256」を返します。DECIMALの結果は数値なので、そのまま足し算できます。

よくあるエラーと対処法

DECIMAL関数で発生しやすいエラーをまとめました。

エラー原因対処法
#NUM!基数が範囲外(2未満または36超)基数は2〜36の整数にする
#NUM!値に基数で無効な文字が含まれている使用可能な文字を確認する
#VALUE!引数が空または不正な型セル参照先を確認する
#ERROR!構文ミス(カッコ忘れ等)数式の入力内容を見直す

基数に対して無効な文字を指定したとき

もっとも多いエラーです。たとえば2進数には0と1しか使えません。

=DECIMAL("123", 2)

この数式は#NUM!エラーになります。2進数で「2」や「3」は使えないためです。

同様に、8進数では0〜7の数字しか使えません。

=DECIMAL("89", 8)

この数式も#NUM!エラーです。8進数で「8」や「9」は無効な文字です。

基数が範囲外のとき

基数は2〜36の整数を指定する必要があります。

=DECIMAL("10", 1)

この数式は#NUM!エラーになります。1進数は存在しないため、2以上を指定してください。

値をダブルクォーテーションで囲み忘れたとき

DECIMAL関数の第1引数は文字列です。直接入力する場合はダブルクォーテーションが必要です。

=DECIMAL(FF, 16)

この数式はエラーになります。正しくは次のように書きます。

=DECIMAL("FF", 16)

NOTE

セル参照の場合はダブルクォーテーションは不要です。A1にFFと入力されていれば =DECIMAL(A1, 16) でそのまま使えます。

Excelとの違い

DECIMAL関数はExcelとGoogleスプレッドシートで完全に同じ動作です。

項目ExcelGoogleスプレッドシート
構文=DECIMAL(文字列, 基数)=DECIMAL(値, 基数)
動作N進数を10進数に変換N進数を10進数に変換
基数の範囲2〜362〜36
エラー時#NUM! / #VALUE!#NUM! / #VALUE!

引数名の表記が若干異なるだけで、機能は完全に同じです。ExcelのDECIMAL関数についてはExcelのDECIMAL関数の記事で詳しく解説しています。

まとめ

DECIMAL関数は、N進数の文字列を10進数の数値に変換する関数です。

ポイントを整理します。

  • 構文は =DECIMAL(値, 基数) で、2〜36進数から10進数に変換できる
  • 16進数・2進数・8進数からの変換がよく使われる
  • 大文字・小文字を区別しないので、"FF" でも "ff" でも同じ結果
  • 戻り値は数値型。そのまま計算に使える(BASE関数の文字列型とは逆)
  • BASE関数は逆関数の関係。DECIMALで戻した値をBASEに渡すと元のN進数に戻る
  • Excelとの互換性も完全で、ファイルのやり取りでも安心
  • 同じ数学系の関数としてGCD関数(最大公約数)LCM関数(最小公倍数)もあわせて覚えておくと便利

まずは =DECIMAL("FF", 16) で「FFを10進数に → 255」から試してみてください。

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