• 締切済み

VBAで4桁の16進数から16桁の2進数変換

VBAで4桁の16進数(FFFFとか)を2進数(1111 1111 1111 1111とか)に変換して変換した2進数を1桁づつセルに表示させるには、どうしたらいいでしょうか?ワークシート上だと8桁までしか対応してないようで、左右8桁づつわけてHEX2BINを使ってとりあえず変換する事は、できましたがVBAでマクロを組んで行いたいです。例えばA1に16進数を入れA2~P2に2進数を1桁づつ表示させたいです。よろしくお願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

現データ(16進数)がどういう形で入力されているか質問に書いてないのは、質問者と回答者と同一視の錯覚だ。そんなに多い場合に関する質問ではないし実例を示すべき。 無駄になるかも知れないが勝手に考えた。 例データ 下記のA列 A列  B-Q列は結果 FFFF 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3FBC 0 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 23AF 0 0 1 0 0 0 1 1 1 0 1 0 1 1 1 1 コード このタイプの問題は千差万別のやり方があると思うので、個人色が出てしまって、1例を挙げるのは気が進まないが。 特色は、テーブル方式変換といえようか。 Sub test01() Range("b1:Q100").NumberFormatLocal = "@" d = Range("A65536").End(xlUp).Row For k = 1 To d x = Cells(k, "A") j = 2 'B列 s = "0123456789ABCDEF" t = "0000000100100011010001010110011110001001101010111100110111101111" ss = "" For i = 1 To Len(x) p = InStr(s, Mid(x, i, 1)) Cells(k, j) = Mid(t, (p - 1) * 4 + 1, 1): j = j + 1 Cells(k, j) = Mid(t, (p - 1) * 4 + 2, 1): j = j + 1 Cells(k, j) = Mid(t, (p - 1) * 4 + 3, 1): j = j + 1 Cells(k, j) = Mid(t, (p - 1) * 4 + 4, 1): j = j + 1 Next i Next k End Sub

trionfator
質問者

お礼

ありがとうございました。 勉強になりました。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

Private Sub CommandButton1_Click()   Dim i As Integer   For i = 0 To 15   Cells(2, 17 - i).Value = Str((Val("&h" & Range("A1").Value) And (2 ^ i)) / (2 ^ i))   Next End Sub

noname#78947
noname#78947
回答No.1

VBAには10進数⇒8進数と10進数⇒16進数の変換を行なう関数はありますけど16進数⇒2進数などの変換関数は無いみたいですね。VBAで変換を行いたい場合は自分でルーチンを組むしか無いみたいです。 >http://fukkey.dyndns.org/pins/vb/011004/31105.html 上記のページに2~36の範囲内でN進数⇔M進数の変換ルーチンが載っています。これを利用して後は1桁ずつセルに表示する部分を作れば良いです。

trionfator
質問者

お礼

ありがとうございます。 参考にさせていただきます。

関連するQ&A