質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

4回答

666閲覧

EXCEl 順番の切り上げをしたい

yamaguti

総合スコア185

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2019/03/19 04:28

編集2019/03/19 05:46

順番の切り上げをしたい

お世話になっております。

特殊な切り上げなのですが、2.00005で単純に関数で切り上げをするは簡単なのですが
下の桁数から、少数点第一位まで、順番に切り上げをしたいです(桁数はバラバラ)

イメージ
2.00005
2.0001
2.001
2.01
2.1

マクロかなにかを組む必要があるのでしょうか。
それとも関数で処理することは可能でしょうか?

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

特殊な切り上げ桁数はバラバラの意味がよくわかりませんが、ROUNDUP関数で要望どおりの値は出ますね。

EXCEL

1=ROUNDUP(2.00005,4) 22.0001 3=ROUNDUP(2.00005,3) 42.001 5=ROUNDUP(2.00005,2) 62.01 7=ROUNDUP(2.00005,1) 82.1

投稿2019/03/19 04:53

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttyp03

2019/03/19 04:54

あ、これはワークシート関数です。
ttyp03

2019/03/19 04:55

VBAからでもWorksheetFunctionに用意されているので、そのまま使えますね。 Application.WorksheetFunction.RoundUp(x, n)
yamaguti

2019/03/19 05:05

ありがとうございます。 桁数がバラバラというのは、列に入っている数値の桁数がバラバラということです。
ttyp03

2019/03/19 05:08

で、解決できたのでしょうか?
ttyp03

2019/03/19 05:13

おまけのVBA v = 2.00005 vs = CStr(v) vl = Mid(vs, InStr(vs, ".") + 1) For n = vl To 1 Step -1 Debug.Print Application.WorksheetFunction.RoundUp(v, n) Next
yamaguti

2019/03/19 05:23

ありがとうございます。解決できました。
guest

0

A1に値、A2に以下の式を入れA3以降にコピーしていきます。

Excel

1=IF(A1="","",IF(LEN(A1)-FIND(".",A1)-1<=0,"",TEXT(ROUNDUP(A1,LEN(A1)-FIND(".",A1)-1),"0." & REPT("0",LEN(A1)-FIND(".",A1)-1))))

投稿2019/03/19 05:41

torisan

総合スコア678

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

小数点以下の桁数を求めて、その桁を無条件に切り上げるようにします。
A列に値が入ってるとして、B列に小数点以下の桁数を求める式、C列を結果とします。

Excel

1B:=IF(A1=INT(A1),0,LEN(MID(A1-INT(A1),FIND(".",A1,1),LEN(A1)-FIND(".",A1,1)))) 2C:=IF(B1>0,ROUNDUP(A1,B1-1),A1)

投稿2019/03/19 05:24

編集2019/03/19 05:51
sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

10000倍して四捨五入して10000で割る
1000倍して四捨五入して1000で割る
100倍して四捨五入して100で割る
10倍して四捨五入して10で割る
と、順番にやっていけばよろしい

投稿2019/03/19 04:35

y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

stdio

2019/03/19 04:51

他の言語で書くと float num = float(int(a * 100.0f + 0.5f)) / 100.0f; ってことですね^^
yamaguti

2019/03/19 05:23

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問