Microsoft Excel 2007のセルを16進数でフォーマットする方法は?
私はMicrosoft Excel 2007のセルを16進数でフォーマットしたいのですが、これを行う方法が見つかりません。
セルのベースを10から16に変更する組み込みの方法はありますか?
私はMicrosoft Excel 2007のセルを16進数でフォーマットしたいのですが、これを行う方法が見つかりません。
セルのベースを10から16に変更する組み込みの方法はありますか?
前述したように、式 =DEC2HEX(A1) は 16 進数に変換され、DEC2HEX(A1,8) は 32 ビットを表すために 0 を接頭辞として 16 進数に変換されます。先頭の0を追加することで数字が読みやすくなりますが、特に定点フォントを使用している場合には、数字の桁がすべて0~9の場合(例:327701=50015)、16進数版と10進数版が混ざってしまう可能性があります。
改善策は、プレフィックス「0x」を追加することです。これには2つの方法があります。=“0x”&DEC2HEX(A1,8)でうまくいきますが、フィールドをテキストフィールドに変更してしまうため、数式では簡単に使用できなくなります。もう一つの方法は、カスタムフォーマットを使用する方法です。カスタムフォーマット “0x”@をセルに適用しても、そのセルの値は数式で使用することができます。例
╔═══╦════════════════╦════════════╦═════════════════════════════╦═══════════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬════════════════╬════════════╬═════════════════════════════╬═══════════════╣ ║ 1 ║ ║ Value ║ Corresponding Formula ║ Number Format ║ ║ 2 ║ Decimal ║ 11162790 ║ 11162790 ║ General ║ ║ 3 ║ Hex ║ AA54A6 ║ =DEC2HEX(B2) ║ General ║ ║ 4 ║ leading 0's ║ 00AA54A6 ║ =DEC2HEX(B2,8) ║ General ║ ║ 5 ║ Text 0x prefix ║ 0x00AA54A6 ║ =DEC2HEX(B2,8) ║ "0x"@ ║ ║ 6 ║ Text 0x prefix ║ 0x00AA54A6 ║ ="0x" & DEC2HEX(B2,8) ║ General ║ ║ 7 ║ Use B5 ║ AA54A600 ║ =DEC2HEX(HEX2DEC(B5) \* 256) ║ General ║ ║ 8 ║ Use B5 ║ 0xAA54A600 ║ =DEC2HEX(HEX2DEC(B5) \* 256) ║ "0x"@ ║ ║ 9 ║ Try to use B6 ║ #NUM! ║ =DEC2HEX(HEX2DEC(B6) \* 256) ║ General ║ ╚═══╩════════════════╩════════════╩═════════════════════════════╩═══════════════╝
とはいえ、桁数の異なる大きな数字はやはり読みづらいので、10進数にはカンマを、16進数には"_“を入れるのが好きです。まず、数字の上位16ビットと下位16ビットを取得する必要があります。32ビットの数字の上位16ビットは、=INT( A1 / 2^16 )で取得できます。2^16で割ると16ビットの右シフトのようになり、INTは端数の残りを取り除きます。MOD は、32 ビットまたは 64 ビットの任意の数値の下位 16 ビットを取得するために使われます。MODは事実上、残りの部分、つまり下位16ビットを取り戻します。これを表にしてみました。
╔═══╦═════════════╦═══════════════╦════════════════════════════════════╦═════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬═════════════╬═══════════════╬════════════════════════════════════╬═════════╣ ║ 1 ║ ║ Value ║ Corresponding Formula ║ Format ║ ║ 2 ║ Decimal ║ 3,098,743,209 ║ 3098743209 ║ #,##0 ║ ║ 3 ║ Upper Bytes ║ B8B3 ║ =DEC2HEX(INT( B2/2^16 ), 4) ║ General ║ ║ 4 ║ Lower Bytes ║ 11A9 ║ =DEC2HEX(MOD( B2, 2^16 )) ║ General ║ ║ 5 ║ Full Number ║ 0xB8B3\_11A9 ║ ="0x" & DEC2HEX(INT( B2/2^16 ), 4) ║ General ║ ║ ║ ║ ║ & "\_" & DEC2HEX(MOD(B2, 2^16), 4) ║ ║ ╚═══╩═════════════╩═══════════════╩════════════════════════════════════╩═════════╝
ところで、 https://ozh.github.io/ascii-tables/ に感謝しなければなりません。私はこのリンクを使ってASCIIテキストテーブルを作成しました。テーブルをエクセルのスプレッドシートから入力セクションにコピーすると、自動的に素敵なユニコードテキストのレイアウトを作成してくれました。
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)
REPT式は、10進数から変換して生成されたHEX文字列の長さと、希望する長さのHEX文字列に基づいて “0 "を繰り返します。
次に、先頭のゼロを実際のHEX文字列に連結し、希望の長さのHEX値を生成します。
利点。
1.他のワークシートへの数式のコピーが容易。10進数値B3へのセル参照が2つあるだけで、再割り当てが可能。 2. この数式の結果は、ExcelではHEX値として扱われます。0x」を接頭語にすることもできますが、私はその必要性を感じません。
注意: HEX 文字列をコピーしているときに、さまざまな長さにコピーされてしまう場合に使用します。私は最初に元の値から10進数の列を生成して、それをこの式に対して実行することができます。
以下は、これらの16進数をHTML形式にフォーマットできるようにするために見つけた解決策です。
SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))