[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『JIS丸め関数を作りたい』(ぱっくん)
マクロ初心者です。 以下のシートにて計算していますが、重量と桁数を与えたら結果を 返してくれる関数を作りたいのですが、実力が無いのでサポート してもらえたらな・・と虫の良いことを考えています。
仕様: 1)有効数字が指定された桁数以下の場合は入力値 2)有効数値の指定された桁数+1桁の数値が5以外は有効数値を四捨五入 3)有効数値の指定された桁数+1桁の数値が5でかつ 有効数値の指定された桁数の数値が奇数或いは 有効数値の指定された桁数+2桁の数値がゼロ以外は、有効数値を切上げ 4)上記以外は有効数値を切捨て
<シート構成と関数式(桁数3桁の場合)> A B C D E G 1 重量 3桁目 4桁目 5桁目 加算値 結果 2 46.1 1 0 0 0 46.1 3 78.37 3 7 0 0.05 78.4
A:入力 B:有効桁数位置の一文字を取り出し C:有効桁数+1桁位置の一文字を取り出し D:有効桁数+2桁位置の一文字を取り出し E:切捨て(0)、四捨五入(5)、切り上げ(9)を小数位置を考慮してセット G:JIS丸め後の値
E2=IF(LEN(SUBSTITUTE(A2,".",""))<4,0, ;有効桁以下は加算なし IF(C2<>"5",5/10^(5-FIND(".",A2,1)), ;有効桁+1桁目が「5」以外は四捨五入(ex.0.05) IF(OR(MOD(C2,2)=1,D2<>0), ;有効桁+1桁目が奇数又は+1桁目が0以外は 9/10^(5-FIND(".",A2,1)), ; 切上げ(ex.0.09) 0 ) ) )
以上 よろしくお願いします。 (ぱっくん)
VBA関数のRoundがそのものだそうです。LOOKUPのエクセルでは、確認できません。 (LOOKUP) http://support.microsoft.com/default.aspx?scid=kb;ja;JP225330
さっそくの回答ありがとうございます。 Function jRound(y, n) jRound = Round(y, n) End Function
E2=jRound(A2, 0) ・・ということですか? 但し、有効桁数を渡すのは無理で、丸め位置は自分で計算してnを渡す ことが必要ですね。 上記のjRound関数内にロジック追加をどうすればいいかご指導して いただきたいです。おんぶに抱っこですいません。 (ぱっくん)
すでにお断りしていますが、わたしのエクセルでは、VBAのRoundは使用できません。 こちらが参考になると思いますので、ご覧下さい。↓ (LOOKUP) http://park7.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200501/05010109.txt
(LOOKUP)師匠 >わたしのエクセルでは、VBAのRoundは使用できません。 → 気分を損ねてしまったようでしたら非常に申し訳ありません。 ご紹介いただいたhpを確認させていただきます。 ※因みに、提示させていただいた仕様をROUND関数を使わないで実現化するコード を指導いただける方がおられたましたらお願いします。(マクロの勉強が目的です。) (ぱっくん)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.