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


27

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

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

回答:


18

前述のように、式= 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║║値║対応する数式║数値形式Format
║2║10進数║11162790║11162790║一般║
║3║六角║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 B B5を使用║0xAA54A600║= DEC2HEX(HEX2DEC(B5)* 256)║ "0x" @║
║9 B B6 use #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)║║
╚===╩=========================================== =====================╩=========╝


ところで、https://ozh.github.io/ascii-tables/に大きな感謝をしなければなりません。このリンクを使用して、ASCIIテキストテーブルを作成しました。Excelスプレッドシートからテーブルを入力セクションにコピーすると、Unicodeテキストレイアウトが自動的に作成されました。


16

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


1
参考のために、DEC2BIN()バイナリに変換するものもあります。固定幅のバイナリの場合、次のようなものを使用します=TEXT(DEC2BIN(A1), "0000")
Tor Klingberg

1
ドイツ語版のローカライズされたExcel 2013では、DEC2HEXおよびHEX2DECによりエラーメッセージ#NAME?が発生します。Officeヘルプを使用すると、関数がDEZINHEXおよびHEXINDEZと呼ばれることがわかりました。
ベルンハルトヒラー

= 0x1234ABを= 0x001234ABに拡張するにはどうすればよいですか(8の固定幅が必要です)。
ダニエル

@Danijel DEC2HEXの2番目のパラメーターを使用します。
ビンセントG

7

変換するセルがA1useの場合=DEC2HEX(A1)


2
16進値の先頭に「0x」を追加することもできます。の="0x"&DEC2HEX(A1,4)ような結果を得るために使用します0x1AF2
-User5910

4

16進数に変換された数値に対して数学演算を実行する必要がある場合は、まずそれらを10進数に変換し、演算を実行してから16進数に戻します。

たとえばA1、次の式から作成されるようなセルに16進数がある場合:

=DEC2HEX(17)

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

=DEC2HEX(165)

として表示されA5、それらを一緒に追加したい場合、この式は望ましい結果を得るでしょう:

=DEC2HEX(HEX2DEC(A1)+HEX2DEC(A2))

次のように表示されます B6


1
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)

REPT数式は、10進数から変換して生成される16進ストリングの長さと、HEXストリングの必要な長さに基づいて「0」を繰り返します。この例では、長さ4のHEX文字列を生成しようとしています。

次に、先行ゼロを実際のHEX文字列に連結して、目的の長さのHEX値を生成します。

利点:

  1. 他のワークシートへの数式の簡単な対処。再割り当てする10進値B3を参照するセルは2つだけです。
  2. この式の結果は、ExcelによってHEX値として扱われます。「0x」の前に付けることもできますが、必要ではありません。

注:16進数の文字列をコピーしているときにこれを使用すると、さまざまな長さでコピーされます。最初に、元の値から10進数値の列を生成します。この列に対して、この数式を実行できます。


0

これらの16進数をHTML形式にフォーマットできることを確認するために見つけた解決策を次に示します。

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

2
コードで何が行われているのかを説明すると、答えがより便利になります。
WilliamKF
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.