2012-09-26 17:14:51 +0000 2012-09-26 17:14:51 +0000
27
27

Microsoft Excel 2007のセルを16進数でフォーマットする方法は?

私はMicrosoft Excel 2007のセルを16進数でフォーマットしたいのですが、これを行う方法が見つかりません。

セルのベースを10から16に変更する組み込みの方法はありますか?

回答 (6)

20
20
20
2017-04-20 01:48:01 +0000

前述したように、式 =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テキストテーブルを作成しました。テーブルをエクセルのスプレッドシートから入力セクションにコピーすると、自動的に素敵なユニコードテキストのレイアウトを作成してくれました。

16
16
16
2012-09-26 17:24:39 +0000

10進数を入力して自動的に16進数として表示されるようにセルをフォーマットしたい場合、それは不可能です。セルをテキストとしてフォーマットして16進数を直接入力するか(ただし、Excelではこれらを計算に使用できないことに注意してください)、DEC2HEX()HEX2DEC()関数を使用して10進数と16進数の間で変換することができます。

7
7
7
2012-09-26 17:20:16 +0000

変換するセルが A1 の場合は =DEC2HEX(A1) を使用します。

4
4
4
2013-12-31 03:16:44 +0000

16 進数に変換された数値に対して数学的な演算を行う必要がある場合は、最初に 10 進数に変換して演算を行い、その後 16 進数に変換します。

例えば、セル A1 に 16 進数がある場合、次のような式から作成されます。

=DEC2HEX(17)

は 11 と表示され、セル A2 には次の式があります。

=DEC2HEX(165)

となり、A5 と表示される場合、これらを足し合わせると、次の式のような結果が得られます。

1
1
1
2018-07-25 14:35:12 +0000
=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進数の列を生成して、それをこの式に対して実行することができます。

0
0
0
2017-01-19 19:55:02 +0000

以下は、これらの16進数をHTML形式にフォーマットできるようにするために見つけた解決策です。

SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))