[[20030902115326]] 『数値の表示方法』(おぐおぐ) >>BOT

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

 

『数値の表示方法』(おぐおぐ)

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!マイナスの事はぜんぜん考えてなかったです。フォローありがとうございます。(ケン)


すばらしい!早速のご回答ありがとうございました!
マイナスのケースはありえませんが、小数点以下は2桁表示を必要としています。
ちなみに内容を十分理解する為に、お伺いしたいのですが・・
C1におけるMIDの文字列指定位置が3となっているのは
A1-INT(A1)の結果、整数部分を゛0゛と認識しているからでしょうか?
また、A1=122.55とした場合、C1の数値が54と表示されてしまうのですが
これは LEN(A1)-(LEN(INT(A1))+1)がいたずらしているのでしょうか?
お知恵をいただければ幸いに存じます。

 数値だと誤差がでるみたいです。
=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)方が簡単で良いですね。(ケン)

ケンさん 納得!です。
懇切丁寧なご説明ありがとうございました。
今回はTORIさんご指導の関数を引用させていただきますが、後学のため控えさせていただきます。
TORIさん本当にありがとうございました。

 解決済みのようですが、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.