C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: エクセルで小数点以下を切り上げするVBA


(過去ログ 128 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■75978 / inTopicNo.1)  エクセルで小数点以下を切り上げするVBA
  
□投稿者/ vba初心者 (1回)-(2015/05/21(Thu) 09:20:37)

分類:[.NET 全般] 

マクロ初心者です。

Sub 変換()

Range("B1").Select
ActiveCell.FormulaR1C1 = "=IF(C[-1]=0,0,(IF(C[-1]<1,1,C[-1])))"
Range("B1").Select
Selection.AutoFill Destination:=Range("B1", Range("B1").Offset(0, -1).End(xlDown).Offset(0, 1))
Range("C1").Select
End Sub

A列に入った数字に対し、0<1であればB列に1にするというものを書きました。

これを整数以外だったら、要は小数点を含んでいたら全て、切り上げの整数にする というものにしたいです。

0.1 = 1
0.9 = 1




9.8 = 10

というようにしたいです。
いろいろ調べましたがわからず。。
よろしくお願いします。
引用返信 編集キー/
■75979 / inTopicNo.2)  Re[1]: エクセルで小数点以下を切り上げするVBA
□投稿者/ kaina (5回)-(2015/05/21(Thu) 09:35:38)
Roundup関数ではあなたの要件は満たせませんか?

後、分類が[.NET全般]になっていますよ。

引用返信 編集キー/
■75980 / inTopicNo.3)  Re[1]: エクセルで小数点以下を切り上げするVBA
□投稿者/ 魔界の仮面弁士 (341回)-(2015/05/21(Thu) 09:39:35)
No75978 (vba初心者 さん) に返信
> マクロ初心者です。

これらの Excel の計算は、二進数の浮動小数点数で行われます。
そのため十進数に直した場合、近似値として誤差を生じる可能性があることを考慮しておいてください。
http://pc.nikkeibp.co.jp/pc21/special/gosa/


> Range("B1").Select
> ActiveCell.FormulaR1C1 = "=IF(C[-1]=0,0,(IF(C[-1]<1,1,C[-1])))"
こういうときには、
  Range("B1")FormulaR1C1 = "=IF(C[-1]=0,0,(IF(C[-1]<1,1,C[-1])))"
と書いた方がスマートですよ。

ただ、右辺のワークシート関数が
 ・A列が 0 なら「0」とする
 ・A列が 1 未満なら「1」とする
 ・それ以外は、A列の値をそのまま出力
という扱いになっていますが、A 列が負数だった場合の動作は、
本当にそれで正しいのでしょうか?


元の値が -0.6 なら「1」となり
元の値が -0.3 なら「1」となり
元の値が 0.0 なら「0」となり
元の値が +0.3 なら「1」となり
元の値が +0.6 なら「1」となり
元の値が +0.9 なら「1」となり
元の値が +1.2 なら「1.2」となる…?



> これを整数以外だったら、要は小数点を含んでいたら全て、切り上げの整数にする というものにしたいです。
整数への切り上げを目的とするなら、数式としては
 【案1】 "=ROUNDUP(RC[-1],0)"
 【案2】 "=CEILING.MATH(RC[-1],1,0)"
 【案3】 "=CEILING.MATH(RC[-1],1,1)"
 【案4】 "=CEILING(RC[-1],1)"
を使えば OK です。

今回は案1で良いでしょう。
ROUNDUP は、桁数指定での切り上げ処理を意味します。

案2〜案4については、桁数を指定した切り上げ処理ではなく、
「第二引数の倍数」単位への切り上げ処理を行う関数です。

そして案2と案3は、負数を切り上げる場合の丸め方向が異なります。
-1.5 → -1 とするのか案2、
-1.5 → -2 とするのか案3です。

ただし、CEILING.MATH は Excel 2013 からの機能です。
案4であれば、それ以前のバージョンでも動作しますが、
こちらは丸め方向を選択できず、案2と同じ結果を返します。
引用返信 編集キー/
■75983 / inTopicNo.4)  Re[2]: エクセルで小数点以下を切り上げするVBA
□投稿者/ vba初心者 (2回)-(2015/05/21(Thu) 11:17:01)
No75979 (kaina さん) に返信
> Roundup関数ではあなたの要件は満たせませんか?
> 後、分類が[.NET全般]になっていますよ。
>  ご指摘ありがとうございます。
引用返信 編集キー/
■75985 / inTopicNo.5)  Re[3]: エクセルで小数点以下を切り上げするVBA
□投稿者/ vba初心者 (4回)-(2015/05/21(Thu) 11:20:53)
□投稿者/ 魔界の仮面弁士さん

ありがとうございます。いろいろ教えて頂き無事できました(*´∀`*)

Roundupが参考書にかかれて無く、まだまだ勉強不足です。。。
魔界の仮面弁士さん のようになれるよう精進します。
ありがとうございました(*´∀`*)
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -