Excel VBA:10進数を2進数に変換する|コードと実行結果を掲載

2進数はExcel VBAでI/O制御を行う時などによく使います。




Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ

2進数とは0と1で表す数字で、10進数とは普段使用している0から9で表す数字のことです。

例えば10進数「1」は2進数で「1」、10進数「2」は2進数で「10」、10進数「3」は2進数で「11」になります。

10進数を2進数に変換するには、通常下の2種類が使われます。

  • 10進数を繰り返し2で割り余りから求める方法
  • 2のべき乗から桁数を取得し、10進数より小さい最大の2のべき乗の値を求める。

ここでは処理が速い下のべき乗を使う方法で行います。

逆の「2進数を10進数に変換」も掲載しています参照してください。



Excel VBAで10進数を2進数に変換するコードの解説

■ コマンドボタン1のクリックイベント

  • 引数を170で、ExDeciToBinプロシージャを呼び出し、結果をB7セルに表示します。

■Ex2noBekiプロシージャ

  • Doループで引数より大きな2のべき乗の値を探します。 見つかったべき乗の値の、1つ小さな値を返します。これが2進数の桁数になります。

■ExDeciToBinプロシージャ

1以上の整数のみ有効です。

  1. Ex2noBekiプロシージャを呼び出し2進数の桁数を取得します。
  2. 10進数から最大の2のべき乗の値をマイナスします。
  3. 桁数分Forでループします。
  4. マイナスした値が最大の2のべき乗の値より小さければ2進数に「0」をセットします。
    大きければ「1」をセットします。
  5. 最大の2のべき乗の値をマイナスし繰り返します。
  6. セットした2進数を返します。

Excel VBA 10進数を2進数に変換するコード

Option Explicit

'最大の2のべき乗の値を探す
Private Function Ex2noBeki(deci As Long) As Integer
    Dim i As Integer
    
    i = 0
    Do
        'deciより大きい
        If deci < 2 ^ i Then
            'その一つ前のべき乗
            Ex2noBeki = i - 1
            Exit Function
        End If
        i = i + 1
    Loop
End Function

'Excel VBAで10進数を2進数に変換
Public Function ExDeciToBin(deci As Long) As String
    Dim ln As Long
    Dim stemp As String
    Dim i As Integer
    Dim count As Integer
    
    stemp = "1"
    'deciより小さい、最大の2のべき乗の値を探す
    count = Ex2noBeki(deci)
    ln = deci - 2 ^ count
    '筆算と同じように繰り返す
    For i = count - 1 To 0 Step -1
         If ln < 2 ^ i Then
            stemp = stemp & "0"
         Else
            stemp = stemp & "1"
            ln = ln - (2 ^ i)
         End If
    Next i
    ExDeciToBin = stemp
End Function

Private Sub CommandButton1_Click()
    Range("B7") = ExDeciToBin(170)
End Sub


実行結果のExcelシート

10進数「170」の2進数「10101010」 が表示されています。
実行結果のExcelシート

Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved