お世話になります
エクセルの16進と2進の扱いに関して教えてください
DEC2HEX,DEC2BIN,HEX2BIN,BIN2HEX等を使って、
相互に数値を変換し表記する場合
(1) 16進の扱い時、0xを付ける、もしくは認識させる方法
(2) 16進の扱い時、2桁ずつ区切り-を間に入れた表記にする方法
(3) 2進の扱い時、4桁ずつ区切り空白を間に入れた表記にする方法
(4) 2進で扱える値をもっと大きくしたい(現在は255(ff)との2進変換まで)
(とりあえず32Bitまででもできればたすかります)
このような時、セルの書式設定等はどのように設定すればよろしいのでしょうか、
ご存知の方、ご教授お願いいたします。
No.1
- 回答日時:
こんばんは。
前回、同じような質問がありましたが、VBAのユーザー定義関数でお作りなったらいかがでしょうか?もともと、これらは、ひじょうに良く知られた関数です。
検索すれば、VB系でそれなりものはいくつか見つかるかと思いますので、その中で、VB6 が作動するものなら、そのままExcelに入れられると思いますから、後、空白を入れるとかというのは、Mid関数などで行えばよいと思います。
頭から切り分けるなら、2桁ずつなら、
For i = 1 To Len(出力値) Step 2
buf = buf & " " & Mid$(出力値, i, 2)
Next
buf = Mid$(buf, 2)
0x で認識させるとかいうのは、もともと、同じプログラム中で、他と数値と区別するためのものですから、それ自体を認識させるというのは、関数を使う限りは、意味はないと思います。
この回答への補足
やはり自作ですか
類似の事で悩んでいる方が多いようなので、ニーズはあるから、マクロ等を公開されている方がいるのではと思いまして。
また、表現したい表記が多いので、全てを自作するのではなく、できればある程度ベースになる物を見つけて、こちらの用途毎にカスタマイズできればと・・・
No.2
- 回答日時:
私も自作するのが良いと思います。
参考URLなんかが参考になるかも。
0xとか表記については、
1パスそういう変換をする手続きをかませばいいと思います。
参考URL:http://okwave.jp/kotaeru.php3?qid=1036425
No.3
- 回答日時:
こんばんは。
#1のWendy02です。
>類似の事で悩んでいる方が多いようなので、ニーズはあるから、マクロ等を公開されている方がいるのではと思いまして。
あまりにメジャーになりすぎましたね。いずれにしても、インターネット検索してみてください。
もともと、16進や2進を使う人は、ある程度プログラミングの心得がある人なので、コードを出すまでには至らないのです。そういう私も、少し、VBAに慣れた段階で、自作で、Dec2Hex を作っていますが、VBA習いたてでも、掲示板で聞くほどのレベルではありませんでしたね。単に、VBA関数を再利用するだけですから。
Dec2Bin は、再利用は出来ないようですが、これも、ある意味で、VBAではなくて、一般プログラマ(私は、本業ではありませんが)の最低常識で、2進計算は、手書きで商と余りを出す計算を、単に、プログラムに移植するだけですから、そんなに、難しいものばありません。
この回答への補足
Wendy02様、回答アリガトウございます。
検索はしたのですが、見つけたのは全て単純に変換しているだけで、桁数も足らなければ、参照側の制約もあり、今回私が求めている多用途ではなかったんです。
確かに自作もそんなに難しくはないのでしょうが、全てを作るにはちょっとね。
質問にも記載させていただいた条件の有無を含む(参照側は自動認識で、出力側は個別に用意)のマトリックス分のマクロなので、かなりの数になりますよね。
せめて、1/3でもずばりのが見つかれば助かるのですが。
※質問に記載した以外にも表記に関して多数の改良を加える予定なので、そこまで考慮すると本業の合間ではすまなくなりそうです。
もっとも、全てをすぐに必要なわけではないので、ゆっくり時間かけてつくるかな。
No.4
- 回答日時:
usami33様 Wendy02です。
今、もう一度、昔買った情報処理入門の本を読み直している最中です。ちょっと本が古すぎて、32Bit 対応ではありませんが、私は、偉そうなことを言ったわりには、古い知識しかありませんでした。
昨日、「桁が足りない」という言葉で、もう一度、インターネット検索をして、今は、VBも、VB.Netの32Bit対応になっているのに、Excel,VB6 は16Bit で、そういう不都合な面をご指摘なさっているのかなって思い始めています。
本日、やっと、Dec2Bin だけを見直しました。Excelは、ほとんどこなしているつもりでも、そちらの方面は、ふだんやっていないので、理解するまで時間が掛かります。
ふつうは、16進などは、上位桁と下位桁を分けて処理するはずなので、あまり問題にはならないはずなのですが、そういう私も、もう長い間、Excel以外で、こんな勉強をしたことがありません。
>(参照側は自動認識で、出力側は個別に用意)のマトリックス分のマクロなので、かなりの数になりますよね。
つまり、一括対応させることですか?
もし、時間的余裕があれは、私もじっくりと考えていきたいと思っています。
よろしかったら、お返事ください。なお、補足側に書いた旨を、お礼側に、少しでも書いていたたげたら、直接メールされますので、フィードバックしやすいです。
Wendy02様
わざわざ調べていただけるなんて恐縮です。
今、構想として考えているのは、個別に多数用意するものと、参照セルを二つ儲け、一つには元の値、もう一つには変換の形式指定で対応の二種類です。
ま、最初のうちは、個別でコマンドを増やしていって、最終的に統合する方針ですね。
※ なんでこんな面倒なのが必要かと言うと、各ICメーカー毎にData Sheetが異なるフォーマットで記載されているので、自分の作成したものの資料を残したり、同じソフトでもマイコンの相違によるレジスタの設定値の違いなどを、残し後から続く人に広く使用してもらいたいためなんです。
また、作成した資料も、回路屋、ソフト屋と限定せずに活用してもらうには、それらの方々が容易に変更できるものと考えております
※ この先5年10年と資料は追加していくので、今は、そのタイミングに合わせて、必要な物を自作していこうと考えております。
No.5ベストアンサー
- 回答日時:
usami33様
こんばんは。Wendy02です。
#4 のお礼の内容を読ましていただいて、
まず、とっかかりを作らないといけませんね。とりあえず、目がついたところからやってみました。
これは作ったばかりなので、それを見ていただくことにします。
>(3) 2進の扱い時、4桁ずつ区切り空白を間に入れた表記にする方法
10進から2進のコード
一応、暫定的な扱いにしてください。
今後、これらの関数には、小文字のiかt を入れるようにして、オリジナルとは区分けします。また、引数は、10進の数字は、Figure で、それ以外は、Argument にするつもりです。
なお、これを元にしたアドインを作成した場合は、同じ関数名で一般モジュールへの登録の併用はしないようにしてください。
Function DECi2BIN(Figure As Long) As String
Dim Bit As Currency
Dim buf As String
Dim sn As Integer
Const A As String = "1"
Const Z As String = "0"
Dim i As Integer
Dim j As Integer
Dim bufN As String
'
Dim bufO As String '出力用
Dim k As Integer
sn = Sgn(Figure)
Do Until (Abs(Figure) < CDec(2 ^ Bit))
If (Abs(Figure) And 2 ^ Bit) <> 0 Then
buf = A & buf
Else
buf = Z & buf
End If
Bit = Bit + 1
Loop
buf = Format$(CDec(buf), String(16, "0"))
If sn < 0 Then
bufN = Format$(CDec(buf), String(n, "0"))
For i = 1 To Len(bufN)
If Mid$(bufN, i, 1) = A Then
Mid$(bufN, i, 1) = Z
Else
Mid$(bufN, i, 1) = A
End If
Next i
buf = bufN
For j = Len(bufN) To 1 Step -1
If Mid$(bufN, j, 1) = Z Then
Mid$(buf, j, 1) = A
Else
Mid$(buf, j, 1) = Z
End If
If Mid$(bufN, j, 1) = Z Then Exit For
Next
End If
For k = 1 To Len(buf) Step 4
bufO = bufO & " " & Mid$(buf, k, 4)
Next k
DECi2BIN = Mid$(bufO, 2)
End Function
>(4) 2進で扱える値をもっと大きくしたい(現在は255(ff)との2進変換まで)
>(とりあえず32Bitまででもできればたすかります)
2進から16進
BINi2HEX (Excel専用版)
(これは、暫定版ですから、非Excel版を考えなくてはなりません。)
Function BINi2HEX(Argument As String) As String
Dim buf As String
Dim bufO As String
Dim i As Integer
Dim j As Integer
Argument = Replace(Argument, Space(1), "")
If Len(Argument) < 16 Then
Argument = Format$(CDec(Argument), String(16, "0"))
End If
For i = 1 To 16 Step 4
buf = buf & Evaluate("BIN2HEX(" & Mid$(Argument, i, 4) & ")")
Next i
For j = 1 To 4 Step 2
bufO = bufO & "-" & Mid$(buf, j, 2)
Next j
BINi2HEX = "0x" & Mid$(bufO, 2)
End Function
Wendy02様
なんどもなんどもありがとうございました。
ここまでしていただければ、後は自分で拡張してやってみます。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 教育学 エクセルで小数点以下を四捨五入について教えてください。 2 2023/04/05 17:33
- Excel(エクセル) 表計算ソフトcalcにおいて、1時間10分を1.1と表記する方法とそれらを集計する方法は? 4 2022/04/06 16:54
- Excel(エクセル) エクセルに詳しい方 よく読んでからのご回答お願いします 外部からデータが来ますが、日付が202201 7 2022/06/29 16:15
- Excel(エクセル) マクロ、条件付き書式のfont.color 1 2023/03/28 01:10
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- 統計学 t検定について教えてください 2 2023/02/23 16:35
- 一眼レフカメラ COMTEC社ZDR035個人使用 5 2022/05/18 17:55
- Excel(エクセル) エクセルの数式で教えてください。 5 2023/02/10 15:11
- Excel(エクセル) エクセルで文字列と数字が混在する列に書式設定したい。 3 2022/12/19 09:11
- Excel(エクセル) 【エクセル】COUNTIFの検索条件が可変する数字の場合の数式 1 2022/09/27 15:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
5進法を10進法への直し方
-
50以下は“50”も入るのですか?
-
デジタル信号処理の問題です。...
-
8進数から16進数 16進数から8進数
-
「じじょう」が正しい読み方?
-
16進小数0.Cを10進数小数に変換...
-
この問題がわかりません
-
2進数の小数を10進数に変換...
-
平行の記号
-
偏微分の記号をタイプするため...
-
n進数????
-
TEXで図が挿入できない(jpgはで...
-
『2進数→16進数の変換』などの...
-
dBm/HzからdBm/MHzへの単位変換
-
1次変換
-
10進数の数字列を二進数に変換する
-
立法メートルをトンにするには☆
-
ラプラス逆変換
-
進数の小数点をどう変換するのか
-
極座標を用いた重積分
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
50以下は“50”も入るのですか?
-
5進法を10進法への直し方
-
16進小数0.Cを10進数小数に変換...
-
Excel 16進数
-
HEX2BIN関数の使い方。
-
8進数から16進数 16進数から8進数
-
1分45秒75で289,995円稼ぐA君が...
-
「じじょう」が正しい読み方?
-
偏微分の記号をタイプするため...
-
dBm/HzからdBm/MHzへの単位変換
-
n進法→m進法への変換
-
EXCELで10進数表記をB...
-
dBm→dBμV/mの換算について
-
10進数の50を2進数で表すといく...
-
ヤコビアンが0になってしまう場...
-
算数計算 大至急お願いします
-
ACアダプターの消費電力の件
-
幾何と代数は同じ数学でしょうか
-
フーリエ変換・逆変換の虚数成...
-
二進数の循環小数を十進数に変...
おすすめ情報