2進数を10進数に変換するBIN2DEC()関数の上限

関数:BIN2DEC、IF、LEN、MID
・関数BIN2DEC
・書式=BIN2DEC(2進数)
・内容BIN2DEC 関数を使用して2進数を10進数に変換します。
使用例
=BIN2DEC(11111)
=31

=BIN2DEC(10101)
=21

2進数を10進数に変換するBIN2DEC()関数は上限がります
=BIN2DEC(111111111)(←1が9個
=511

たった??

はい。

111111111+1=1000000000(←10桁になってしまう

10進数の「511」が限界です
なぜ9桁なのか?
どうせならエクセルで表示できる15桁まで対応してほしい

そうだ!足りない分は作ろう

セルH2)に「111111111111111」2進数を入れます



111111111111111と入力すると1.11111E+14となります
111111111111111と表示させるには
セルの書式設定を数式にしておく必要があります

まずは文字数を取得
=LEN(H2)

9文字以下をBIN2DEC関数を使う
=IF(LEN(H2)<10,BIN2DEC(H2),BIN2DEC(MID(H2,LEN(H2)-8,9)))
=MID(H2,LEN(H2)-8,9)

10文字目が1の場合512を足す
=IF(LEN(H2)>9,IF(MID(H2,LEN(H2)-9,1)="1","512","0"),"0")

11文字目が1の場合1024を足す
=IF(LEN(H2)>10,IF(MID(H2,LEN(H2)-10,1)="1","1024","0"),"0")

12文字目が1の場合2048を足す
=IF(LEN(H2)>11,IF(MID(H2,LEN(H2)-11,1)="1","2048","0"),"0")

13文字目が1の場合4096を足す
=IF(LEN(H2)>12,IF(MID(H2,LEN(H2)-12,1)="1","4096","0"),"0")

14文字目が1の場合8192を足す
=IF(LEN(H2)>13,IF(MID(H2,LEN(H2)-13,1)="1","8192","0"),"0")

15文字目が1の場合16384を足す
=IF(LEN(H2)>14,IF(MID(H2,LEN(H2)-14,1)="1","16384","0"),"0")

15文字以上はエクセルでは丸められてしまうので無駄

上記の式を全部足します

390文字あります(なげぇよ)

2進数15桁まで計算可能です

2 進数 111111111111111(←1が15個
10進数 32767 まで対応

気が向いたら
10進数→2進数(DEC2BIN関数)もチャレンジしてみたいと思います
追記:チャレンジしてみました→DEC2BIN()関数の上限

以上 2進数を10進数に変換するBIN2DEC()関数の上限でした


ISERRORとIFERRORTOP
(C) 2001-2018 Digital World