(Excel)数値を文字列に変換する方法

 Excelで、セルに数値として記録されている値を文字列に変換する方法についてです。
 さらにカンマを入りの文字列にする例も紹介します。

「&""」を加える方法

 次の画像では、C3セルに次のような数式を入力してC6セルまでフィルコピーし、B列の数値を文字列に変換しています。

 C3セル(下方にフィルコピー)

=B3&""

 「&""」によって数値を空文字列(長さ0の文字列)と連結しています。これで数値が文字列に変換されます。



 次の画像は特殊な形式・値に対する例です。
 C3セルやC4セルの結果でわかるように、書式設定(表示形式)により表示されている文字(ここではカンマや「万人」)は変換後の文字列に含まれません。
 特定の書式を適用しない(セルを選択したときに数式バーに表示される)数値と同じような文字列が得られるとお考え下さい。


TEXT関数を使う方法

 次の画像では、上記例と同様にC3セルに数式を入力してC6セルまでフィルコピーし、B列の数値を文字列に変換しています。

 C3セル(下方にフィルコピー)

=TEXT(B3,"@")

 TEXT関数は、ある値(第1引数)に特定の表示形式(第2引数)を適用した文字列を取得する関数です。
 第2引数を「"@"」とすることで第1引数の値がそのまま文字列になります。



 次の画像は特殊な形式・値に対する例です。
 上記の「&""」の例とだいたい同じですが、空白セルが0になるのが注意点です。

 なおCELL関数によりセルに適用されている書式をある程度(カンマの有無など)把握できますが、完全に識別することはできないため、TEXT関数と併用しても「セル表示されている見た目のまま文字列にする」というのはやはり困難です。

カンマ入りの文字列にする方法

 ここでは数値をカンマを入れた文字列に変換する方法を紹介します。
 なお数値データのみを対象とし、特殊な形式・値に対する結果は省略します。

TEXT関数を使う方法

 次の画像では、B列の数値(すべて整数)をカンマ入りの文字列に変換しています。

 C3セル(下方にフィルコピー)

=TEXT(B3,"#,##0")

 第2引数の「"#,##0"」は、3桁のカンマ区切りをする表示形式を表します。
 ただし「"#,###0"」などとしても結果は変わらず、カンマは3桁区切りにしかできません。

FIXED関数を使う方法

 次の画像でも、B列の数値(すべて整数)をカンマ入りの文字列に変換しています。

 C3セル(下方にフィルコピー)

=FIXED(B3,0)

 FIXED関数は数値を文字列に変換する関数です。
 第2引数で小数点以下の桁数を、第3引数でカンマの有無(省略でもカンマが入る)を指定できます。
 あまり有名でない関数ですが、TEXT関数より少し式を短くできます。

小数部分がある数値に対応する例

 次の画像は、上記のTEXT関数の式をさまざまな数値に適用した結果です。
 整数については問題ありませんが、小数部分が丸められてすべて整数になっているのがわかります。

 


 そこで次の画像では「=TEXT(B3,"#,##0.####")」のようにして、最大で小数点以下4桁まで文字列にするようにしています。
 数値がすべて非整数ならいいのですが、整数にも小数点がついてしまうのが欠点です。

 画像は省略しますが「=TEXT(B3,"#,##0.0000")」のようにすると一律小数点以下4桁に(ゼロ埋めして)揃えられます。FIXED関数を使った場合も小数点以下の桁数を一律に揃えることはできますが、いずれにしても「単にカンマを入れたような文字列」を得ることは基本的にできません。



 そこで次の画像では各種の関数を組み合わせて、他の部分を変えずに「単にカンマを入れたような文字列」に変換しています。

 C3セル(下方にフィルコピー)

=FIXED(TRUNC(B3),0)&
IFERROR("."&REPLACE(B3&"",1,FIND(".",B3&""),""),"")

 「FIXED(TRUNC(B3),0)」で整数部分にカンマを入れた文字列を取得しています。
 一方で「"."&REPLACE(B3&"",1,FIND(".",B3&""),"")」により整数部分を除いた文字列、つまり小数点以下の部分を取得し(小数部分がないとエラーになるのでIFERRORで空文字列に変換)、最後に「&」でつないでいます。
 小数部分の取得については「MOD(B3,1)」などを利用してもいけそうですが数値計算的にやると計算誤差でおかしくなることが考えられるので、いったん全体を文字列にした結果から求めるようにしています。