ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

excelで普通に四捨五入をするとなると
「ROUND」などで小数点以下の桁数を指定しますよね。
そうではなく、有効桁数3桁で四捨五入…例えば、
0.1234ならば0.123
1.234ならば1.23
12.34ならば12.3
123.4ならば123…のように
数字を四捨五入させる関数(?)はあるのでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

常用対数関数LOGを使えばできます。



例えばこんな具合。
=ROUND(A1,-INT(LOG(A1))-1 + 3)
これを使えば、質問の通りの答になります。

有効桁数を変えたい場合は、3の数値を変えてください。
    • good
    • 3
この回答へのお礼

ありがとうございます。早速教えていただいた関数を利用して表を作ってみました。まさに私の求めていたのはコレです(笑)!!本当にありがとう御座いました。

お礼日時:2005/04/22 17:00

#4さん


 補正しても、
 0.01234
 0.001234
などには使えませんよ^^;
    • good
    • 0
この回答へのお礼

ご指摘ありがとう御座いました。間違えずにすみました。

お礼日時:2005/04/22 17:07

ANo.3です。


済みません、1以上ならANo.3の式でいけそうですが、
1以下の場合は0.123の0も桁数に入れてしまうようです。

で、補正値をいれて、

=ROUND(A1,3-LEN(INT(A1))+(A1<1))
    • good
    • 0
この回答へのお礼

ありがとうございました。
残念ながらNo.5の方のおっしゃるように、0.0...だとちょっと違ってきてしまうようで…私の求めていた物とはちょっと違ったようです。でも、参考になりました。ありがとうございます。

お礼日時:2005/04/22 17:05

この式で、どうでしょうか?



=ROUND(A1,3-LEN(INT(A1)))

A1セルの数字を有効数字3桁で四捨五入します。
    • good
    • 0

=VALUE(TEXT(A1,"0.00E+00"))



で如何ですか。
    • good
    • 1
この回答へのお礼

ありがとうございます。こちらもまさに!です。あ~、こちらで作ったほうが数式がシンプルになったかもしれない…。でも、参考になりました。ありがとうございます!

お礼日時:2005/04/22 17:03

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル(Excel)で、数値を一定の有効数字で表示したいのですが…

エクセル(Excel)の書式設定の表示形式では数値を選択すると、小数点以下の桁数を揃えることができますが、同じ感覚で有効数字を一定にして表示させるにはどんな方法があるでしょうか?
例えば、0.01234、0.1234、1.1234、11.1234、111.1234という五つの値を、有効数字3桁を指定して表示して、順に0.0123、0.123、1.12、11.1、111という風に自動的に表示してくれる表示形式、あるいは関数を探しています。
事務計算で小数点以下何桁というのが重要であるように、技術計算ではこのように有効数字を揃えたい場合が多いと思いますので、どなたかご存じの方、お教えください。
なお、指数形式では似たような結果になりますが、わかりにくい表示なので使いたくありません。
よろしくお願いいたします。

Aベストアンサー

◆こんな方法もありますよ
=ROUND(A1,2-INT(LOG(ABS(A1))))

★「0」を考慮すると
=ROUND(A1,2-INT(LOG(ABS(A1)+(A1=0))))

Qエクセルで有効桁を指定して丸める

以前、↓↓にて
http://oshiete1.goo.ne.jp/qa1345491.html
「excelで普通に四捨五入をするとなると
 『ROUND』などで小数点以下の桁数を指定しますよね。
 そうではなく、有効桁数3桁で四捨五入…例えば、
 0.1234ならば0.123
 1.234ならば1.23
 12.34ならば12.3
 123.4ならば123…のように
 数字を四捨五入させる関数(?)はあるのでしょうか。」
と質問し、
=ROUND(A1,-INT(LOG(A1))-1 + 3)
とか
=VALUE(TEXT(A1,"0.00E+00"))
といった方法を教えていただいたのですが、

0.1234 なら 0.123
・・・
123.4 なら 123
までは同じなのですが、
1234.5 なら 1230ではなく1235
12345.6 なら 12300ではなく12346
つまり、1000未満の場合は以前と同じく有効数字3桁で
1000以上の場合は小数点以下四捨五入としたい場合は、
IF関数で
=IF(1000>A1 ・・・のように条件指定してやるしかないのでしょうか。
(A1の部分にも長々した数式が入るもので)
数式がかなり長くなってしまい、見づらいので
なにか良い方法があればと思ったのですが…

以前、↓↓にて
http://oshiete1.goo.ne.jp/qa1345491.html
「excelで普通に四捨五入をするとなると
 『ROUND』などで小数点以下の桁数を指定しますよね。
 そうではなく、有効桁数3桁で四捨五入…例えば、
 0.1234ならば0.123
 1.234ならば1.23
 12.34ならば12.3
 123.4ならば123…のように
 数字を四捨五入させる関数(?)はあるのでしょうか。」
と質問し、
=ROUND(A1,-INT(LOG(A1))-1 + 3)
とか
=VALUE(TEXT(A1,"0.00E+00"))
といった方法を教えていただいたのですが、

0.1234 なら 0...続きを読む

Aベストアンサー

#03です
=ROUND(A1,2-INT(LOG(A1)))
でもいけました。こちらの方が断然短い式になります

QVBAで有効数字の設定

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14103030244

このページと同じように有効数字で四捨五入するマクロをVBAで作りたいのですが

12345.6789 → 12300
98765.4321 → 98800
12.3456789 → 12.3
98.7654321 → 98.8
0.0123456789 → 0.012
0.0987654321 → 0.099
0.0900654321 → 0.090


Application.Round(rng, f)

となっているところを
WorksheetFunctionを使わずに行いたいのですが
どうすれば良いですか?


あとテキストデータに出力した際に
0.001などが1E-3のようになってしまいますが
指数表記か標準表記かを選択するにはどうしたら良いですか?

Format(x, "0.000")

のようにすると、0.1が0.100のようになってしまうのですがどうしたら良いですか?

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14103030244

このページと同じように有効数字で四捨五入するマクロをVBAで作りたいのですが

12345.6789 → 12300
98765.4321 → 98800
12.3456789 → 12.3
98.7654321 → 98.8
0.0123456789 → 0.012
0.0987654321 → 0.099
0.0900654321 → 0.090


Application.Round(rng, f)

となっているところを
WorksheetFunctionを使わずに行いたいのですが
どうすれば良いですか?


あとテキストデータに出力した際に
0.001などが1E-3...続きを読む

Aベストアンサー

こんばんは。

>有効数字で四捨五入するマクロをVBAで作りたいのですが

有効桁数が3桁の計算をしないさい、ということだったら、古典的な問題ですね。昔、やった覚えがあります。ただし、文中の引用先の知恵袋の質問は、理由の分からないリクエストが多すぎるように感じます。

ご質問のイレギュラーな部分としては、有効桁数が、二桁になっています。
というとで、条件が変わっています。

0.012345679 → 0.012
0.098765432 → 0.099

それと、これは、Format の問題ですから、これもイレギュラーです。
0.0900654321 → 0.090

なお、以下のマクロでは、有効桁数を優先しているので、
0.000912456 → 0.00091 となり、

負数は、以下のようになります。
-0.090065432  → -0.090 となります。

>WorksheetFunctionを使わずに行いたいのですが
引用先の事ですね。ユーザー定義関数としては、プログラミングとしての用をなしていないように見受けられました。

以下はExcelのA列の1行目からの計算です。右隣のセルに出力します。

'//
Sub Test01()
Dim c As Range
Dim buf As Variant
For Each c In Range("A1", Cells(Rows.Count, 1).End(xlUp))
 If VarType(c.Value) = vbDouble Then
  If c.Value >= 0.1 Then
   c.Offset(, 1).Value = UpperGetNum(c.Value, 3)
  Else
    buf = UpperGetNum(c.Value, 2)
    If Len(CStr(Abs(buf))) <= 4 Then
     c.Offset(, 1).NumberFormat = "0.000"
     c.Offset(, 1).Value = buf
    Else
     c.Offset(, 1).Value = buf
    End If
  End If
 End If
Next
End Sub

''ユーザー定義関数
Function UpperGetNum(n, dgt)
'n は計算の数値, dgtは桁数 二つのパラメータは意図的にVariant型
Dim sg As Integer
Dim k As Integer
Dim i As Integer
Dim a As Double
 sg = Sgn(n) '符号
 n = Abs(n) '絶対値
 k = Int(Log(Abs(n)) / Log(10#)) '桁
 i = (k + 1) - dgt
 a = Int(n / 10 ^ i + 0.5) '四捨五入
 UpperGetNum = sg * (a * 10 ^ i)
End Function
'//

>あとテキストデータに出力した際に
>0.001などが1E-3のようになってしまいますが
>指数表記か標準表記かを選択するにはどうしたら良いですか?

テキストデータに出力という意味には、いろいろありますから、それだけではっきり分かりません。
Format(x, "0.000") これも、テキスト出力です。

1E-3 になるのは、特別に書式設定されていなければ、セル幅を広げれば、数値的に出るはずです。セル上で、データ型のキャスティングでも行われているというのでしたら、

明示的に、 ActiveCell.NumberFormat ="0.000" 
としてから、 ActiveCell.Value =0.001
として、数値出力すればよいはずです。(数値入力よりも、NumberFormat が先ならないと、補正処理が働いて、値が変動することがあったと思います。)

>Format(x, "0.000")
>のようにすると、0.1が0.100のようになってしまうのですがどうしたら良いですか?

それは、最初のご質問提示の
0.0900654321 → 0.090
とは、矛盾しているように感じます。何か、明確な条件がなくては、排除することができません。

丸める必要がないものは、If 文に条件をつければよいでしょう。
例えば、IF 値*1000 - INT関数(値 *1000) =0 なら、そのままに出力するとかすればよいと思います。

こんばんは。

>有効数字で四捨五入するマクロをVBAで作りたいのですが

有効桁数が3桁の計算をしないさい、ということだったら、古典的な問題ですね。昔、やった覚えがあります。ただし、文中の引用先の知恵袋の質問は、理由の分からないリクエストが多すぎるように感じます。

ご質問のイレギュラーな部分としては、有効桁数が、二桁になっています。
というとで、条件が変わっています。

0.012345679 → 0.012
0.098765432 → 0.099

それと、これは、Format の問題ですから、これもイレギュラ...続きを読む

Qエクセル STDEVとSTDEVPの違い

エクセルの統計関数で標準偏差を求める時、STDEVとSTDEVPがあります。両者の違いが良くわかりません。
宜しかったら、恐縮ですが、以下の具体例で、『噛み砕いて』教えて下さい。
(例)
セルA1~A13に1~13の数字を入力、平均値=7、STDEVでは3.89444、STDEVPでは3.741657となります。
また、平均値7と各数字の差を取り、それを2乗し、総和を取る(182)、これをデータの個数13で割る(14)、この平方根を取ると3.741657となります。
では、STDEVとSTDEVPの違いは何なのでしょうか?統計のことは疎く、お手数ですが、サルにもわかるようご教授頂きたく、お願い致します。

Aベストアンサー

データが母集団そのものからとったか、標本データかで違います。また母集団そのものだったとしても(例えばクラス全員というような)、その背景にさらならる母集団(例えば学年全体)を想定して比較するような時もありますので、その場合は標本となります。
で標本データの時はSTDEVを使って、母集団の時はSTDEVPをつかうことになります。
公式の違いは分母がn-1(STDEV)かn(STDEVP)かの違いしかありません。まぁ感覚的に理解するなら、分母がn-1になるということはそれだけ結果が大きくなるわけで、つまりそれだけのりしろを多くもって推測に当たるというようなことになります。
AとBの違いがあるかないかという推測をする時、通常は標本同士の検証になるわけですので、偏差を余裕をもってわざとちょっと大きめに見るということで、それだけ確証の度合いを上げるというわけです。

Qエクセルで数値の上3桁で切捨てができる関数

エクセルで、上3桁で切捨てできる関数はありますでしょうか?
エクセルで、たとえば1,234 54,321 678,901 と桁数が異なる
数値がランダムにある場合に、上3桁どりで、1,230 54,300
678,000 と返してくれる関数です。 
お知恵を拝借したくよろしくお願いいたします。

Aベストアンサー

数学的な考えをすれば
=ROUNDDOWN(A1,2-INT(LOG(ABS(A1))))
でしょう。
#1の方法だと小数や負の数に対応できません。

Qエクセルで計算すると2.43E-19などと表示される。Eとは何ですか?

よろしくお願いします。
エクセルの回帰分析をすると有意水準で2.43E-19などと表示されますが
Eとは何でしょうか?

また、回帰分析の数字の意味が良く分からないのですが、
皆さんは独学されましたか?それとも講座などをうけたのでしょうか?

回帰分析でR2(決定係数)しかみていないのですが
どうすれば回帰分析が分かるようになるのでしょうか?
本を読んだのですがいまいち難しくて分かりません。
教えてください。
よろしくお願いします。

Aベストアンサー

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるための指数表記のことですよ。
・よって、『2.43E-19』とは?
 2.43×1/(10の19乗)で、
 2.43×1/10000000000000000000となり、
 2.43×0.0000000000000000001だから、
 0.000000000000000000243という数値を意味します。

補足:
・E+数値は 10、100、1000 という大きい数を表します。
・E-数値は 0.1、0.01、0.001 という小さい数を表します。
・数学では『2.43×10』の次に、小さい数字で上に『19』と表示します。→http://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%A8%E8%A8%98
・最後に『回帰分析』とは何?下の『参考URL』をどうぞ。→『数学』カテゴリで質問してみては?

参考URL:http://ja.wikipedia.org/wiki/%E5%9B%9E%E5%B8%B0%E5%88%86%E6%9E%90

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるた...続きを読む

QExcelで数値の丸め

JIS Z8401 規則Aによる数値の丸めをエクセルの関数で行ないたいと考えています。
ただし有効数字を3桁にする必要があります。
つまり有効数字4桁目以降を丸める際、「二つの隣り合う整数倍がある場合は」「丸めた数値として偶数倍のほうを選ぶ」との規則になります。
具体的には下記の様にしたいのです。

54.25→54.2
79.13→79.1
108.5→108.0
110.95→111.0
119.55→120.0
207.2→207.0

過去ログにこれに近い物もありましたがうまくいきません。
よろしくお願いします。

Aベストアンサー

次の方法でできると思います。

A1: 元数値
B1: =CEILING(LOG10(A1),1)
元数値の桁数を求めるためLOGを取り切り上げ。
C1: =MOD(A1,10^(B1-3))*10^(3-B1)
有効桁以外の部分を算出、および桁合わせ。
D1: =IF(ABS(C1-0.5)<0.000001,ROUND(A1/2,3-B1)*2,ROUND(A1,3-B1))
それが誤差範囲以内(※)で0.5に等しければ、1/2して丸めて2倍する。さもなくば普通に丸める。

※Excelは小数を正確に扱えないので、"等しい"を条件にすると誤差で正常に動作しない。
よって"絶対値がある小さな値以下"で書き換える。
今回の「0.000001」は適当。用途に合わせて意味のある数字の数桁下にしておけばよいと思う。


なおNo1さんのものは間違っているようです。
単なる五捨六入かと思いきやその下1桁だけ考慮しているようなので、50捨51入とでも言うのでしょうかね。

Q表内、縦位置の中央揃えがど~~してもできない!!

 ワードでの文書作成をしています。表内の文字を縦横ともに中央に配置する場合、セルの配置で中央に設定しても、横位置は中央になるのですが、縦位置が下よりになったままです。それならばと、縦位置を上にしても画面上はそれでも下よりです。ワードで表を作った場合も、エクセルで作った表をコピーしても同じです。なんとか縦位置を中央に持っていきたいのですがどうしたら良いでしょうか。明日までに完璧に仕上げたいのです。わかる方、よろしくお願いいたします!!

Aベストアンサー

書式ー段落で、行間が1行になってない場合は1行にしてください。

それでもだめな場合は、Ctrl+Qを押して段落書式を解除し、
縦位置が中央揃えになるか確認してください。
(横位置の中央揃えもはずれますので、あとで設定してください)

それでもダメなら、セル内にカーソルがある状態で右クリックし、
表のプロパティ-セルタブ-オプションボタンをクリックし、
表全体を同じ設定にするがオンになってるか確認してください。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Q比重の計算

本当にバカな質問してすいません。

ある溶剤の比重が1.2とします

10ml取った場合は12グラムでいいでしょうか?


もう一つ比重が0.8とします

10ml取った場合8グラムでいいのでしょうか?

バカな質問ですいません。頭がこんがらがってきました。どうかよろしくお願いします。

Aベストアンサー

 合ってますよ^^

 比重の単位は、g/cm3です。
 cm3とmlは同じ単位ですから、g/mlと置き換えてもかまいません。


>ある溶剤の比重が1.2とします
>10ml取った場合は12グラムでいいでしょうか?

さて、こういう場合は、単位もまとめて計算するといいです。

10ml×1.2g/ml = 12g

「ml」に「g/ml」をかけるということは、
「ml」に「g」をかけて「ml」で割るということです。
「g」だけが残りますよね。

0.8の場合も正解です。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング