• ベストアンサー

エクセルで複数から参照した場合の小数点以下の0の表示

初めて質問させていただきます。 エクセル2000で セルA1に2.00 セルA2に3.00 セルA3に="("&A1&")("&A2&")" とした場合、小数点以下の.00が消えてしまいますが、 表示させる方法はありますか? また、その小数点以下を任意に設定する方法、 例えば (セルA1に1.001 セルA3に=ROUND(A1,A2) とした場合のA2で小数3位までは任意に出せる。) がありますでしょうか?

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.6

エラーチェックが要らなければ 1行で出来ますよ セルA1に 2 セルA2に 3 セルA3に 桁数 セルA4に 結果 ’----------------------------------------------------------- Sub test_2() Range("a4").Value = "(" & Format(Range("a1"), "0." & String(Range("a3"), "0")) & ")(" & Format(Range("a2"), "0." & String(Range("a3"), "0")) & ")" End Sub ’----------------------------------------------------------- >当方エクセルVBAでしたら多少は触れます。 との事なので、参考にどうぞ

ponpon629
質問者

お礼

回答有難う御座います。 Format関数の応用でこんな使い方が出来るんですね、 しかも超シンプルでびっくりデス。 でも、この場合は小数点以下が必ずある場合のみみたいです。 A3に0入れるとコンマが残っちゃいます。 使用時には、現状整数のみはないので、これもありですね。

その他の回答 (5)

回答No.5

No.3です。 指定小数点以下って切り捨てちゃっていいんですか?^^; とりあえずマクロを作ってみました。 思ったほどスマートになりませんでした・・・。 唯一メリットといえば小数点以下の桁数が増えても問題ないくらいですか・・・。 なので質問者様の要件なら今回の関数対応で十分と思われます。 セルA1:小数点付き数値 セルA2:小数点付き数値 セルA3:「(セルA1整形値)(セルA2整形値)」表示 セルA4:小数点以下桁数 【セルA1,A2,A4の値変更契機 必ず数値しか入力されない前提】 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Dim digit, a1val, a2val digit = "" If Not Intersect(Range("A1,A2,A4"), Target) Is Nothing Then For i = 1 To Range("A4").Value digit = digit + "0" Next If digit = "" Then digit = "0" Else digit = "0." + digit End If With WorksheetFunction a1val = .Text(.Round(Range("A1").Value, Range("A4").Value), digit) a2val = .Text(.Round(Range("A2").Value, Range("A4").Value), digit) End With Range("A3").Value = "(" + CStr(a1val) + ")(" + CStr(a2val) + ")" End If Application.EnableEvents = True End Sub 【数値チェックを入れたパターン】 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Dim digit Dim a1val, a2val Dim RE digit = "" If Not Intersect(Range("A1,A2,A4"), Target) Is Nothing Then Set RE = CreateObject("VBScript.RegExp") RE.Pattern = "^\d+\.?\d*$" If RE.test(Target.Value) Then For i = 1 To Range("A4").Value digit = digit + "0" Next If digit = "" Then digit = "0" Else digit = "0." + digit End If With WorksheetFunction a1val = .Text(.Round(Range("A1").Value, Range("A4").Value), digit) a2val = .Text(.Round(Range("A2").Value, Range("A4").Value), digit) End With Range("A3").Value = "(" + CStr(a1val) + ")(" + CStr(a2val) + ")" Else Target.Select res = MsgBox("数値を入力して下さい", vbOKOnly + vbExclamation, "入力エラー") End If End If Application.EnableEvents = True End Sub

ponpon629
質問者

お礼

回答ありがとうございます。 >唯一メリットといえば小数点以下の桁数が増えても問題ないくらいですか・・・。 これは関数の場合はIF~が増えちゃうってことですよね? 今回の場合は最大3桁までなので関数でいけそうですが、 関数とマクロをうまく使い分けるように心がけていますので、 このご回答は今後のコード作成に非常に参考になりました。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

>小数点以下の.00が消えてしまいますが、表示させる方法はありますか? ="("&TEXT(A1,"0.00")&")("&TEXT(A2,"0.00")&")" >小数3位までは任意に出せる 右クリック-セルの書式設定-表示形式-数値に設定し、桁数を3に設定するか ユーザー定義で0.000にするでは如何

ponpon629
質問者

お礼

回答ありがとうございます。 ユーザー定義ですると常に桁数が決まってしまうので都合悪いんです。 有効桁数の関係で1,10,100の位の数字が変動するので それにあわせて桁数も変えないといけないので。

回答No.3

関数を使うとこうなります。 ="(" & TEXT(A1,"0.00") & ")(" & TEXT(A2,"0.00") & ")" さらに小数点以下を任意にするには =TEXT(ROUND(A1,A2),IF(A2=1,"0.0",IF(A2=2,"0.00",IF(A2=3,"0.000","0")))) 整数部に2桁がありえる場合 =TEXT(ROUND(A1,A2),IF(A2=1,"#0.0",IF(A2=2,"#0.00",IF(A2=3,"#0.000","#0")))) 関数だとどうしてもスマートには行きませんが・・・。 そして結局文字列ですが・・・。

ponpon629
質問者

補足

回答ありがとうございます。 TEXT関数の右側の”0.0”や”0.00”をどこかのセルに参照してできました。 A4に桁数指定 A5に=IF(A4=1,"0.0",IF(A4=2,"0.00",IF(A4=3,"0.000","0"))) としてそれを A3に="("&TEXT(A1,A4)&") ("&TEXT(A2,A4)&")" として出来ました。 遠回りでTEXTになっちゃいましたが見た目は目的どおりになりました。 VBAで処理を行った場合はもっとスマートに出来ますか? 当方エクセルVBAでしたら多少は触れます。

noname#204879
noname#204879
回答No.2

="("&TEXT(A1,"0.00")&")("&TEXT(A1,"0.00")&")" では如何? セル A1 に 1.001 セル A2 に 3.00 の場合、式 =ROUND(A1,A2) は 1.001 と「小数3位まで」表示されませんか?貴方の場合、どのように表示されますか?

ponpon629
質問者

お礼

回答ありがとうございます。 小数点以下の桁数を任意に表示させたいのです。 例えばA4セルに桁数を入力するセルを作って(2とか3を任意に入力)、 それに対応する小数点以下の桁数を表示 {A3に="("&A1&")("&A2&")"と入れた場合のA1とA2の桁数} させたいのです。 TEXTのばあい固定されてしまうのでちょっと使いにくいので ほかに方法がないかと思いました。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

2.00と3.00はセル上のデータでは 2と3です おそらく書式設定で0.00としているのでそのように表示されているだけ。 ="("&A1&")("&A2&")"を実施すると文字列として表示されますので、数値の書式設定0.00は反映されません。 表示させるにはA1 A2セルを文字列で2.00 3.00と入力するしかない、もしくは.00を追加した文字列に変化させるか。 ="("&A1&".00)("&A2&".00)"

ponpon629
質問者

お礼

やはり文字列としてしか出来ないのですね。 有効桁数の関係で0であっても表示させたかったのですが。 ありがとうございました。おかげですっきりしました。

関連するQ&A

  • エクセルの小数点以下表示

    エクセルの小数点以下表示でツールバー、セルの書式設定などは表示されていない部分(例えば小数点以下2位までの表示なら3位以下の部分)は四捨五入されているのでしょうか?デフォルトの状態を知りたいのです。それの端数をROUND関数で調整しないと、計算結果等に支障は出ますか。

  • Excelで小数点以下の表示

    お世話になります。 分かる方がいましたら返信お願い致します。 Excelにて、テキストと数字の組み合わせによる表示の時、数字部分を小数点以下1桁に統一して表示したいのですが、うまくいきません。 例えばA1=5、とB1=1として(A1、B1は変数) C1にA1÷B1の答えを「答えは5.0」と表記したいのですが、 C1="答えは"&A1/B1 とすると「答えは5」となり、小数点以下1桁が表示されないです。 解決方法として考えたのが、書式設定で表示形式を小数点以下1桁に指定する、 またはROUND関数で小数点以下1桁に統一する方法ですが、 両方共「答えは5.0」ではなく「答えは5」となってしまいます。 またセルを2つ使ってC1に「答えは」、C2に「5.0」と表示なら可能ですが、 表の一部の為、見た目が崩れてしまって嫌です。 解決方法が分かる方がいましたら、よろしくお願い致します。

  • エクセル2007での小数点以下の表示について

    エクセル2007を使用しています。 ある列のセル内に表示された数字の小数点以下において0が出る手前まで表示したいのです。 ちなみにセルにはなんらかの規則性のある式を列の1~2行目で入れておくことにします。 以下の行はそれをコピーして同じ規則性で自動的に入力してあります。 簡単に言うと「C1=1 C2=1 C3=C1+C2」とかしてC4以下にコピー等という意味です。 つまり直接数字を入力するのは序盤の数行のみということです。 その後の行は前述した一定の規則性のあるように設定したコピペです。 で、問題の箇所ですが例えば 1.62,1.93,1.9413・・・ と縦の列に表示したいのに 1.6、1.9、1.9・・・ となったりします。 そこでセルの書式設定の「分類」で「数値」を選び小数点以下何桁まで入れるか手動で設定してみましたが、直接数字を入力しないので、どの数値がどのくらいの小数点以下まで表示できるか分からないものですから、例えば小数点以下3桁まで任意に設定すると、上の例において 1.620,1.930,1.941・・・ となり末尾の0が表示されたり、全部表示し切れなかったりします。 エクセル側で自動的に小数点以下は0の手前までのみに合わせてくれる方法はあるのでしょうか。 それとも自分で見当をつけて設定しないといけないのでしょうか・・・。 よろしくお願いします。

  • エクセルで小数点以下を切り捨てた答えを表示したい!

    こんにちは。宜しくお願いします。 OSは、WindowsNT、Excel97を使用しています。 エクセルで計算式を作った時、答えが小数点以下2ケタまで表示されたとします。それを小数点以下を切り捨てた数字で表示したい時、どうすればいいのか分かりません。 関数「ROUND DOWN」を使えば切り捨てが出来るという事は分かるのですが、出来れば、計算して答えが出るセルに直に切り捨てた答えが出るようにしたいのです。(つまり、小数点以下の答えが表示されるセルと、切り捨てた答えが表示されるセルを分けたくないのです) 拙い説明で申し訳有りませんが、不明な点などあれば補足致しますので、宜しくお願いします。

  • エクセルで小数点以下を入力した通りに表示する

    エクセルでデータを 152.5 168.0 216.15 といった感じのデータを入力していくんですが 小数点以下が168.0など、0の場合は168と表示されてしまいますし、 セルの設定で小数点以下1桁にすると216.15は216.1になってしまいます セルの表示設定を一括で設定できないでしょうか?

  • 小数点以下を強引に表示させたい

    小数点以下を強引に表示させたいと考えています。 具体的には、「130」という値を「130.00」というように、小数点以下2桁まで表示させたいのです。3桁以下は切り捨てます。 これまでは、 $c = $a / $b; round($c, 2); という方法でやっていたのですが、$cがきっちり割り切れる値だと、どうも普通に小数点以下を表示させないようなのです。 例え「00」でも表示させたいのですが、そのような関数はありますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Excel97小数点以下の表示

    いつもお世話になってます。 小数点以下の表示についてご存知の方がいらしたら教えてください。 x=round(a/b,0)とします。 0.5>x>0 の四捨五入して0になる場合は0を表示させたいのですが x=0 のときは値を表示させたくないときはどのような書式設定をすればよいのでしょうか。よろしくお願いします。

  • 小数点以下の数字の桁数表示について

    VB6.0で小数点以下の数値が0の場合でも指定した桁数で0も表示するにはどのようにしたらよいですか? 例えば、四捨五入のROUND(0.195000,4)のとき返ってくる数値が「0.195」となり最後の0が表示されません。(以下は4桁表示したいのに) (小数点以下第5位が5なら切り上げで最後に1が表示されますが) エクセルだとセルの書式設定で表示桁数を設定するだけだったのですが。 FIXED関数、TEXT関数はVB6.0では使えないのですよね? VB6.0に詳しい方よろしくお願いします。お手数です。

  • エクセルの小数点以下表示

    エクセルの小数点以下表示にツールバーの桁数上げ、下げとセルの書式設定などがありますが、それらは違う物なのでしょうか。セルの書式設定でも標準、数値、ユーザー定義の3つは表示上同じなら同じと考えてよいでしょうか。

  • エクセル 小数点以下二桁と小数点以下0桁そのままで

    エクセル2013を使っています。 セルの書式設定の文字列にする方法以外で、教えてください。 小数点以下2桁と小数点以下なしで表示するセルを計算したいのですが、 文字列にすると、計算できないので困っています。 入力した数字そのまま表示し、計算するにはどうすれば良いですか?

専門家に質問してみよう