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

スポンサーリンク

「10進数を2進数や16進数に変換したいけど、手計算は面倒…」

データ処理やIT系の業務で、N進数への変換が必要になる場面ってありますよね。

手作業で割り算を繰り返すのは時間がかかるし、ミスも出やすいです。

そんなときに使えるのがBASE関数です。10進数の数値を指定するだけで、2進数・8進数・16進数など好きな基数に一発変換できます。

この記事では基本の書き方からゼロ埋め、DECIMAL関数との使い分けまで紹介します。

BASE関数とは?

BASE関数(読み方: ベース関数)は、10進数の数値を指定した基数(N進数)の文字列に変換する関数です。

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

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

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

  • 10進数を2進数・8進数・16進数に変換する
  • 2〜36進数まで好きな基数を指定できる
  • 桁数を指定してゼロ埋め(先頭に0を付ける)できる
  • DECIMAL関数と組み合わせて検算できる

NOTE

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

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

基本構文

=BASE(値, 基数, [最小桁数])

カッコの中に変換元の10進数と、変換先の基数を指定します。

引数の説明

引数必須/任意説明
必須変換元の10進数(0以上の整数)
基数必須変換先の基数(2〜36の整数)
最小桁数任意結果の最小桁数。足りない分はゼロ埋めされる

値に小数を指定した場合、小数部分は切り捨てられます。基数は2〜36の範囲で指定できます。36進数では0〜9とA〜Zの36文字が使われます。

BASE関数の基本的な使い方

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

もっともシンプルな使い方です。

=BASE(10, 2)

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

=BASE(255, 2)

結果は「11111111」です。255は2進数で8桁になります。

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

カラーコードなどで使われる16進数への変換です。

=BASE(255, 16)

結果は「FF」です。255は16進数でFFですね。

=BASE(4095, 16)

結果は「FFF」です。16進数では10〜15をA〜Fの文字で表します。

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

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

=BASE(8, 8)

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

=BASE(255, 8)

結果は「377」です。

セル参照を使う

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

=BASE(A1, 16)

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

特殊なケース

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

=BASE(0, 2)

結果は「0」です。

小数を指定した場合は、小数点以下が切り捨てられて変換されます。

=BASE(10.9, 2)

この数式は =BASE(10, 2) と同じ結果で「1010」を返します。

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

桁数を指定してゼロ埋めする

3つ目の引数「最小桁数」を使うと、結果を指定した桁数に揃えられます。

=BASE(5, 2, 8)

結果は「00000101」です。5の2進数表現は「101」ですが、8桁に満たない分がゼロ埋めされます。

一覧表でビット列を揃えたいときに便利です。

=BASE(10, 16, 4)

結果は「000A」です。16進数のAを4桁に揃えています。

TIP

ゼロ埋めは見た目を揃えるだけで、値そのものは変わりません。データ一覧をきれいに見せたいときに活用してみてください。

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

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

=BASE(255, 16)

結果は「FF」です。

=DECIMAL("FF", 16)

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

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

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

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

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

色のRGB値(0〜255)を16進数のカラーコードに変換できます。

A1に「255」(赤)、B1に「128」(緑)、C1に「0」(橙)が入っているとします。

=BASE(A1,16,2) & BASE(B1,16,2) & BASE(C1,16,2)

結果は「FF8000」です。各色を2桁の16進数に変換して連結しています。

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

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

逆関数の関係

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

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

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

使い分けの目安

BASE関数を使う場面:

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

DECIMAL関数を使う場面:

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

TIP

BASEは「10進数から出る」変換、DECIMALは「10進数に戻る」変換と覚えるとわかりやすいです。

よくあるエラーと対処法

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

エラー原因対処法
#NUM!値が負の数(例: BASE(-5, 2))0以上の整数を指定する
#NUM!基数が範囲外(2未満または36超)基数は2〜36の整数にする
#NUM!最小桁数が負の数0以上の整数を指定する
#VALUE!引数に文字列が入っているセル参照先が数値かどうか確認する
#ERROR!構文ミス(カッコ忘れ等)数式の入力内容を見直す

負の数を指定したとき

もっとも多いエラーです。BASE関数は0以上の整数でしか使えません。

=BASE(-10, 2)

この数式は#NUM!エラーになります。ABS関数で絶対値に変換すれば回避できます。

=BASE(ABS(A1), 2)

基数が範囲外のとき

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

=BASE(10, 1)

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

戻り値が文字列であることに注意

BASE関数の結果は数値ではなく文字列です。そのため、結果に対して算術演算はできません。

=BASE(10, 2) + 1

この数式は#VALUE!エラーになります。計算が必要な場合は、先にDECIMAL関数で10進数に戻してください。

Excelとの違い

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

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

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

まとめ

BASE関数は、10進数の数値を指定した基数(N進数)の文字列に変換する関数です。

ポイントを整理します。

  • 構文は =BASE(値, 基数, [最小桁数]) で、2〜36進数に変換できる
  • 2進数・8進数・16進数への変換がよく使われる
  • 3つ目の引数で桁数を指定すれば、ゼロ埋めで桁を揃えられる
  • 戻り値は文字列型。算術演算には使えないので注意
  • DECIMAL関数は逆関数の関係。BASEで変換した結果をDECIMALに渡すと元に戻る
  • Excelとの互換性も完全で、ファイルのやり取りでも安心
  • 同じ数学系の関数としてGCD関数(最大公約数)LCM関数(最小公倍数)もあわせて覚えておくと便利

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

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