- 締切済み
Excelユーザー定義「#.0"kg"」に代るもの
「0.1」「1.0」と入力したときそれぞれ 「0.1kg」 「1.0kg」 というように自動表記されたいExcel2019の書式設定のユーザー定義についてですが、 「#.0"kg"」 という形式はあまりスマートではないでしょうか? また 「G/標準"円"」 という形式ですと、計算は一応できるようですが(「#.0"kg"」も同様)、エラー表示がついてしまいます。 小数点(第一の位)が付く数値入力の語尾に自動で「kg」とつき、かつ、エラー表示がでないようにするユーザー定義を教えてください。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- asciiz
- ベストアンサー率70% (6821/9700)
>「(0以上正の値の書式);(負の値の書式)」 >「(正の値の書式);(負の値の書式);(0の時の書式)」 >という形になるのはなぜなのでしょう? この動作は、自然界の物理現象を表したような原理原則などではありません。 「Excelを作ったMicrosoftがそう決めたから、そうなっている」ものです。 Excelを作ったプログラマが、 「1セルで値により別の書式を適用できるような仕組みを作ろう」 →「書式の区切りはセミコロン記号にしよう」 →→「セミコロンで区切られた書式が2つの時はこういう使い分け、セミコロンで区切られた書式が3つの時はこういう使い分けにしよう」のように考えて、実装したのでしょうね。 >「;""」の数によって変わるように見えるのですが 変わるのですが、そう解釈すると、先々誤解を生みます。 「セミコロンで区切られた書式パートがいくつあるか」を数えてください。 その数が、1つ、2つ、3つ、4つの場合で、動作が変わります。 書式パートが1つであれば、常に適用されます。 書式パートが2つであれば、それは「0以上」と「マイナス」に場合分けされて、適用されます。 書式パートが3つであれば、それは「プラス」と「マイナス」と「ゼロ」に場合分けされて、適用されます。 書式パートが4つであれば、それは「プラス」と「マイナス」と「ゼロ」と「文字列」に場合分けされて、適用されます。 (書式パート5つ以上は、設定できません。) Microsoftがそう決めた物を、「うまく使ってやる」んです。 その他の書式設定文字も、全てMicrosoftが決めたものですし。 決められた中で、出来るだけ簡潔に書くにはどうしたらいいか、という感じで考えますね。
- asciiz
- ベストアンサー率70% (6821/9700)
>今回は0と正数(マイナスは不要)しか使いません。 セミコロン区切りで書式設定を使い分ける場合、2つ・3つのパターンは以下の様に解釈されます。 2分割パターン「(0以上正の値の書式);(負の値の書式)」 3分割パターン「(正の値の書式);(負の値の書式);(0の時の書式)」 なので、0と正数で使い分けたい、という場合には、後者の3分割書式を使う必要があります。 >数値のあと、語尾に漢字(文字列)をつける場合の「スマート」なユーザー定義を教えてくださいませ。 で、0の時の表示はどうしますか? 「0冊」がいいのか、何も表示しないのがいいのか。 「0冊」がいいのであれば、複数書式の使い分けは必要ありません。 書式設定「0"冊"」だけでカバーできます。 表示なしがいいのであれば、3分割書式を使います。 きっちり書けば「0"冊";"";""」となります。 マイナスまたはゼロの時、何も表示しない「""」という書式にする、という訳ですね。 で、実は何も表示しないという""は、省略できます。 そうするとこちらの書式設定は、「0"冊";;」と書くのでも良いです。 ---- 書式設定「#」と「0」は、どちらも数値表示に使いますが、ゼロが消えて困る場合には、「0」を使います。 整数部にも小数部にも、「#」では不要な桁は消える、という動作をします。(逆に言うと「0」指定した桁は必ず0か数字が表示されます。) ただし書式で指定した桁で足りない場合、整数部では普通に表示されるのに対し、小数部では丸め(四捨五入)が行われます。 書式設定「##.###」の場合 100.2→「100.2」 10.02→「10.02」 1.002→「1.002」 0.1002→「.1」(小数点以下3桁に丸めると 0.100 なので、その0は消えてしまう) 書式設定「00.000」の場合 100.2→「100.200」 10.02→「10.020」 1.002→「01.002」 0.1002→「00.100」 まあ通常、整数部が全く何もないと困るので「0」指定、小数部は消えてもいいので「#」指定、とかするのが一般的かもしれません。 →書式設定「0.###」
補足
>「0冊」がいいのか、何も表示しないのがいいのか。 「冊」をつけるのが目的ですが このような場合には「0"冊"」でよいことがわかりました。 ところで、ユーザー定義の場合、セミコロンで区切るようですが、セミコロンが区切る意味について教えてください。 >2分割パターン「(0以上正の値の書式);(負の値の書式)」 >3分割パターン「(正の値の書式);(負の値の書式);(0の時の書式)」 「0"冊";"";""」 これは後者のパターンのようですが、確かに「1」と入力したら「1冊」となり、「-1」「0」では空白になります。 2分割パターンの「0"冊";""」も同様、「0」「1」と入力したとき「0冊「1冊」となりますが、マイナスでは空白となります。 一見、2つのパターンはいずれも「;""」の数によって変わるように見えるのですが 「(0以上正の値の書式);(負の値の書式)」 「(正の値の書式);(負の値の書式);(0の時の書式)」 という形になるのはなぜなのでしょう? 説明が難しいのですが、言わんとしていることはおわかりになると思います。
- asciiz
- ベストアンサー率70% (6821/9700)
>0だと消えるということですね。なので「1冊」としたい場合 >「#"冊"」 >となる、ということですね。 まあその通りなのですが、「#"冊"」の場合、「1」入力は「1冊」でOKですが、「0」入力は「冊」という表示になります。 つまり"冊"は常に表示され、0が消えます。 これはカッコ悪くないでしょうか? これに関して、別の解決方法があります。 書式設定は、セミコロンで区切って、 「(正の値の書式);(負の値の書式);(ゼロ時の書式);(文字列時の書式)」 という場合分け表示をすることができ、後ろで不要な部分は省略できることになっています。 そうすると例えば、 「#"冊";#"冊不足";""」 こういう書式設定をすると、 (入力) → (表示) 「5」→「5冊」 「-3」→「3冊不足」 「0」→「」(表示なし) この3つを自動的に表示切り替えする、といったことができます。 ※負の値の書式では、明示的にマイナス記号を書かなければ、マイナス記号は出ません。 例えば、決算赤字 -5000 という計算結果を、 ▲5000 と表記する場合に使えるわけです。
補足
>0」入力は「冊」という表示になります。 あっ、そうでした。「スマート」じゃないです(笑) ユーザー定義は複雑ですが、こういう効果もあると知るとますます知りたくなりますが、今回は0と正数(マイナスは不要)しか使いません。 なので、数値のあと、語尾に漢字(文字列)をつける場合の「スマート」なユーザー定義を教えてくださいませ。
- asciiz
- ベストアンサー率70% (6821/9700)
>「#.0"kg"」 これだと「0.1」を入力したときに 「.1kg」になるので、 書式設定は「0.0"kg"」が良いと思います。 >エラー表示がついてしまいます。 どこにどのようなエラーが付きますか? "kg"表示はあっても、セルに入っているのは数値なので、他セルでの加減乗除などは自由にできるはずですが…。 表示書式を設定したうえに、「0.1kg」とか入れてしまっていませんか? 「0.1kg」という入力は文字列であるので、数値演算しようとするとエラーになります。 書式設定として「0.0"kg"」と設定しておいて、「0.1」だけを入力するのが正しい使い方です。 0が入っているときに「#DIV/0」とかになるなら、それは計算セルの方でゼロ割りをしないようにif()など組み合わせなければいけません。 書式の問題ではないはずです。
補足
>これだと「0.1」を入力したときに 「.1kg」になる ほんとですね。「0.0"kg"」で了解しました。 だんだんわかってきました。 0だと消えるということですね。なので「1冊」としたい場合 「#"冊"」 となる、ということですね。 エラーについては「#.0"kg"」のときについたものですが、 正しい定義でやり直したところエラーはついてないです。 ありがとうございました。
お礼
ユーザー定義にこのような法(プログラム)があるとは存じませんでした。 ユーザー定義についていろいろ検索しても、このような初歩的、基本なことを教えてくれるサイトはありませんでした。 ただ、このような法則を知れば、よくわからないデフォルトで組み込まれている難しい文字列も理解できそうな気がします。