Microsoft Excel 2007 のセルを 16 進数でフォーマットしたいのですが、その方法がわかりません。
セルの基数を 10 から 16 に変更する組み込みの方法はありますか?
答え1
前述のように、数式 =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 ║ ║ 値 ║ 対応する数式 ║ 数値形式 ║ ║ 2 ║ 10進数 ║ 11162790 ║ 11162790 ║ 一般 ║ ║ 3 ║ 16進数 ║ AA54A6 ║ =DEC2HEX(B2) ║ 一般 ║ ║ 4 ║ 先頭の0 ║ 00AA54A6 ║ =DEC2HEX(B2,8) ║ 一般 ║ ║ 5 ║ テキスト 0x プレフィックス ║ 0x00AA54A6 ║ =DEC2HEX(B2,8) ║ "0x"@ ║ ║ 6 ║ テキスト 0x プレフィックス ║ 0x00AA54A6 ║ ="0x" & DEC2HEX(B2,8) ║ 一般 ║ ║ 7 ║ B5 を使用 ║ AA54A600 ║ =DEC2HEX(HEX2DEC(B5) * 256) ║ 一般 ║ ║ 8 ║ B5 を使用 ║ 0xAA54A600 ║ =DEC2HEX(HEX2DEC(B5) * 256) ║ "0x"@ ║ ║ 9 ║ B6 を使ってみる ║ #NUM! ║ =DEC2HEX(HEX2DEC(B6) * 256) ║ 一般 ║ ╚═══╩═════════════════╩══════════════════╩═════════════════════╩══════════════════╝
しかし、桁が変化する大きな数字はやはり読みにくいので、私は 10 進数にはカンマを入れ、16 進数には「_」を入れるようにしています。まず、数字の上位 16 ビットと下位 16 ビットを取得する必要があります。32 ビットの数字の上位 16 ビットは = INT( A1 / 2^16 ) で取得できます。2^16 で割ると 16 ビットの右シフトのように動作し、INT は小数部の余りを取り除きます。MOD を使用すると、32 ビットまたは 64 ビットの数字の下位 16 ビットを取得できます。=MOD(A1, 2^16)。MOD は、実質的に、下位 16 ビットの余りを返します。これが実際にどのように機能するかを示す表を次に示します。
╔══╦═══════════════╦═══════════════════╦═══════════════════════════╦════════════════════════╦══════════════╗ ║ ║ A ║ B ║ ║ ║ ╠══╬═══════════════╬═════════════════════╬═══════════════════════════╬══════════════════════╬═════════════╣ ║ 1 ║ ║ 値 ║ 対応する数式 ║ 形式 ║ ║ 2 ║ 10進数 ║ 3,098,743,209 ║ 3098743209 ║ #,##0 ║ ║ 3 ║ 上位バイト ║ B8B3 ║ =DEC2HEX(INT( B2/2^16 ), 4) ║ 一般 ║ ║ 4 ║ 下位バイト ║ 11A9 ║ =DEC2HEX(MOD( B2, 2^16 )) ║ 一般 ║ ║ 5 ║ 完全な数字 ║ 0xB8B3_11A9 ║ ="0x" & DEC2HEX(INT( B2/2^16 ), 4) ║ 一般 ║ ║ ║ ║ ║ & "_" & DEC2HEX(MOD(B2, 2^16), 4) ║ ║ ╚═══╩═══════════════╩════════════════════════╩═════════════════════════╩═══════════════╝
ところで、私は出典: github.io. このリンクを使用して、ASCII テキスト テーブルを作成しました。Excel スプレッドシートからテーブルをコピーして入力セクションに貼り付けると、自動的に適切な Unicode テキスト レイアウトが作成されました。
答え2
セルをフォーマットして、小数を入力すると自動的に 16 進数として表示されるようにしたい場合、それは不可能です。セルをテキストとしてフォーマットし、16 進数を直接入力するか (ただし、Excel では計算に使用できないことに注意してください)、関数DEC2HEX()
とHEX2DEC()
関数を使用して 10 進数と 16 進数を変換します。
答え3
変換するセルが の場合 をA1
使用します=DEC2HEX(A1)
。
答え4
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)
REPT 式は、10 進数から変換して生成された 16 進文字列の長さと、HEX 文字列の希望する長さに基づいて、「0」を繰り返します。この例では、長さ 4 の HEX 文字列を生成しようとしています。
次に、先頭のゼロを実際の HEX 文字列に連結して、必要な長さの HEX 値を生成します。
利点:
- 数式を他のワークシートに簡単にコピーできます。再割り当てするセル参照は、小数値 B3 の 2 つだけです。
- この数式の結果は、Excel によって 16 進値として扱われます。先頭に「0x」を付けることもできますが、必要ないと思います。
注: これは、HEX 文字列をコピーしてさまざまな長さでコピーされるときに使用します。まず、元の値から 10 進数値の列を生成し、それに対してこの数式を実行します。