• 締切済み

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/17068)
回答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

  • EXCEL VBA 16進から2進に変換

    EXCEL VBAにて16進数から2進数に変換したいと思い、 下記を実行したところ使用したところ、A1セルに入っている値が "AA"といったように2桁なら上手くいくんですが "AAA"というようにそれ以上の桁数になると、Hex2Binのプロパティが 取得できませんというエラーが出てしまいます。 Dim bin_1 As String bin_1 = Application.WorksheetFunction.Hex2Bin(Cells(1、1)) 使い方が間違ってますでしょうか?

  • VBAで進数変換

    マクロ内で、 16進数から2進数、2進数から10進数といったように 変換したいんですけど、うまいほうほうないですか? シート上ならHex2decとか使えるんですけど、 10桁までしかできないし、できればマクロ内でやりたいんです。 でも、Macro中には10進数から16進数とかはあるんですけど、逆が見当たらないんです。 ちなみにWorksheetFunctionにもありません。 助けてください。

  • Excelで16桁の16進数を10進数に変換

    Excelを使って、16桁の16進数を10進数に変換したいと考えております。 HEX2DECでは、桁数が多すぎてエラーとなってしまいました。 関数の組み合わせでも、VBAで組むのでもどちらでも構いません。 こうすればできる、というようなアイデアだけでも、いただけるとうれしいです。 宜しくお願いいたします。

  • 文字列を大文字の2桁ごとのコンマ付き16進数に変換する方法

    文字列を大文字の2桁ごとのコンマ付き16進数に変換する方法がわかりません。ただ単に文字列を16進数に変更するだけならbin2hex()でできますけど、誰か知っている方はいませんか?具体的には、変換された文字列が1a2b3c4d5e6fなら、1A.2B.3C.4D.5E.6Fと変換したいんです。どうすればいいですか?

    • ベストアンサー
    • PHP
  • Excelで16進数の計算

    セルA1にFFFF、セルA2にもFFFFが格納されているとします。 A1とA2の和をA3に16進数表記で格納することは可能でしょうか? 一度10進数に直さなければならないのかと思い、分析ツールのアドインを有効にし、A1の数式を【=HEX2DEC(FFFF)】と入力してみたのですがセルには#NAME?と表示されてしまいます。 エクセルの経験があまりないので、自分なりに調べてやってみましたがこの有様です。解決策をご存知の方がおられましたら、ご伝授をよろしくお願いします。

  • HEX2BIN関数の使い方。

    HEX2BINを使用して16進数4桁を2進数に変換しようとしたところ=HEX2BIN(B2) (B2セルは6F67)としたところ#NUMエラーが出てしまいます。 B2を”B2”にすれば変換ができたのですが今度はオートフィルが使えなくなってしまいます。 なので、=HEX2BIN(B2)で変換できる方法か””をつかってもオートフィルで=HEX2BIN("C2")などにする方法を教えて下さい Excelは2007です。

  • エクセルで16進数を2進数に変換した際に頭の0を表示させる方法は?

    エクセルの関数についての質問です。 1つのセルに16進数で2e14という値があった場合に、これを一旦2進数に変換すると、計算機上では10 1110 0001 0100となります。 普通にこれがエクセル関数でできればいいのですが、桁数が問題なのか変換できませんでした。 そこで、2つのセルに2eと14に分けてから2進数表記して連接しようとしたのですが、そこで問題が起きました。 14の頭に0が3つついていますが、これが表示されませんでした。これを表示させないと当然連接した結果の値が全く違うものになってしまいます。 エクセル関数のHEX2BINを使った際に、変換後に頭の0が表示されるようなことは出来ないでしょうか。 エクセルなどに関してまだ素人当然なので教えて下さい。 よろしくお願いします。

  • EXCELでの16進数取り出し、上位桁と下位桁取り

    恐れ入ります。詳しい方教えてください。 各セルに2000までの数値があるデータがあり、このデータを16進数表記で、上位2桁と下位2桁に分けたいと考えています。 例) 870  → &h03, &h66 (870は10進数で366が16進数、これを&hを付けて03と66に分けたい) 1926 → &h07, &h86  ="0x"&DEC2HEX(C4, 4)を使って16進数4桁にすることまでは調べたのですが、上位2桁、下位2桁に分けられず悩んでいます。

  • excel vba 一番効率の良い方法を教えてください。

    こんにちは。よろしければ教えてください。 VBAで、テキストデータから読み込んだ日付「20080825」を、 エクセルシートに貼り付ける際(又は貼り付けた後)に、 「2008/08/25」と表示すると同時に「日付」として認識できる形 にしたいのです。(つまりシリアル値に変換したいということに なるのかな?) ○読み込むデータは8ケタの数値です。 ○当然ながら、セル1つにつき1つの日付です。 ○データが多いので、一つ一つ変換すると時間がかかります。   (しかしこの方法しか思いつきません;) ○VBAでもワークシート関数でも…方法は問いません。 一番適している方法を教えてください。 よろしくお願い致します。

  • 10進数を2進数に変換したい。

    業務上であるログの値を解析しています。 ※ログはcsv形式で、Excelに落として編集加工しています。 その中で、10進数を2進数に変換する必要がありますが、変換方法がよくわかりません。 ExcelでDEC2BINという関数があるところまでは突き止めたのですが、 この関数は、与件(10進数)が512を超えるとエラーとなってしまいます。 (解析対象は10進数で10桁です・・。) 2進数に変換する関数、方法などはあるのでしょうか? 大量にログがあるので、一括して加工したいのですが・・。 (VBAの使いかたがわからないので、何とか関数か何かで対処したいのですが・・・。Excelは2002を使ってます)

専門家に質問してみよう