[[20221223120320]] 『DEC2HEXの結果をTEXT関数に入れるとうまくいきまax(はるさめ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『DEC2HEXの結果をTEXT関数に入れるとうまくいきません』(はるさめ)

B1セルに =TEXT(DEC2HEX(A1,4),"0000") と入力した場合、A1セルにたとえば7680から7705の数値を入れると、7690〜7695に対しては正しいヘキサデシマル値が出力されますが、その他の値に対してはわけのわからないバイナリの数字が並びます。なぜでしょうか?

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


 DEC2HEX は文字列を返します
 それに対して、TEXT関数で数値書式を設定してるので
 TEXT関数は、DEC2HEXの返り値を数値として評価しようとします。

  7681 → 1E01 → 0010
  7682 → 1E02 → 0100
  7683 → 1E03 → 1000
  1E01などは指数表記の数値として解釈可能なので、10進数に変換されます。

  7690 → 1E0A → 1E0A
  7691 → 1E0B → 1E0B
 これらは、文字列として解釈されるので、TEXT関数はそのまま文字列を返します

 当たり前の結果だとおもいますが、何がしたいんでしょうか
「ヘキサデシマル値」ってなんですか?
(´・ω・`) 2022/12/23(金) 12:47:07

おそらくDEC2HEXが数値を返していると思って
ヘキサデシマル(16進数)をテキストで返したかったのではなかろうか。

だとすると(´・ω・`)さんがおっしゃる通りDEC2HEXは文字列を返しているので
TEXTが不要、ということになります。

(ngk) 2022/12/23(金) 13:05:49


書き溜めていたら被っちゃいましたが投稿しておきます。
たぶんですけど、エクセル君がDEC2HEX関数の結果を指数計算しちゃってるんじゃないですかね。

 DEC2HEX(7680) = 1E00  →  「1E00」を「1 * (10^0)」と解釈  → TEXT(1,"0000")           = "0001"
 DEC2HEX(7680) = 1E01  →  「1E01」を「1 * (10^1)」と解釈  → TEXT(10,"0000")          = "0010"
 DEC2HEX(7689) = 1E09  →  「1E09」を「1 * (10^9)」と解釈  → TEXT(1000000000,"0000")  = "1000000000"

 DEC2HEX(7690) = 1E0A  →  「1E0A」を「1 * (10^A)」と解釈できないので↓になる
                            TEXT("1E0A","0000") は第一引数が【文字列】だから第二引数がなんであれ「1E0A」になる

↓のようになることからも、この推測であっているような気がしますが、正答は他の回答者さんのコメントをお待ちください。

 DEC2HEX(11780) = 2E04  →  「2E04」を「2 * (10^4)」と解釈  → TEXT(20000,"0000")  = "20000"

(もこな2) 2022/12/23(金) 13:06:47


もしかして常に4桁の16進数を返したかったとか?
10→000Aみたいな。
(ngk) 2022/12/23(金) 13:08:34

 もしngkさんの言う通りであればDEC2HEX関数の第2引数に桁数がある。
 =DEC2HEX(数値,4)
 で4桁未満の16進数も4桁で表示される。
 ただし変換後の桁数が指定桁数を超えるとエラーになる
(ねむねむ) 2022/12/23(金) 13:14:40

なるほど、わかりました。
="14'h"&TEXT(DEC2HEX(A1,4),"0000")
という風に文字列と連結したいのですが無理ということですね
(はるさめ) 2022/12/23(金) 13:17:54

 単純に
 ="14'h"&DEC2HEX(A1,4)
 なのでは?

 あと元質問をよく見ていなかった。
 すでに桁数は指定しているのか。
(ねむねむ) 2022/12/23(金) 13:21:56

 ="14'h"&DEC2HEX(A1,4)でよいのですね!
ありがとうございました
(はるさめ) 2022/12/23(金) 16:03:57

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.