• 締切済み

EXCELで小数点だけを表示させたい

EXCELで注文書を作っています。注文書の中に、整数と 小数点を分けて表示したいのですが、どうしてもわからないので、 質問しました。 例えば、123.45とA1に入力した場合、B1に123(整数のみ表示) C1に45(小数点のみ表示) したいのです。 セルの書式設定のユーザ定義で出来ませんでしょうか? もし、出来る場合どのような指定をすれば良いのでしょうか? バージョンは、EXCEL2007です。 よろしくお願い致します。

みんなの回答

noname#79209
noname#79209
回答No.10

> 注文書を作っています。 とすると、「-2.5」のときは「-2」と「5」に分けることになるのでしょうね。 小数点以下の桁数が決まっていないなら、小数部は文字列化しないと無理です。 また、B列を表示書式で何とかしたいとお思いでしょうが、表示書式で小数点以下を隠してしまうと、 「-2.5」は「-3」と表示されてしまいます。 と言うことは、いずれにしろ文字列化しないと無理だということです。 そこで、 B列は =LEFT(A1,FIND(".",A1,1)-1) として、右寄せ。 C列は、 =RIGHT(A1,LEN(A1)-FIND(".",A1,1)) 「データは、正の数だけだから、負は考慮する必要はない」と思って負の場合を考慮していないと、 「この数式は正の数なら使ってOK」という認識が「この数式は何でもOK」という認識にすり替わっていきます。 忘れた頃に負の数が入ってきて、そのまま使ってしまい、おかしな数字になっている事に気付かず、 業務に重大な支障を及ぼすこともあり得えます。

kawa33
質問者

お礼

vizzarさん アドバイスありがとうございます。 負の場合にも言及して頂きありがとうございます。 正直、そこまで考えるに至っていませんでした。 大変勉強になりました。 質問して良かったです。 御礼を言うのが遅れてしまい、申し訳ございませんでした。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.9

書式で何とかできないか考えたが、難しいようです。 >小数点を分けて表示したいのですが で、値は元のままにして、表示形式で小数点以下だけを表示したいと 思いましたが、無理なようです。 >既回答では、書式設定では出来ません(書式設定で何とかするにはセルに値が必要 というご意見もありますが、エクセルの特殊な例では、随分予想外の見た目にすることができる場合があるので、やってみましたが、適当な書式設定は見つからなかった。 ーー ただキワモノですが VBAで下記実行すると、それらしく見えるようになった。 ただ色々難点もあるので実用に使えないだろう。 A列に小数点付き数を入れて実行。B列に小数点以下の数字が並ぶ。 フォント色を白にして、必要なもの以外を見えなくしている。 Sub test07() d = Range("A65536").End(xlUp).Row For i = 1 To d Cells(i, "b").NumberFormatLocal = "@" Cells(i, "b") = Application.WorksheetFunction.Text(Cells(i, "A"), "0000000.####") Next i For i = 1 To d Cells(i, "b").Characters(1, 8).Font.Color = vbWhite Next i End Sub 整数部7桁、小数点以下4桁いないという家庭でコードが作られている。

kawa33
質問者

お礼

imogasiさん アドバイスありがとうございます。 |で、値は元のままにして、表示形式で小数点以下だけを表示したいと |思いましたが、無理なようです。 私の少ない知識では、実現できませんでしたが、imogasiさんのように よ~くご存知の方でも出来ませんでしたか。。 VBAのやり方までご伝授頂き、感謝です。 御礼を言うのが遅くなり、申し訳ございませんでした。

すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.8

#7です。すみませんスペルを間違えました。 B1=TRUNC(A1) が正解です。

kawa33
質問者

お礼

mshr1962さん アドバイスありがとうございます。 TRUNCという関数も見たことはあったけれど、使った事が ありません。 これから勉強してみようかと思います。 御礼を言うのが遅くなってしまい、申し訳ございません。

すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.7

B1=TRANC(A1) C1=MOD(A1,1)*10^(LEN(A1)-LEN(B1)-1)

すると、全ての回答が全文表示されます。
  • kizuki135
  • ベストアンサー率29% (162/552)
回答No.6

ANo.4さんの方法だと 「1.05」も「1.5」も C1の結果が同じ「5」なってしまいます。

kawa33
質問者

お礼

kizuki135さん ご丁寧に教えて頂きありがとうございます。 こういうアドバイスも大いに、助かります。 御礼を言うのが、遅くなり申し訳ございません。

すると、全ての回答が全文表示されます。
  • iekustam
  • ベストアンサー率42% (32/76)
回答No.5

無いとは思いますが赤伝用にマイナスの注文書を切るようなことがある場合はINTではおかしくなってしまいますのでご注意ください。 参考:ROUNDDOWN

kawa33
質問者

お礼

ekustamさん 詳しいアドバイスありがとうございます。 お心遣いありがとうございます。 お礼が遅くなり、申し訳ございませんでした。

すると、全ての回答が全文表示されます。
  • redowl
  • ベストアンサー率43% (2140/4926)
回答No.4

小数部分だけ C1 =REPLACE(A11,1,FIND(".",A11),"")*1

kawa33
質問者

お礼

redowlさん アドバイスありがとうございます。 REPLACEという関数始めて知りました。勉強として、 REPLACEを調べてみようかと思います。 お礼が遅くなり申し訳ございません。

すると、全ての回答が全文表示されます。
  • kizuki135
  • ベストアンサー率29% (162/552)
回答No.3

小数点以下の桁数は決まっているのでしょうか? 必ず 12.34 12.3 の様に、小数点以下が1ないし2桁なら B1には =int(A1) C1には =(A1-B1)*100 但し、C1の「セルの書式設定」「ユーザー定義」で「00」と指定してください

kawa33
質問者

お礼

kizuki135さん アドバイスありがとうございます。 是非、この計算式試してみようかと思います。 PS.桁数は決まっていないのですが、参考になりました。 お礼が遅くなりまして申し訳ございません。

すると、全ての回答が全文表示されます。
  • FEX2053
  • ベストアンサー率37% (7995/21384)
回答No.2

書式設定では出来ません(書式設定で何とかするにはセルに値が必要 ですが、あなたの例の場合C1セルに値がありませんので)。 計算式でなら簡単に可能です。 B1セル:=INT(A1) C1セル:=A1-INT(A1) C1セルの表示形式を「.#」にすれば、小数点の前のゼロは表示されません。 小数点も表示したくないなら、 =RIGHT(A1,LEN(A1)-FIND(".",A1)) とかで文字扱いにして処理するしかないさそうです。 小数点以下の桁数が一定なら、=(A1-INT(A1)*100とかで逃げれるんですが。

kawa33
質問者

お礼

FEX2053さん アドバイスありがとうございます。 |書式設定では出来ません(書式設定で何とかするにはセルに値が必要 |ですが、あなたの例の場合C1セルに値がありませんので)。 これが、一番知りたかったんです。 |C1セルの表示形式を「.#」にすれば、小数点の前のゼロは表示されません。 |小数点以下の桁数が一定なら、=(A1-INT(A1)*100とかで逃げれるんですが。 すごく参考になりました。是非試してみようかと思います。 お礼が遅くなり、申し訳ございませんでした。

すると、全ての回答が全文表示されます。
  • sige1701
  • ベストアンサー率28% (74/260)
回答No.1

>例えば、123.45とA1に入力した場合、B1に123(整数のみ表示) >C1に45(小数点のみ表示) 桁数は決まっていますか 123.01 の場合どの様な結果になりますか

kawa33
質問者

お礼

sige1701さん アドバイスありがとうございます。 桁数は決まっていないんですよ。。 仮に、123.01の場合、01と表示できればと思っています。 お礼が遅れてしまい、申し訳ございません。

すると、全ての回答が全文表示されます。

関連するQ&A