うちのカレーにはこれが入ってる!って食材ありますか?

あるセルに2進数が入力されているのですが
(1Byte文字で表現された2進数ではなく、01の2進数そのもの)
それらを数値として処理するにはどのようにすればいいでしょうか?

ワークシート関数でもVBAでも構わないので、方法ありましたら教えてください。

A 回答 (7件)

質問の意味が分からなかったのですがお礼欄を見て大体分かってきました。


> A1セルには「 #Eg沖ヘ・」と入っています。
> つまり文字コードで表現されたものではありません。
いいえ。それは文字コードで表現された文字です。
Excelにはあなたが思うようなバイナリデータを扱う仕組みはありません。セルの中に入るのは数値か文字だけです。
「 #Eg沖ヘ・」と見えるのなら、そのような文字が入っているだけです。
そのExcelデータが作られる際に既に化けているのでしょうから、そこから元のバイナリデータを100%再現することはできません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます、なるほどセルに入ってしまったら無理ということですね……

お礼日時:2017/10/28 09:09

そもそも、どうやってそのセルにバイナリデータを格納したのでしょうか。


例えば、A1のセルに値を設定するとき
cells(1,"A").value = XXX
とすれば、A1に値が格納できます。
これを取り出す場合、
XXX = cells(1,"A").value
とすれば、変数XXXに値を格納することができます。
問題はXXXの型がどのような型なのかということです。(Byte,Integer,Long等)
設定した時の型と同じ型を宣言し、
XXX = cells(1,"A").value
とすれば、XXXに取り出すことは可能です。
但し、No5の方がいわれているように、一旦セルに入れて、それを取り出すときに、何かが欠落する可能性もあります。

バイナリーデータを受け渡ししたいということなら、excelのセルに格納するのではなく、ファイルに格納し、それを受け取る方が間違いないと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます、ファイルの入力時に処理する方法を探してみます

お礼日時:2017/10/28 09:08

>A1セルには「 #Eg沖ヘ・」と入っています。



デコードの話だとは思いますが、文字を数値に直せば、

350690103015010814125525148
それを、
上位桁と下位桁を入れ替えれば、こうなります。
|0035|0069|00103|108150|255141|48251
|023|045|067|6C96|FF8D|30FB

とはなりますが、純粋にバイナリならともかく、一旦、セルに出してしまった場合は、何か落ちてしまっているかもしれません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます、なるほど一旦セルに入るとダメなようですね……

お礼日時:2017/10/28 09:06

> A1セルには「#Eg沖ヘ・」と入っています。


> これを「0001001001101000101……」といった値として処理するには……

S-JISのコードって事でいいんでしょうか?
MID関数で1文字ずつ取り出し。
CODE関数で対応する文字コードを取得。
DEC2BIN関数で2進数に変換。
RIGHT関数を使って桁数を揃える。
とか。

都合上、A2に「#Eg沖ヘ・」という文字が入っているとして、
B1から右向きに、1, 2, 3, …と数値を入力。
B2に=MID($A2, B1, 1)と入力、右向きにコピペ。
B3に=CODE(B2)と入力、右向きにコピペ。
B4には、
=IF(B3<256,RIGHT("0000000"&DEC2BIN(B3),8),RIGHT("0000000"&DEC2BIN(INT(B3/256)),8)&RIGHT("0000000"&DEC2BIN(MOD(B3,256)),8))
と入力、右向きにコピペ。
とか。

最後に文字列連結したり。
「Excelでバイナリデータを処理するには」の回答画像4
    • good
    • 0
この回答へのお礼

伝わらずすみません、そもそも「#Eg…」は文字コードではありません。
バイナリデータそのもので、1bitごとに01が格納されているデータになります。
これを文字コードで表現された「01……」で表現したいという質問になります。

お礼日時:2017/10/24 11:27

セルに2進数が入力されているのですよね?


「0110」とかそいう形で入力されているのではなく??
実際どういう状態で入っているのかスクリーンショットなどで見せていただけますか?
    • good
    • 0

A1セルに、


1011011
って数値が入ってるとして、
(数値なので、B1に=A1+5って入力すると、1011016になります。)

数値として処理ってのは、91って数値として扱いたいって事ですか?
であれば、C1セルに=BIN2DEC(A1)って入力すると、91になります。

それに5加算して2進数に戻すとかなら、D1に=DEC2BIN(C1+5)と入力すると、
1100000になります。


そういう話でないなら、具体的にどのセルにどういう数値が入っていて、何をどうしたいのか?具体的に補足するのが良いです。
    • good
    • 0
この回答へのお礼

「数値」という言葉が曖昧でしたね…すみません
A1セルには「 #Eg沖ヘ・」と入っています。
つまり文字コードで表現されたものではありません。
これを「0001001001101000101……」といった値として処理するには……という質問になります。

お礼日時:2017/10/24 09:52

数値として処理って、どういう処理をしたいの?


計算ならBIN2DEC、DEC2BINあたりの関数を使えばいいと思いますが。
    • good
    • 0
この回答へのお礼

BIN2DECなどの関数は「文字コードで表現された2進数」しか対応していないようです。
バイナリデータを数値にして処理したいという質問になります。

お礼日時:2017/10/24 09:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報