Excelで、セルに小数点2桁以上入力された場合は条件付き書式でセルを赤くしたいのですが、数式がわかりません。
ぜひ、宜しくお願いします。
インターネット検索で近しいものは見つけられたのですが、解説もなく・・・
=LEN(TEXT(MOD(A1,1)"."&REPT("#",3)))-1
解釈できたのは、MOD関数でA1セルのあまりを取得して、
あまりの中で、小数点(.)以下3桁を指定している・・・?
ようには見えるのですが、他の関数が何をやっているかもわからず。
上手い具合に、自分で編集することもできない状況です。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
ベストアンサー
簡単な判別方法としては「100倍して10で割った余りを求める」です。
例①:1 × 100 ÷ 10 = 10あまり0
例②:1.5 × 100 ÷ 10 = 15あまり0
例③:1.05 × 100 ÷ 10 = 10あまり5
例④:1.005 × 100 ÷ 10 = 10あまり0.5
つまりあまりが0なら小数点1桁以内、0以外は2桁以上とわかります。
余りを求めるにはMOD関数を利用します。
例えばA1セルを100倍して10で割った余りを求めるなら=MOD(A1*100,10)
という式になります。
これが0でないときという条件になるので、例えばA1セルの条件付き書式に=MOD(A1*100,10)<>0
とすると目的の条件付き書式になると思います。
お試しください。
余談ですが、例えば小数点以下3桁の判断の場合は1000倍した値を10で割った値で判断することになります。
このようにセルの値に10のn剰を掛けた値に対して10で割った余りを求めることになりますので、判定する少数桁数が変動するようでしたら=MOD(A1*10^2,10)<>0
としたほうが桁数調整しやすいかもしれません。
参考までに。
(追記)
追記分を見落としておりました。
=LEN(TEXT(MOD(A1,1),"."&REPT("#",3)))-1
について、解説はほとんどtakitoさんがしてくれている通りだと思います。
ただ、この式で注意しなければいけないのは小数点以下3桁目までしか見ないということです。
試しに1.0005
などをこの式にかけてみるとわかりますが、小数部.0005
は.000
までしか判断材料とならないため.###
書式により0
に変換されます。
※書式変換の際に少数以下4桁目の丸め処理もしてくれているので、.0006
なら.001
の扱いとなって3桁と返してくるんですけどね(^-^;
小数桁数がどれくらいまであるのか把握できているのであれば#
の数を増やすことで対応できますが、根本的な解決にはならないですね。
というわけで、ご利用に際は注意が必要です。
投稿2017/12/06 07:06
編集2017/12/07 00:50総合スコア3020
0
=LEN(TEXT(MOD(A1,1)"."&REPT("#",3)))-1
TEXT関数が成立していない(カンマが無い)のでその点を修正
LEN(TEXT(MOD(A1,1),"."&REPT("#",3)))-1
これがやろうとしていることは
MOD関数を使って整数1で割って余りを出す → 小数点以下を抽出
TEXT関数で".###"の書式にあてはめる → 小数点以下4桁目以降をカット
LEN関数で全体長さから小数点(.)の1文字分を差し引く → 最終の長さが求まる(0~3)
です
これで小数点以下桁数が3以上のものは「3」となります
以上で理解できそうでしょうか?
投稿2017/12/06 07:19
総合スコア3116
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
文字列としてはどうでしょうか?
例えば"3.281" だと
小数点の位置を割り出す。
その後、そこから次の位置 ( pos + 1 )から 最後までを取得し、
その桁数が2以上なら セルを赤くする...
みたいにすればいいのでは?
もし、一般ユーザみたいにExcel本体のっていう意味なら
「Excel 小数点」で検索した結果、
がヒットしました。
これらはどうでしょうか?
これを赤くするなら、
はどうでしょうか?
小数点があるやつになっていますが、
条件の項目を見ると
= A1 - INT(A1) > 0
となっています。
INT() はたぶん整数値に変換するやつだと思います。
で、これを 小数点2以降ってしたいのですよね。
小数点2以降ってことは...
再度、質問内容を読み返したところ、
"=LEN(TEXT(MOD(A1,1)"."&REPT("#",3)))-1"
とありますね。
でしょうか。
たぶん、
"."&REPT("#",3)
の部分は 文字列の連結かなと。
VBAでは
"Hello " & "VBA"
のようにすれば
"Hello VBA" みたいになります。
その意味で、
小数点プラス数値( ワイルドカードって言う感じ? ) と、MODで割り出した値をつけて
MODで割り出した数値 + "." + ワイルドカード的なもの
を文字列 ( TEXT() ) として固めて、その長さ ( LEN() ) の長さから -1 している
のだと思います。
投稿2017/12/06 06:14
編集2017/12/06 07:15総合スコア4962
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/06 07:10

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
Excel 小数点の桁数判定
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/07 01:19
2017/12/11 10:16
2017/12/14 04:27