- 締切済み
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桁づつ表示させたいです。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
現データ(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
- chie65536
- ベストアンサー率41% (2512/6032)
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
VBAには10進数⇒8進数と10進数⇒16進数の変換を行なう関数はありますけど16進数⇒2進数などの変換関数は無いみたいですね。VBAで変換を行いたい場合は自分でルーチンを組むしか無いみたいです。 >http://fukkey.dyndns.org/pins/vb/011004/31105.html 上記のページに2~36の範囲内でN進数⇔M進数の変換ルーチンが載っています。これを利用して後は1桁ずつセルに表示する部分を作れば良いです。
お礼
ありがとうございます。 参考にさせていただきます。
お礼
ありがとうございました。 勉強になりました。