広告

BASE関数の使い方|10 進数を別の底のテキスト表現に変換する

2021年4月14日

=BASE(値,底,[最小文字数])

base_sample

BASE(ベース)関数は、10進数を別の底のテキスト表現に変換する関数です

参考:BASE関数ドキュメントエディタヘルプ

BASE関数の使い方. 構文

BASE関数の構文は以下のとおりです。

=BASE(値,底,[最小文字数])

BASE関数の構文内訳

引数 説明 注釈
別の底に変換する数値を指定します。 かならず指定。ゼロ以上の整数を指定してください。(0~253の範囲内で指定)
数値の変換後の底(基数)を指定します。 かならず指定。2~36の整数を指定してください。
最小文字数 返されるテキストの最小文字数を指定します。 [省略可] - 最小文字数の値が結果の有効桁数より大きい場合、合計桁数が有効桁の値に達するまで結果の左側にゼロ(0)が埋め込まれます。

BASE関数を使うときの注意点

注意1. 値・底の最大値を逸脱するとエラーになる

値・底の最大値を逸脱する場合、BASE関数は#NUM!エラーを返します。

以下にサンプルを記載します。

10進数 Sample式 結果
1 =BASE(A2,500) #NUM!

base_error1

OYAKUN
OYAKUN
底の最大値は36ですが、500を指定した結果#NUM!を返したことが分かります。

注意2. 値が数値以外だとエラーになる

BASE関数では、値が数値以外である場合、#VALUE! が返されます

以下にサンプルを記載します。

10進数 Sample式 結果
=BASE(A2,2) #VALUE!

base_error2

OYAKUN
OYAKUN
10進数の値を漢数字の一とした場合、底の値が適正でもエラー#VALUE!が返されました。

注意3. 整数以外を引数にすると小数点以下が切捨てに

BASE関数では整数以外の任意の数値を引数にすると、小数点以下が切捨てられます。

数値 数式 結果
20 5.5 =BASE(A2, B2) 40

base_error3

OYAKUN
OYAKUN
底の値が5.5となっていても、5として小数点以下を切捨てられていることが分かりますね

BASE関数の使い方. Excelとスプシの違い

BASE関数は、ExcelとGoogleスプレッドシートで使い方に相違はありません。

ただし、最小文字数の引数の最大値は、

  • Excelは255まで
  • Googleは記載なし

となっています。

OYAKUN
OYAKUN
試していないのですが、もしかしたらGoogleスプレッドシートでは最大値の制限がないのかもです。ただ、最小文字数に255以上も必要なのか謎ですが...

BASE関数の実行サンプル

BASE関数を実行するサンプル。

10進数 2進数 16進数 32進数
1
2
3
4
5
10
50
100

各進数をBASE関数で算出した結果。

10進数 2進数 16進数 32進数
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
10 1010 A A
50 110010 32 1I
100 1100100 64 34

GIFで↓

base_sample

BASE関数の実行サンプル結果

画像でBASE実行サンプル結果を確認↓

BASE_SAMPLE_kekka

BASE関数 × GASのサンプル

BASE関数をGASで利用する際の、かんたんなサンプルを作成してみました。

実装する表のサンプル。

数値 数値は(A2の値)、進数は(B2の値)の算出結果↓

実装するGAS

function BASE() {
var ss,sht,lastrw,val01,val02
ss = SpreadsheetApp.getActiveSpreadsheet();
sht = ss.getActiveSheet();
lastrw = sht.getLastRow();
Logger.log(lastrw);
val01 = Browser.inputBox('進数に変換したい数値を入力',Browser.Buttons.OK_CANCEL);
val02 = Browser.inputBox('2~36 の整数を指定',Browser.Buttons.OK_CANCEL);
if(val01 == "cancel"|| val02 == "cancel"){
Browser.msgBox("処理を中止しました");
return;
} else {
sht.getRange("A2").setValue(val01);
sht.getRange("B2").setValue(val02);
sht.getRange("C1").setValue("数値は"+val01+"、進数は"+val02+"の算出結果↓");
}
// BASE関数をC2セルにセット
sht.getRange("C2").setFormula('=BASE('+val01+','+val02+')');
}

実行結果をGIFで

BASE×GAS

OYAKUN
OYAKUN
inputBoxに変換対象の数値と2~36の整数を入力することで、任意の進数へ置換することができます。(入力しなければキャンセルに)

BASE関数の使い方 まとめ

  • 値には0以上の整数を指定する
  • 底(基数)には2~36の整数を指定する
  • 小数や漢数字は使わない

といった感じですね。

BASE関数を使うことで、n進数の値を算出することがとても容易になります。

OYAKUN
OYAKUN
進数の表現はあまり聞き慣れないかもですが、業務次第ではかなり重宝する関数ではないでしょうか。

前の記事:AVERAGEIFS関数の使い方|複数条件の範囲の平均値を求める
関連記事:AVERAGEIF関数の使い方|基準に応じた範囲の平均値を返す
関数:AVEDEV関数の使い方|平均値からデータ偏差の平均を求める
関数:ASC関数の使い方|全角または半角文字に変換する