みなさんこんにちは、ZeroTerasu(@ZeroTerasu)です。
今回は、ウェブサイトから取得した数値データがエクセル上で数値として扱えないときの対処法について記事に致します。
今回の事案:ウェブサイトの表データをエクセルに抽出
↓今回抽出するデータは下記のデータです。抽出元のソースコードを確認しましたが、一般的な<table>タグに囲まれた表データです。(スクレイピング案件ではありませんので、詳細は割愛致します。)

上記の表をエクセルに通常のコピペすると、下記のようになります。

ここで、上記②の数値データを使用して、下記③のようにエクセル上で計算します。
「=114.893-115.523」の計算結果が得られると思いきや、「#VALUE!」数値エラーが発生してしまいました。

エラーの原因:ウェブサイトから取得したデータが「文字列」になっている。
セルに入力されたデータのデータ型を確認するには、「TYPE」関数を使用します。
「=TYPE(セル番号)」で、下記画像のようにデータ型に応じた数値を返してくれます。

上記画像の通り、下記のようなTYPE関数の結果が得られます。
①ウェブサイトから取得した数値のデータ型=「文字列」
②エクセル入力した数値のデータ型=「数値」
また、下記にて①の文字列化されている原因について解説します。
数値が文字列化している原因:ケース①「数値+文字列(スペース等)=文字列」
文字列になっているセルをダブルクリックしてみると、数値の後ろに半角スペースが入力されてしまっていることが分かります。
実は、エクセルでは「半角スペース=文字列」として認識されます。
また、エクセルでは「数値+文字列=文字列」として扱われますので、数値が入力されているはずのセルの計算が出来ない場合は、数値の他に何か隠れた文字が入力されている可能性があります。(例、スペース、アポストロフィ、ダブルクォーテーション 等)

数値が文字列化している原因:ケース②シングルクォーテーション

この場合は、「!」ボタンをクリック→数値に変換する(C) で解決できます。
その他、後述の解決方法でも解消できる可能性があります。
数値が文字列化している原因:ケース③=”数値”

この場合、後述の検索と置換にて、「”」を空白にすると数値として認識されます。
解決方法①:文字を削除
対象セルが複数存在する場合は、下記の手順に沿って文字を削除します。
ステップ1:文字をコピー

ステップ2:検索と置換
まずは、対象の文字が含まれている可能性があるセル全てを選択します。
そして、ショートカットキー(Ctrl + F)で表示される「検索と置換」の画面で、「検索する文字列」のボックスに、ステップ1で取得した文字を入力、「すべて置換(A)」をクリックすると、検索する文字列に入力した文字列が空白になります。
その結果、対象のセルが「数値」のみになりますので、数値データとして扱うことが出来るようになります。

解決方法②:「!」エラーチェックオプションで数値に変換
「!」マークが表示される場合、同様に「!」が表示されるセルを全て選択した状態で、「!」マークをクリックすると、下記の画像のように「数値に変換する(C)」のボタンが表示されます。こちらで数値に変換することが出来ます。

解決方法③:区切り位置ウィザード(最も汎用性が高い)
「データ」タブの「区切り位置」をクリック(ショートカットキーは、Alt→A→E)すると、区切り位置ウィザードが立ち上がります。
この機能は、コンマやスペースなどを起点にして、1つのセルに入力されているデータを分割することが出来る機能です。
既述した解決法で解消できない場合、この機能を使用すると、数値化を妨げているデータを切り分けることが出来る可能性があります。




解決方法④:「=VALUE(セル)」関数で数値に変換

総括:メモ帳にデータ貼り付け→テキストウィザードを使用して貼り付けするとほとんど解決できる。
解決方法③でも解消できない場合は、一旦ウェブサイトの情報をメモ帳に貼り付けてみて下さい。
その後、貼り付けたデータを全選択→コピー
そして、エクセルで貼り付ける際、「ホーム」タブ→「貼り付け」ボタン→「テキストウィザードを使用して貼り付け」を選択。
すると、解決方法③と同様の操作が出来ますので、同様の手順に沿って進めて下さい。
コメント