エクセルの数値を指定した桁数の文字列に変換

以前、SPSSの結果から論文用にテーブルを作る際、エクセルの数値を指定した桁数に変換するためにこれまでround関数を用いていた話をしました。
しかし、この関数自体は数値を返す関数なので、例えば少数第2位を四捨五入して少数第1位まで求めたい際に、少数第1位が0になってしまうと、末尾の0は消えてしまい、整数部分しか表示されません。

0009_1.jpg
B2のセルをround関数で少数第2位が四捨五入され、
少数第1位が0となったため、整数部分のみ表示される

C2セルの書式設定で表示形式を「数値」にし、「少数以下の桁数」で1を指定すれば、C2セルの見た目は少数第1位の0まで表示した目的の形式になりますが、以前紹介した&演算子とC2セルの参照の組み合わせで(標準偏差)のような表示を自動的に作ろうとすると、()内の数値は結局少数第1位の0が消えて、整数部分のみとなり、意味がなくなってしまいます。

0009_2.jpg
C2セルの書式設定を変えれば少数第1位の0も表示されるが、
C2を引数に用いた数式セルD2では少数第1位の0が表示されない

なので、「あるセルの数値を、四捨五入して指定した桁数までに変換し、文字列として表示する」ことができれば、本来の目標は達成です。

text(数値, "表示形式")関数


text関数は、第一引数として指定した数値(セル内容)を、第二引数として指定した表示形式の文字列に変換して返す関数です。表示形式を指定する書式を押さえておけば、様々な数値をうまく表示できるようになります。

例えば、上の例で目的の表示形式を達成するには、

=text(B2, "0.#")

と入力すると、次のE2セルのような少数第1位まで表した文字列になります。

0009_3.jpg
text関数を使うと、B2セルをE2セルのように、少数第1位の0も含めて表示した文字列に変換できる。そのため、E2セルを&演算子で結合して作ったF2セルも、少数第1位の0が表示される。

このE2セルを、先程と同じように&演算子を用いて()ではさむと、上のF2セルのようになり、()内の数字も少数第1位の0が残ったままになりますね。

表示形式については、おもに0と#の使い方がコツになります。
各位の値の表示形式を0と#で現すのですが、

0数値の桁数が表示形式の0の桁数より少ない場合、
表示形式の桁まで0を付加
#入力した数値の桁数が、小数点のいずれの側でも表示形式の#より少ない場合、0は表示しない

というルールになります。

例えば、
0009_4.jpg

という表に対して、

=text(第一引数, 第二引数)

の結果は次のようになります。

第二引数第一引数使い所
A1B1C1
"#.000"8.900.03511.375p値 (1未満の数)
"0.0"8.90.011.4記述統計量
"0.##"8.90.0311.38

なかなか汎用性が高く、使い勝手のいい関数です。特に、p値のような、「1未満しか取り得ない値の整数値は省略して表記する」という規則を実現できるのはなかなかいいなぁと思いました。

そういえば、「人間は脳の10%しか使っていない」という有名な迷信がありますが、「人間はエクセルの機能の10%も使えていない」という言葉もあるようです。実際にエクセルの機能は、このような関数だけでなく、マクロのことを考えても、その機能を完全に使いこなせているとは言い難いように思いますね。エクセルの機能を色々使いこなしていくと、いろんな作業がもっと効率化できるかもしれません。


スポンサーリンク



人気ブログランキングへ

この記事へのコメント

スポンサーリンク