- ホーム >
- 応用操作 >
- エクセル(Excel)編 >
文字列を数値に変換する ~ 数値として認識されないセルの変換 ~
基本操作編からここまでの応用操作編にかけて、幾度となく触れてきたのが、Excelにおける「文字列」と「数値」の認識についてです。
もう十分理解されているとおり、セルの値が「文字列」認識であれば計算に利用できなかったり、逆にセルに数値を入力すると、強制的に「数値」認識にされて値が右揃えにされたりします。
この右揃えこそがそのセルの値が文字列認識なのか数値認識なのかを見分ける簡単な方法になりますが、やはり問題になるのは、「文字列」として認識されていて計算に利用できない場合です。
なかでも注意が必要なのは、区切り位置の指定 でも学習しましたが、自身で作成したシートではなく、他者が作成したExcelファイルを利用する場合や、CSVファイルをExcelで利用する場合です。
そこで本項では、もう一度、
文字列として認識されてている数字を「数値」としてExcelに認識させる方法
についてまとめて学習したいと思います。
下図のように、先頭にゼロを含む数や大文字の数字など、いろいろなパターンの数字が文字列認識されている場合を考えてみましょう。
この場合は中央揃えになっているので、文字列認識を判別する方法は、セル左上の三角形の緑色マーク(エラー表示)が目印になります。
こうした文字列認識の数字は、例えばSUM関数で和を求めようとしても、下図のように「0」になってしまい計算してくれません。
このように計算結果が「0」になるのであれば明らかに間違いに気がつきますが、数値認識のセルの中に1つでも文字列セルが混じっている場合は、なかなか間違いに気づくのは困難になります。
上図の計算の場合、「10+10+10+10=40」でなければなりませんが、文字列が混じっているために値が「30」になっています。請求書などを作成する場合では、こうしたミスが大きな問題に発展しかねないのです。
そうならないためにも、ここでしっかりと文字列を数値に変換する方法をおさらいしておきましょう。
まず、もっとも単純な方法は、手で直接打ち直す方法があります。文字列認識されているセルに同じ値を手打ちで上書きすれば、セルが自動的に数値変換してくれます。
ただし、セルの書式設定で当該セルに「文字列」を指定している場合は、文字列のまま変更されません。そのため、他人作成のファイルを利用する場合などには注意が必要です。
また、直接入力は桁数の少ない数字には有効ですが、桁数が多かったりセル数が多くなるとミスが発生する可能性が高くなります。いずれにせよ、安全な方法ではありません。
次に、書式のユーザー定義 で学習したユーザー定義で、数値を置き換える記号「#」を使って変換する方法がありますが、この方法も、セルの書式設定で「文字列」を指定している場合は、文字列のまま変更されません。
また、シングルクォーテーション「'」によって文字列認識になっている値を変換することもできません。
通常、数字の先頭に「'」を付加する作業を行うことはありませんが、これは、CSVファイルをインポートした場合などによくみられます。とにもかくにも、
文字列として認識されている数字は、セルの書式設定を変更しても数値変換できない
ということになります。したがって、文字列認識のセルに対して、いくら書式設定を「標準」や「数値」に変更しても、セルの値は文字列認識のままというわけです。
では、どのようにすれば数値変換できるのかというと、基本的には4つの方法しかありません。
まず1つ目の方法は、値の「貼り付け直し」をすることです。
ただし、ここでも注意点があり、セル同士の結合 で学習した方法で、値をコピーして「形式を選択して貼り付け」より「値」を選択してもう一度貼り付け直すと、文字列のまま貼りついてしまいます。
文字列をそのままの値で貼り付け直すということなので当然といえば当然ですが、この場合は、「演算」の項目で「加算」を選択します。
すると、下図のように数値として値が貼り付きます。
つまり、値に対して何らかの計算を施すと数値認識に変化するということです。ですが、この方法にはさらに注意点があります。それは、
「加算」以外を選択して貼り付けてしまうと、値が変化してしてしまう
ということです。どういうことかというと、空白セルの「0」に加算をしたために値が変化しなかったからです。つまり、何も入力されていない「0」のセルにコピーした値を加算するので値がそのままというわけです。
したがって、「減算」、「乗算」、「除算」いずれも「0」に対してコピーした値の計算を行うので、必ず数字が変化することになるので注意してください。
また、この方法では、同じ位置に貼り付け直しをして変換することができません。何も値のないセルに貼り付けないと、入力されている値があれば、それに「加算」されてしまうためです。
そのため、列や行を追加して貼り付け直す必要があり、また、「加算」以外を選択して貼り付けてしまったり、必要な値の上に上書きして貼り付けてしまうなど、ミスの可能性は否定できません。
もっとも、この理屈を応用すると、同じセル(列)に値を貼り付け直すことは不可能ではありません。
例えば、数字の「1」をどこかのセルに入力してコピーし、変換したい範囲すべてに「乗算」で貼り付けるのです。つまり、「1」の掛け算なので値は変化しないわけです。
いずれにせよ、こうした操作に慣れていない場合は、他の方法を利用するほうが無難かもしれません。(「形式を選択して貼り付け」について詳しくは、基本操作の形式を選択して貼り付け を参照してください)
2つ目は、区切り位置の指定 で学習した、区切り位置指定ウィザードから数値に変換する方法です。
該当範囲を選択して、区切り位置指定ウィザードを開始します。
データのファイル形式の選択は、データを区切るわけではないのでどちらを選択してもかまいません。(文字列全体を選択するため)
そのまま「3/3」画面まで進みます。そこで、「列のデータ形式」に「G/標準」を選択し、「表示先」は同じセルを指定します。(ウィザードは何も変更することなく次に進めて完了します)
すると、選択した範囲が数値に置き換わります。
この方法は、前述のようにウィザードは何も変更することなくクリックだけして完了するだけで変換できるので、非常に簡単でまたミスもありません。
ただ、この方法は「列」に対して行う変換になるので、1列ずつしか変換することができません。効率性が悪いといえば悪いのが欠点です。
3つ目は、関数を使う方法です。
文字列として入力されている数字を数値に変換する関数は、「VALUE(バリュー)関数」になります。
VALUE関数は、基本操作編の その他の基本的な関数 で学習したとおり、セルの値(文字列など)を「数値」や「シリアル値」に変換することができます。
下図のように、関数の引数にはセルを指定するだけなので、指定したセルの値に応じた結果が返されます。
セルの値に応じた結果というのは、下図のように、文字列(の数字)は数値に、日付や時間はシリアル値に、変換できない値はエラーとなります。
あとはオートフィルで関数式をコピーしてそれぞれのセルに適用します。
このように、VALUE関数を使う場合は新たなセルに値を表示させることになります。変換は可能ですが、少々手間がかかります。そのため、貼り付け直しや区切り位置の指定のほうがはるかに楽です。
また、VALUE関数と似た関数にTEXT(テキスト)関数がありますが、この場合はTEXT関数を利用することはできません。
TEXT関数は、指定した表示形式に変換する関数で、指定したユーザー定義に変換させるイメージです。しかし、文字通りテキスト(文字列)に変換する関数なので、必ず文字列に変換されてしまいます。(TEXT関数については、TEXT関数 で詳しく解説します)
では、もっと楽な方法がないのかというと、それが4つ目の方法になります。
ここまで引っ張ってきましたが、恐らくもうお気づきのことと思います。
操作は非常に簡単です。文字列認識のセル(セル左上の三角形の緑色マークがあるセル)を選択すると、下図のような注意マークが表示されます。
このマークをクリックします。すると、リストメニューが表示され、このエラーに対して処理を行うことができるようになります。
ここで、「数値に変換する」を選択します。すると、これだけで文字列が数値に変換されます。
上記のように、この方法は1つのセルを選択した状態でも、複数のセルを範囲指定した状態でも表示されます。該当する範囲を選択した状態で「数値に変換する」を選択するだけで、すべて一発変換することができます。
この方法は、もっとも簡単で効率的な方法になります。ぜひ覚えておいてください。
更新履歴
- 2018年5月18日
- ページを公開。
参考文献・ウェブサイト
当ページの作成にあたり、以下の文献およびウェブサイトを参考にさせていただきました。
- 文献
- なし
- サイト
- なし
- 管理人のつぶやき
- Twitterのフォローお願いします!