「10進数を2進数や16進数に変換したいけど、手計算はちょっと面倒…」
Excelには、そんな基数変換を一発で行えるBASE関数があります。2進数・8進数・16進数はもちろん、最大36進数まで自由に変換できる便利な関数です。
この記事では、BASE関数の基本的な使い方からエラー対処法、似た関数との違いまでまとめて解説します。
BASE関数とは
BASE関数は、10進数の数値を指定した基数(2進数、8進数、16進数など)のテキストに変換する関数です。
読み方は「ベース」です。「基数」「基底」を意味する英語の “base” が由来です。
BASE関数はExcel 2013以降およびMicrosoft 365で使用できます。
基数とは?
基数とは「何進法で数を表すか」の基準になる数のことです。普段使っている10進法は基数が10、コンピュータでおなじみの2進法は基数が2です。
BASE関数の入出力イメージ
| 入力(10進数) | 基数 | 出力 |
|---|---|---|
| 10 | 2 | 1010 |
| 255 | 16 | FF |
| 100 | 8 | 144 |
ポイントは、BASE関数の戻り値は文字列であることです。数値ではないため、そのまま計算には使えません。
BASE関数の書き方(構文と引数)
基本構文
=BASE(数値, 基数, [最小長])
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 数値 | 必須 | 変換したい10進数の整数(0以上、2^53未満) |
| 基数 | 必須 | 変換先の基数(2以上36以下の整数) |
| 最小長 | 省略可 | 結果の最小桁数(0以上255以下)。桁数が足りない場合、先頭を0で埋める |
BASE関数の基本的な使い方
BASE関数で最もよく使うのは、2進数・8進数・16進数への変換です。それぞれの使い方を見ていきましょう。
10進数を2進数に変換する
=BASE(10, 2)
結果: 1010
10進数の「10」を2進数に変換すると「1010」になります。
10進数を16進数に変換する
=BASE(255, 16)
結果: FF
10進数の「255」を16進数に変換すると「FF」になります。カラーコードでよく見かける値ですね。
10進数を8進数に変換する
=BASE(100, 8)
結果: 144
10進数の「100」を8進数に変換すると「144」になります。
最小長を指定して桁数を揃える
第3引数の「最小長」を使うと、結果の桁数を揃えることができます。
=BASE(10, 2, 8)
結果: 00001010
2進数に変換した結果が8桁未満の場合、先頭を0で埋めて8桁に揃えてくれます。データを一覧で並べるときに桁数がバラバラだと見づらいので、この機能は便利です。
BASE関数の実践的な使い方・応用例
カラーコード(RGB値)を16進数に変換する
Webデザインやレポート作成で、RGB値を16進数カラーコードに変換したい場面があります。
="#" & BASE(A2, 16, 2) & BASE(B2, 16, 2) & BASE(C2, 16, 2)
A2に「255」、B2に「128」、C2に「0」が入っている場合、結果は #FF8000 になります。最小長を2に指定することで、必ず2桁の16進数になるのがポイントです。
IPアドレスの各オクテットを2進数で表示する
ネットワーク管理で、IPアドレスを2進数に変換したい場面があります。IPアドレスの各オクテット(0〜255の数値)を8桁の2進数に変換してみましょう。
たとえばIPアドレス「192.168.1.1」の場合、セルA2〜D2に各オクテットが入っているとします。
=BASE(A2, 2, 8) & "." & BASE(B2, 2, 8) & "." & BASE(C2, 2, 8) & "." & BASE(D2, 2, 8)
結果: 11000000.10101000.00000001.00000001
最小長を8に指定することで、各オクテットが必ず8桁になります。サブネットマスクの計算やネットワークアドレスの確認に便利です。
DECIMAL関数でBASE関数の結果を元に戻す
BASE関数で変換した値を10進数に戻したいときは、DECIMAL関数を使います。BASE関数とDECIMAL関数はちょうど逆の関係です。
=BASE(255, 16)
結果: FF
=DECIMAL("FF", 16)
結果: 255
BASE関数で変換した結果をそのまま渡せるので、セル参照で組み合わせるのも簡単です。
=DECIMAL(BASE(A2, 16), 16)
この数式はA2の値を16進数に変換した後、10進数に戻します。結果は元の値と同じになります。変換結果の検算に使えるテクニックです。
36進数で短縮コードを生成する
BASE関数は最大36進数まで対応しています。36進数では0-9とA-Zの36文字を使うため、大きな数値を短い文字列で表現できます。
=BASE(1000000, 36)
結果: LFLS
100万という大きな数値が、たった4文字で表現できます。管理番号やIDの短縮に活用できるテクニックです。
BASE関数とDEC2BIN・DEC2HEXとの違い
Excelには基数変換ができる関数が他にもあります。BASE関数との違いを整理しましょう。
| 項目 | BASE関数 | DEC2BIN / DEC2OCT / DEC2HEX |
|---|---|---|
| 対応する基数 | 2〜36(自由に指定) | 2 / 8 / 16(固定) |
| 入力値の範囲 | 0〜2^53未満 | -512〜511(DEC2BIN) |
| 負の数の対応 | 非対応(0以上のみ) | 対応(2の補数表現) |
| 戻り値 | 文字列 | 文字列 |
使い分けのポイント: 2進数・8進数・16進数への変換で、負の数も扱いたい場合はDEC2BIN系を使いましょう。任意の基数に変換したい場合や、大きな数値を扱う場合はBASE関数が適しています。
逆方向の変換(2進数や16進数を10進数に戻す)には、DECIMAL関数やBIN2DEC関数、HEX2DEC関数を使います。特にDECIMAL関数はBASE関数と同じく任意の基数に対応しているため、BASE関数の逆変換に最適です。
よくあるエラーと対処法
BASE関数で表示されるエラーと、その原因・対処法をまとめました。
| エラー | 原因 | 対処法 |
|---|---|---|
| #NUM! | 数値が0未満、または2^53以上 | 0以上2^53未満の整数を指定する |
| #NUM! | 基数が2未満、または36超 | 2以上36以下の整数を指定する |
| #NUM! | 最小長が0未満、または255超 | 0以上255以下の整数を指定する |
| #VALUE! | 引数に文字列を指定した | 数値を指定する。セル参照の場合は参照先を確認する |
| #NAME? | 関数名のスペルミス | 「BASE」の綴りを確認する |
小数を渡した場合は?
BASE関数に小数(例: 10.7)を渡した場合、小数部分は切り捨てられて整数部のみが変換されます。
=BASE(10.7, 2)の結果は=BASE(10, 2)と同じ「1010」です。エラーにはなりませんが、意図しない切り捨てに注意してください。
エラーが出たときは
まずは引数の値が範囲内に収まっているかを確認してみてください。BASE関数のエラーは、ほとんどが引数の範囲外指定が原因です。
まとめ
BASE関数は、10進数を任意の基数のテキストに変換する関数です。
- 構文:
=BASE(数値, 基数, [最小長]) - 基数: 2〜36まで自由に指定できる
- 最小長: 桁数を揃えたいときに便利(先頭を0で埋める)
- DEC2BIN系との違い: BASE関数は任意の基数に対応するが、負の数は扱えない
- 逆変換: DECIMAL関数でBASE関数の結果を10進数に戻せる
カラーコードの生成やIPアドレスの2進数変換など、覚えておくと意外と使いどころのある関数です。
基数変換に関連する関数も合わせてチェックしてみてください。
