エクセル2003を使用しています。
A列に小数が入力されていて
B列に4バイトの16進数に変換した結果を出力するマクロを作りたいと考えています。
例えばA1=1.0のとき
B1=0000803F
とリトルエンディアンで表示させたいです。
エクセルでこのような変換は可能でしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (1件)

こんな感じでしょうか。

Cのunionみたいな機能があれば良いのですが、無いので、ファイルに書いて読み直す。
Function ftox(f As Single) As String
Dim i As Long
Dim s As String
Open "C:\temp\xx" For Binary Access Write As 1
Put #1, , f
Close #1
Open "C:\temp\xx" For Binary Access Read As 1
Get #1, , i
Close #1
s = Hex(i)
ftox = Right(s, 2) & Mid(s, 5, 2) & Mid(s, 3, 2) & Left(s, 2)
End Function

別案としては、浮動小数点数値への変換ロジックをそのままVBAで書く。
めんどくさそうです。
    • good
    • 0
この回答へのお礼

詳しい回答ありがとうございます!
さっそくやってみたいと思います

お礼日時:2015/02/09 23:34

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

このQ&Aと関連する良く見られている質問

Q「C = A + (B - A % B)」とすると「C」が必ず「B」の倍数になるのは何故ですか。

※数値はすべて整数だと思ってください。

表題の件ですが、例えば、「A」が入力された文字数、「B」が基準となる文字数とします。
すると「C = A + (B - A % B)」で「C」に代入される数値はかならず「B」の倍数になることが保証されています。

具体的には:
A=15、B=16の場合 => C = 15 + (16 - 15 % 16) なので C は 16
A=17、B=16の場合 => C = 17 + (16 - 17 % 16) なので C は 32
A=3、B=10の場合 => C = 3 + (10 - 3 % 10) なので C は 10
A=10、B=3の場合 => C = 10 + (3 - 10 % 3) なので C は 12

となり、入力された文字数が基準となる文字数に満たない場合は基準まで文字数を補填し、入力が基準以上の場合は基準の倍数まで文字数を補填することになります。

そうなることは分かるのですが、「なぜそうなるのか?」がうまく説明できずモヤモヤしています。

「A」が「B」より小さいときは、まだ分かるのですが(基準に足りない分を足しているだけなので)、「A」が「B」より大きい場合に、「C」が必ず「B」の倍数になることをどう証明したら良いでしょうか。

皆さんのお知恵を拝借できれば幸いです。

よろしくお願いします。

※数値はすべて整数だと思ってください。

表題の件ですが、例えば、「A」が入力された文字数、「B」が基準となる文字数とします。
すると「C = A + (B - A % B)」で「C」に代入される数値はかならず「B」の倍数になることが保証されています。

具体的には:
A=15、B=16の場合 => C = 15 + (16 - 15 % 16) なので C は 16
A=17、B=16の場合 => C = 17 + (16 - 17 % 16) なので C は 32
A=3、B=10の場合 => C = 3 + (10 - 3 % 10) なので C は 10
A=10、B=3の場合 => C = 10 + (3 - 10 % 3) ...続きを読む

Aベストアンサー

失礼しました。
先の回答で、r は不要でした。混乱させてしましました。

一言で言えば、
「ある数を別の数で割って、あまりが出たら、ある数から予めあまりの分を引いたものは、割り切れる」です。(あまり0になるので)

さて、一般に、AをBで割ったときに、商が n あまりが r という関係は、
A = nB + r と書けます。
右辺のうち、nB は B で割ると(割り切れて)n ですし、その後、r が余ります。

質問の式では、あまりが A % B という式で表されていますから、あまりをこれで置き換えると

A = nB + (A % B) になります。
質問の式の右辺
A + (B - A % B)
の順序を入れ替えると

A - (A % B) + B です。
A - A % B は、上述の通り、Bで割り切れて、(商を n とすると)
A - A % B = nB と表現できます。

あとは、+B ですが、一般に、
「ある数で割り切れるふたつの数を足したり引いたりした結果も、その数で割り切れる」と言えます。
だから、A - A % B (ここまで、Bで割り切れる) + B(これも、Bで割り切れる)の結果は、Bで割り切れます。

式で表現すると、

A - A%B + B = nB + B = (n + 1)B なので、Aは、商 n + 1 (ここで、n は、A をBで割った商)で割り切れます。

失礼しました。
先の回答で、r は不要でした。混乱させてしましました。

一言で言えば、
「ある数を別の数で割って、あまりが出たら、ある数から予めあまりの分を引いたものは、割り切れる」です。(あまり0になるので)

さて、一般に、AをBで割ったときに、商が n あまりが r という関係は、
A = nB + r と書けます。
右辺のうち、nB は B で割ると(割り切れて)n ですし、その後、r が余ります。

質問の式では、あまりが A % B という式で表されていますから、あまりをこれで置き換えると

A = nB + (A ...続きを読む

Qエクセルで、A列~F列のデータからH列に抽出する

今、A1~F100に、さまざまな数字が入力されています。この中から、或る特定の数字が在った場合、H列の同じ行に「○」と表示させたいのですが、どのようにすれば出来ますか?
なお、或る特定の数字が無い場合は、「×」を表示させたいです。
また、A列からF列までを一括して範囲として選択し、処理したいのですが、可能ですか?
宜しくお願い致します。

例:A列~F列に5という数字が在った場合にH列に○、無かった場合、H列に×
A B C D E F G H
7 1 5 3 9 3   ○
5 9 4 7 8 10   ○
9 2 11 4 6 8   ×
3 15 7 1 8 4    ×
6 5 1 9 3 18    ○
・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・

Aベストアンサー

思いつきで違うご質問をダラダラと垂れ流すのはやめて下さい。そういう終わらないご質問が多くて,とても迷惑しています。
最初のご質問内容が解決したら,ご相談はキチンと解決で一回閉じてから,改めて「今度はこういう事を解決したい」と次のご相談を投稿するようにしてください。
これはこちらのような質問相談掲示板でのごく一般的なマナーだというだけでなく,そういう思いつき追加質問はついでに聞けばついでに答えてくれるだろう的に,得てして情報提供も状況説明も手抜きになりがちだという問題もあります。



>複数の数字を選択したい場合

思いつきでちょっと聞いてみたので
●1と2と3の「どれか1つでもあったら」○にしたいのか
●1と2と3が「全てあったら」○にしたいのか
といった,ヤリタイ事の基本的な説明が曖昧なままです。


H1で「1か2か3の有無を調べる」
=IF(OR(COUNTIF(A1:F1,{1,2,3})),"○","×")

H1で「1と2と3の全てあったら」を調べる
=IF(AND(COUNTIF(A1:F1,{1,2,3})),"○","×")

QA列 B列 C列 に値が入っていたら「★」、入っていなかったら「-」

ある範囲の列に値が
入っていたら「★」
入っていなかったら「-」を表示させたいです。

1 A列 B列 C列
2 100        →★
3    100 50   →★
4           →-


if関数で =IF(A2,"★","-") とやればできるのですが
できれば、A2~C2 という風に範囲指定したいです。

ご教授よろしくお願いします。

Aベストアンサー

私は、このような時count関数を使います。
=count(a1:c1) とすると、この範囲で数値の入っているセルの数を返してきます。
よって、
=if(count(A1:c1)>0,"★","ー")
とすればいいと思います。

Q再度、エクセルで作成したA画面とB画面を複合した新しい画面(A+B)を

再度、エクセルで作成したA画面とB画面を複合した新しい画面(A+B)を作るには、如何したらよいのでしょうか?説明不足で申し訳ありません。現在1枚の紙に印刷する際、「Aの情報」を印刷し、次に「Bの情報」を印刷しています。これを一度で済ましたいので・・・・・どなたか、PCに詳しい方、是非教えて下さい。宜しくお願いいたします。

Aベストアンサー

カメラ機能

http://www.sophia3.com/school/chie/ex06.htm
http://trendy.nikkeibp.co.jp/article/tec/excel2/20061214/120189/

Qエクセル関数で「=A1」と「=$A$1」$がつくのとつかないのでは何が違うのでしょうか。

エクセル関数で「=A1」と「=$A$1」$がつくのとつかないのでは何が違うのでしょうか。ご存じのかたに教えていただきたいです。よろしくお願いいたします。

Aベストアンサー

「$」は絶対値、という意味です。
式をコピーしてもその値は変化しません。

固定したいセルの上で「F4」を押すと
「$A$1」→「A$1」→「$A1」→「A1」と変化します。

例えば「=$A$1+B1」という式があったとします。
その式をドラッグして行コピーしていくと、
次の行の式は「=$A$1+B2」次は「=$A$1+B3」になりますからA1の数値は絶対値として変化しません。
絶対値が付いていない場合は、「=A2+B2」「=A3+B3」になっていきます。

何か上手く説明出来ない・・・
すみません。


人気Q&Aランキング

おすすめ情報