- ベストアンサー
VBAでビット情報にてデータ抽出
- VBAを使用して、ビット情報を抽出する方法について教えてください。
- フラグコントロールをVBAで実装する方法について、初心者向けに説明してください。
- ORACLEのデータベースから特定の条件でデータを抽出するVBAコードの例を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
何度か読み直してみました。 >1番目の機械だったら、8ビット目が"1"を抽出。2番目の機械だったら7ビット目が"1"を抽出という風にすればよいかと思っています。 ビット演算というのは、単に、AND OR での計算のことですね。フラグコントロールではなく、ビットコントロールというなら、8bitは、1byteですから、Byte型にすればよいのですが、その組み合わせは、255までです。文字型(1byte)としては、&H01~&HFFで、その組み合わせで、chr 関数で出力すればよいわけです。24bitなら、1byteの文字型3つということだけのことですから、難しくbit出力とか考える必要もないと思います。 しかし、私としては、質問には何か話が食い違っているような気がします。 単に、ビットではなく、24のフラグだけのような気がしてなりません。 もし、そうなら、かなり話が違うような気がします。 >A001 11001011 これだけなら、単にLong型か文字列型で数字を確保すればよいだけです。 この数字を得たいなら、それぞれの桁に代入すれば済みます。どちらかと言うと、文字型のほうがよさそうです。 レスが思ったほどつかないのは、質問の意図するところがはっきりしていないからだと思います。 入り口の話はされていても、出口まで出てくる話(要求しているOracleに出力するデータの内容)はされていないと思うのです。話のままの24bitなら、8bit×3 で、文字3つということになってしまいます。 ビットは、Byteならとかもく、VBAでは聞いたことがありません。 >コードに関しては、基本部分を全記述でお願いしたく。 何をどうするのか、良く分からないところです。 質問が分かりやすければ、だれでも、回答はできると思います。 例えば、リストで変換表が作ってあって、それをVLOOKUP関数で参照するとか。
その他の回答 (1)
- masatsan
- ベストアンサー率15% (179/1159)
誰も答えていないようなので。 多分VBAでできると思いますが、ビット演算をすればよいと思います。 最上位の1を調べたいなら PGM AND 128 最上位に1が立っていなかったら0になる。 できなかったらごめんなさい。
お礼
回答ありがとうございます。ちょっと質問がわかりづらかったみたいで申し訳ありませんでした。
お礼
回答ありがとうございます。わかりづらい質問だったでしょうか?自分では知りたい内容を詳しく説明したつもりだったのですが、大変お手間をとらせたみたいで申し訳ありませんでした。 尚、知りたかった内容に関しては、アドバイスにて解決しました。 「ビットではなく、24のフラグだけのような気がしてなりません」 → 0か1の情報で判断できればと思ったので、ビットという表現にしたことが混乱させてしまったようです。言われる通り、24のフラグで判断です。 「この数字を得たいなら、それぞれの桁に代入すれば済みます。どちらかと言うと、文字型のほうがよさそうです」 → VBAで変数の宣言は特にしていません。 VBA自体が初心者なので、いつもホームページから参考になる案件をひっぱってきて、条件等を変更している次第です。 解決した内容は次の通りです。 1番目の機械であれば、A21セルに1___% 2番目の機械であれば、A21セルに_1__% 3番目の機械であれば、A21セルに__1_% … という情報を入力する様にします。 上記の _ は半角アンダーバーです。 普通は*で表示されるものの内容ですね。 Set rs = OraDatabase.CreateDynaset("select * from MEISAI where ID = 'ABC' AND CODE = 'COMPANY' AND PGM = '" & WG1 & "'", 0&) の内容は、 PGM = '" & WG1 & "' を PGM like '" & WG1 & "' とすることで抽出出来る様になりました。 以上2点が知りたかった内容になります。