[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『数値の表示方法』(おぐおぐ)
1セル内の数値を2つのセルに整数のみと小数点以下の数値のみに分けて表示させたいのですが・・
セル例:(A1)1.50⇒(B1)1(C1)50
B1=INT(A1) C1=MID(A1-INT(A1),3,LEN(A1)-(LEN(INT(A1))+1)) こんな感じでどうでしょうか?(ケン)
正の数のみであれば、ケン さんの示された式で良いと思うのですが、負の数も出てくるのであれば、
B1=TRUNC(A1) C1=IF(A1=B1,"",RIGHT(ABS(A1-B1),LEN(ABS(A1-B1))-2))
ところで、
> セル例:(A1)1.50⇒(B1)1(C1)50 と、言うことですが、小数点以下は、2桁指定ですか? で、あれば C1=IF(A1=B1,"00",ABS(A1-B1)*100) でも良いようですが。 (TORI)
Oh!マイナスの事はぜんぜん考えてなかったです。フォローありがとうございます。(ケン)
数値だと誤差がでるみたいです。 =MID(TEXT(A1-INT(A1),"0.#####"),3,LEN(A1)-(LEN(INT(A1))+1)) として下さい。MID関数は指定した場所から指定した数を抜き出す関数です。 MID(文字列、開始位置、文字数)です。ゆえに 文字列はTEXT(A1-INT(A1),"0.######")で表しています。 1.50−1=0.50これを数値でなく文字列として0.50にしています。 開始位置はカンマを入れるとかならず3になるので3とします。 文字数がLEN(A1)-(LEN(INT(A1))+1 4文字「1.50」−(1「INT(A1)の1」+1「カンマ分」)=2文字となります。 説明がへたですいません。小数点以下は2桁と決まっているのならTORIさんの =IF(A1=B1,"00",ABS(A1-B1)*100)方が簡単で良いですね。(ケン)
解決済みのようですが、C1セルに =ROUND(ROUND(A1*100-B1*100,7),0) ではどうでしょう。 A1とB1を引いてから100倍するのではなく、それぞれを100倍してから引くことで、誤差の 発生を抑えています。ただ、これでも誤差が出た場合のことを考え、小数以下8桁目 (元の値から言えば小数以下10桁目)で四捨五入しました。 さらに、 A1が1.246のように小数以下3桁以上ある時に、C1が 24.6 と小数点付きに なるのを避けるために、小数以下1桁目で四捨五入して整数化しています。 これでC1は 25 となります。 もし、切り捨て(24 になる)が良いなら =INT(ROUND(A1*100-B1*100,7)) としてください。 なお、1.03 など、小数以下1桁目がゼロの時に「3」とだけ表示されますが、表示書式を 00 とすれば 03 と表示されます。 ちなみに、B1もC1も「数値」として保持しています。 (ちゅうねん)
単純に「区切り位置」で区切るというのも、、思い切り力技ですが(笑) (kuro)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.