こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

セルの書式設定で12,345.6人と12,345人の両立は?

エクセル2000です。
セルの表示の書式設定で、例えば計算結果が
12345なら12,345人
12345.6なら12,345.6人
12345.67なら12,345.67人
と表示し、セルは数値のままにしておきたいのです。

セルの書式設定で、G/標準"人" とすると、整数と小数点についてはそのようになりますが、桁区切りのカンマは出せません。
カンマを出すために、#,###.##"人"とすると、整数値の場合、12,345.人と、不要な小数点がでてしまいます。

どうしたらよいのでしょう?

投稿日時 - 2006-03-11 17:57:52

QNo.2022289

困ってます

質問者が選んだベストアンサー

こんばんは。Wendy02です。

時々、質問に出る話ですね。#2 のimogasiさんがおっしゃるように、「一応」不可能とされています。

以下のようなイベント・ドリブン型のマクロでないとうまくいかないと思います。ただし、このような、マクロは、やむを得ないときに限りますね。

シートモジュール
'-----------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim myFig As Currency
  If Target.Count > 1 Then Exit Sub
  '入力範囲
  If Intersect(Target, Range("A1:A20")) Is Nothing Then Exit Sub
  If VarType(Target.Value) <> vbDouble Then Exit Sub
  Target.NumberFormat = "General"
  myFig = CStr(Target.Value - Int(Target.Value))
  If CStr(myFig) = "0" Then
   Target.NumberFormatLocal = "#,##0人"
   Else
   Target.NumberFormatLocal = "#,##0." & String(Len(CStr(myFig)) - 2, "0") &"人"
  End If
End Sub

投稿日時 - 2006-03-11 20:52:49

お礼

やはりVBAしかないのですね。
わかりました。ありがとうございます。

投稿日時 - 2006-03-12 00:36:02

ANo.4

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

計算結果ですよね?( そのセルに直接入力するのではなく )
書式設定ではちょっと思いつきませんが、
関数で条件分けするのではダメでしょうか?

たとえば A1/B1 の計算結果なら
=IF(MOD(A1/B1,1),TEXT(A1/B1,"#,##0.##人"),TEXT(A1/B1,"#,##0人"))

投稿日時 - 2006-03-11 18:43:46

お礼

ありがとうございます。今まさにそうやっています。
ただ、これでは数値にならないので、=VALUE(LEFT(C3,LEN(C3)-1))なんて数値に戻す作業をしてます。
だから書式設定でできないかなあと思ったんです。

投稿日時 - 2006-03-12 00:33:33

ANo.2

##、###.##のように書式で小数点以下を指定すると、小数点なしの時、ピリオドの表示は避けられない。過去にも同じ質問があったように記憶するが、技巧的な奇抜な答えを出されていたように思うが、一応できないというのが適当と思う。

投稿日時 - 2006-03-11 18:39:43

お礼

わかりました、ありがとうございます。

投稿日時 - 2006-03-12 00:28:32

ANo.1

セルの書式設定では無理なので
=A1&"人"
としています

投稿日時 - 2006-03-11 18:28:10

お礼

さっそくありがとうございます。
ただ、=A1&"人"では文字列になってしまいます。
文字列になるのだけならまだしも、カンマにも対応できません。
それなら、G/標準"人"の方がまだマシではないでしょうか・・・。

投稿日時 - 2006-03-11 18:37:48

あなたにオススメの質問