argius note

プログラミング関連

Excelの書式"表示設定"で桁の異なる数値を見やすくしてみる

Excel2010を触ってみたので練習を兼ねて。たぶん少なくともExcel97以降、もしかしたらもっと前のバージョンでも使えるかも知れません。


ある数値項目の列の書式を、「カンマ区切りで、小さな数値は小数第3位まで表示するけど、100以上の大きな数値は小数点以下は端数なので省略して表示」させるようにしてみます。
最終的に下のようになるようにします。

        0.001
        0.01
        0.1
        1.0
       10.0
      100
    1,000
   10,000
  100,000
1,000,000

せっかくなので、表示形式について、ちょっとまとめながら書いておきます。


私も書式設定の細かいルールは記憶してはいないので、どうするかというと、[セルの書式設定]の[表示形式]タブを開き、[分類]の既定の書式を選択&設定してから、"ユーザー定義"を選択すれば、ユーザー定義書式の雛形が作成されます。
たとえば、日付の"2001/3/14"を選択してからユーザー定義を選択すると、"yyyy/m/d;@"となります。詳しいところは正確ではありませんが、日付ならば"yyyy/m/d"形式で、そうでなければ文字列(@)として表示、という意味です。
これを、月日を常にゼロ埋めして区切りをハイフン(-)にしたい場合は、

yyyy-mm-dd;@

とします。最後の";@"は無くても同じ結果になります(たぶん)。この書式にした場合、2001/3/1は"2001-03-01"になります。


こんな感じで、既存の書式をちょっとずつカスタマイズすることで、好みの書式に近づけることができます。


では目的の書式を考えてみます。

まずは、「カンマ区切り」「小数点第3位まで表示」は、分類の"数値"の"小数点以下の桁数"を"3"にし、"桁区切りを使用する"をチェックします。この状態でユーザー定義を選択すると、"#,##0.000_ "(末尾にスペースが付く)が得られます。同様にして、小数なしの場合は"#,##0_ "が得られます。
小数の不要なゼロをスペースにしたい場合は、"0"の代わりに"?"を配置します。つまり、"#,##0.0??_ "とします。
これだと、ちょうど10などの場合でも"10.0"となってしまいますが、今のところどうやるかは分かりません。分かったら追記するかも知れません。


次に、条件によって書式を変えるには、

[条件式]表示形式1;表示形式2

のようにします。意味は、"if [条件式] then 表示形式1 else 表示形式2"です。
今回の場合は、"[>=100]#,##0_ ;#,##0.0??_ "となります。


最後に、100以上の場合に桁がそろわないのを何とかします。単に半角スペースをつければ、空白を埋めることができます。ただし、コピーすると余計なスペースがついてきてしまうのが欠点。


ということで、最終形はこうなりました。(やはり末尾にスペースが付くので注意)

[>=100]#,##0    _ ;#,##0.0??_