
前回(Excelで小数点以下がある時だけ表示する方法(点あり))は、小数点以下が存在する時だけ表示するが、小数点は常に表示されるという方法でした。
今回は、小数点以下に値が無い時には小数点も表示しないように設定してみます。
対象のセルを1つだけ選択して、リボンの「ホーム」ページから「条件付き書式」→「ルールの管理」を選択します。

「新規ルール」を選択。

「数式を使用して、書式設定するセルを決定」を選択し、「=IF(RIGHT(TEXT(B3,"0.#"),1)=".",TRUE,FALSE) 」と入力、「書式」を選択します。

上の図にも書いてますが、B3の部分は選択中のセルにします。
「表示形式」を表示して、左側のリストから「数値」を選択。「小数点以下の桁数」を0、「桁区切り(,)を使用する」をオン、負数はマイナス記号で赤文字に設定して、「OK」を選択します。

「OK」を選択します。

再び「新規ルール」を選択します。

「数式を使用して、書式設定するセルを決定」を選択し、「=IF(RIGHT(TEXT(B3,"0.#"),1)=".",FALSE,TRUE) ) 」と入力、「書式」を選択します。

式の注意点はさっきと同じで、変わった箇所はTRUEとFALSEを入れ替えただけです。
「表示形式」を表示して、左側のリストから「ユーザー定義」を選択。種類に「#,##0.#;[赤]-#,##0.#」と入力します。

ここで種類に入力するのは、前回(Excelで小数点以下がある時だけ表示する方法(点あり))と同じ書式です。なので、小数点以下の桁数が2ならば小数点以下にある#の数が2つ、3つなら3つとなります。
「OK」を選択。

「OK」を選択。

設定したセルをコピーして、他のセルに書式を貼付けします(下記の図は設定方法の一部)。

その結果、このように表示されるようになります。

うん、意図した通りになりましたね。
では、少しだけ解説します。
今回は、Excelの条件付き書式の設定機能を使用して、小数点以下が存在する場合と、存在しない場合で別の書式を設定するようにしています。それを判定する式が「=IF(RIGHT(TEXT(B3,"0.#"),1)=".",TRUE,FALSE)」になります。
TEXT関数で数値を文字列に変換、第二引数の書式を「0.#」とすることで、小数点以下がある場合には「10.1」、無い場合には「10.」のようになります。そこからRIGHT関数で右側1文字を取得し、IF関数でそれが小数点(.)であるか判定し、小数点であればTRUEを、それ以外であればFALSEを返すようにします。
条件付き書式の設定条件は「指定した式の結果がTRUEになる場合に設定した書式を適用する」なので、この場合は小数点以下が存在しない場合にのみ指定した書式(普通の数値の書式設定)が設定されることになります。
後は、これを応用して少数点以下が存在する場合の書式を追加すれば良い訳です。
小数点以下の有無の判定式を「書式整形付きの文字列変換&文字列から一部取得」としましたが、他にも判定方法はあると思います。こういう手段をとったのは、まぁ、私の趣味ですね。
最後の結果に不満があるとすれば、小数点以下がある場合と無い場合で数値の位置がずれることです。と言っても、そこまで拘るなら文字のフォントをMS ゴシックとかにした上で整数部と少数部を分離して別のセルに配置して〜 なんて事をしなければならず、それをすると縦計の計算に一工が必要だったりと手間が掛かってやってられません。
・・・そりゃ、やればできますけどね。
前回:Excelで小数点以下がある時だけ表示する方法(点あり)
投稿記事の一覧:http://harikofu.web.fc2.com/
--- blog end —
スポンサードリンク


