月末の締め作業中に、販売管理システムから落としたCSVをダブルクリックで開いて、金額の列にSUM関数を入れた。表示されたのは「0」。
数字はちゃんと並んでいます。1,248行、どこを見ても空欄はありません。それなのに合計が出ない。私が最初にこれをやったときは、数式の範囲がずれているんだと思い込んで、=SUM(D2:D1249) を3回打ち直しました。範囲は合っていました。犯人は数式ではなく、CSVをExcelが読み込んだ瞬間の判定でした。
このトラブルの厄介なところは、画面上はまったく異常に見えないことです。エラー表示も出ないし、文字化けもしていない。見た目が完全に数字なので、「データ側の問題かもしれない」という発想にたどり着くまでに時間がかかります。
今回は、CSVから取り込んだ数字が文字列になってしまう現象について、切り分け → 原因パターンの特定 → 直し方の使い分け → そもそも壊さない取り込み方 という順番で整理していきます。すでに崩れたファイルを今すぐ直したい方は、後半の「直し方を3ルートから選ぶ」から読んでも大丈夫です。
まず30秒で切り分ける
原因を考える前に、本当に文字列化しているのかどうかをはっきりさせます。これを飛ばして直し方から入ると、別の原因だったときに時間を丸ごと無駄にします。
やること:COUNTとCOUNTAを並べて比べる
空いているセル2つに、次の2つを入力してください。範囲はご自分のデータに合わせて変えます。
=COUNT(D2:D1249)
=COUNTA(D2:D1249)
COUNTは数値だけを数えます。COUNTAは空欄以外すべてを数えます。この2つの結果を見比べると、状況が一発で分かります。
COUNTの結果
COUNTAの結果
判定
0
1248
列まるごと文字列。取り込み時に全部が文字として読まれている
1180
1248
一部だけ文字列。68件だけ何かが混ざっている
1248
1248
数値として認識されている。原因は別にある
| COUNTの結果 | COUNTAの結果 | 判定 |
|---|---|---|
| 0 | 1248 | 列まるごと文字列。取り込み時に全部が文字として読まれている |
| 1180 | 1248 | 一部だけ文字列。68件だけ何かが混ざっている |
| 1248 | 1248 | 数値として認識されている。原因は別にある |
3つ目、つまり両方の数が一致しているのに合計が合わない場合は、CSVの文字列化ではありません。四捨五入や小数の表示桁が絡んでいる可能性が高いので、そちらの記事を確認してみてください。

補助の確認方法
COUNTとCOUNTAで見当がついたら、次の2つで裏を取ります。
ステータスバーを見る 金額の列を範囲選択して、画面の一番下(ステータスバー)を見てください。数値として認識されていれば「合計:◯◯」が表示されます。「データの個数」しか出ていなければ、選択したセルの中に数値が1つもないということです。範囲選択するだけで確認できるので、これがいちばん速い方法です。
ISNUMBERで1セルずつ確かめる どの行が怪しいのかを突き止めたいときは、隣の空き列に次の式を入れて下までコピーします。
=ISNUMBER(D2)
TRUEなら数値、FALSEなら文字列です。FALSEの行だけフィルターで抽出すれば、混入している行の特徴(特定の支店だけ、特定の月だけ、など)が見えてきます。1000行を超えるデータでは、この「FALSEだけ抽出」がかなり効きます。
なお、セルの左上に緑の三角が出ていれば、Excelが「数値が文字列として保存されています」と教えてくれている状態です。ただし、この三角は設定によっては表示されませんし、桁区切りカンマ付きのデータでは出ないこともあります。出ていれば文字列化確定、出ていなくても安心はできない、という位置づけで見てください。
なぜCSVだと文字列になるのか
理由はシンプルで、CSVというファイル形式には「型」の情報がないからです。
CSVの中身は、拡張子を.txtに変えてメモ帳で開くと丸見えになります。実際に開くと、こんな行が並んでいるだけです。
伝票日付,得意先,商品コード,金額
2026/05/01,山田商事,00123,"1,200"
2026/05/01,佐藤工業,00456,"2,450"
ここには「金額の列は数値です」という宣言がどこにもありません。あるのは、カンマで区切られた文字の並びだけです。だからExcelは、開くときに1セルずつ「これは数値か、文字列か、日付か」を自分で判断するしかない。この推測が外れたときに、今回のトラブルが起きます。
原因の根っこは、数字が文字列になっているという現象そのものです。CSV特有の話に見えて、実は同じ問題の入口違いなので、基本の見分け方はそちらの記事が詳しいです。

文字列化するCSVには5つのパターンがある
ここが今回いちばん伝えたいところです。同じ「文字列化」でも、原因のパターンによって直し方が変わります。VALUE関数を入れたのに#VALUE!が返ってきた、という経験がある方は、たいていパターンの読み違いが起きています。
ケースA:桁区切りのカンマが入っている
CSVの中身が "1,200" のように、カンマ付きの金額として出力されているパターンです。CSVはカンマで列を区切る形式なので、値そのものにカンマが含まれる場合はダブルクォートで囲まれます。Excelはこれを素直に読み込みますが、環境や設定によっては数値に変換しきれず、文字列のまま置かれることがあります。会計ソフトや販売管理ソフトの出力で、もっともよく見るパターンです。
ケースB:通貨記号や単位が付いている
¥1,200 や 1200円、3.5kg のように、数字以外の文字がくっついているパターンです。人間が読む前提で作られた帳票をそのままCSVに出すと、こうなります。この場合は100%確実に文字列になります。数字と単位が同居している以上、Excelには数値として扱いようがありません。

ケースC:先頭ゼロを守るために文字列指定されている
商品コード00123、郵便番号0120001、電話番号03-1234-5678のように、先頭の0が意味を持つデータです。数値として読み込むと0が消えてしまうため、出力側があえて文字列として書き出しています。これは壊れているのではなく、仕様として正しい状態です。
問題は、このコード列が文字列なのは正解なのに、金額列まで一緒に文字列で出力されてしまうケースがあること。出力側が「全列を文字列にする」設定になっていると、こうなります。
ケースD:アポストロフィが付いている
セルをクリックすると数式バーに '1200 と表示されるパターンです。先頭のシングルクォート(アポストロフィ)は、セル上には表示されないのに、「この中身は文字列として扱え」という命令として機能します。セル内には見えないので、気づくまでに時間がかかる相手です。

ケースE:全角数字や見えない空白が混ざっている
古いシステムや、人の手が入った中間ファイルを経由したCSVでよくあります。1200のような全角数字、数字の前後に入った半角スペース、Webからコピーされたデータに紛れ込む特殊な空白(見た目はスペースなのに、TRIM関数では消えないもの)などです。
このケースは、1248行のうち数十行だけが該当する、という混在型になりやすいのが特徴です。先ほどのISNUMBERでFALSEの行を抽出する手順が、ここで効いてきます。
直し方を3ルートから選ぶ
パターンが分かったら、直し方を選びます。全部を1つの方法で片付けようとしないのが、結果的にいちばん早いです。
| ルート | 向いている状況 | 数式 | 元データ |
|---|---|---|---|
| ①エラーインジケーター | 数十件まで。単純な数字だけ | 不要 | 直接上書き |
| ②区切り位置 | 列まるごと。ケースA・C・D | 不要 | 直接上書き |
| ③関数(VALUE系) | ケースB・E。記号や全角が混在 | 必要 | 別列に作成 |
ルート①:警告マークから「数値に変換する」
文字列化しているセルを範囲選択すると、左上に黄色い「!」マークが出ます。これをクリックして「数値に変換する」を選ぶだけです。
手軽ですが、件数が多いと動作が重くなります。数百件を超えるなら、次のルート②に切り替えたほうが確実です。また、ケースBのように記号が付いている場合、このメニュー自体が出てこないことがあります。
ルート②:区切り位置で列まるごと変換する
個人的にいちばん使用頻度が高いのがこれです。数式を使わないのに、列全体を一度に処理できます。
- 対象の列を、列見出しをクリックして丸ごと選択する
- 「データ」タブ →「区切り位置」をクリック
- ウィザードが開くが、何も変更せずに「完了」を押す
たったこれだけで、文字列だった数字が数値として読み直されます。Excelに「この列をもう一度判定し直して」と命令しているイメージです。アポストロフィも、このやり方でまとめて外れます。
ただし注意点が1つ。この操作は先頭ゼロも一緒に消します。商品コードの列に対して実行すると、00123が123になって取り返しがつかなくなります。必ず、数値化したい列だけを選択してから実行してください。
ルート③:関数で整えてから値に固定する
記号や全角が混ざっているケースB・Eは、区切り位置では直りません。ここは関数の出番です。
素の状態なら、VALUE関数だけで済みます。
=VALUE(D2)
ただし、これで#VALUE!が返ってくるなら、数字以外の文字が残っています。その場合は、余計な文字を取り除いてからVALUEに渡します。
=VALUE(SUBSTITUTE(SUBSTITUTE(D2,",",""),"円",""))
SUBSTITUTEは「特定の文字を別の文字に置き換える」関数で、置き換え先を空欄("")にすると削除として機能します。上の式はカンマと「円」を消してから数値に変換しています。
全角数字が混ざっているなら、ASC関数で半角に揃える工程を足します。前後の空白も一緒に落とすなら、TRIMも重ねます。
=VALUE(SUBSTITUTE(ASC(TRIM(D2)),",",""))
内側から順に、TRIMで前後の空白を取り、ASCで全角を半角にし、SUBSTITUTEでカンマを消し、最後にVALUEで数値化しています。長く見えますが、やっていることは掃除の手順を並べただけです。

忘れてはいけないのが、最後の一手間です。 関数で作った列は、あくまで元の列を参照している計算結果です。元の列を削除すると、結果も一緒に消えます。
- 作った列を丸ごとコピーする
- 「ホーム」→「貼り付け」の下矢印 →「値」を選んで、同じ場所に貼り付ける
- これで数式が消えて、数値そのものになる
- ここまで終わってから、元の列を削除する
順番を間違えると、直したはずのデータが全部#REF!になります。私は一度これで作りかけの集計表を吹き飛ばしました。
おまけ:1を掛けるだけで直る場合もある
シンプルな文字列数字なら、四則演算を通すだけで数値に変わります。
=D2*1
空いているセルに1と入力してコピーし、対象範囲を選んで「形式を選択して貼り付け」→「演算:乗算」を選ぶと、別列を作らずにその場で数値化できます。列を増やしたくないときの逃げ道として覚えておくと便利です。
そもそも壊さずに取り込む
ここまでは「壊れたあとの直し方」でした。毎月同じCSVを扱うなら、開き方そのものを変えたほうが根本的に楽です。
CSVファイルをダブルクリックで開く、という習慣が事故の原因になっています。ダブルクリックは、Excelの自動判定に全部を委ねる開き方だからです。代わりに、次の手順で取り込みます。
- Excelを先に起動して、空白のブックを開く
- 「データ」タブ →「テキストまたはCSVから」をクリック
- 対象のCSVファイルを選ぶ
- プレビュー画面が出たら、右下の「データの変換」をクリック
- エディター画面で、列見出しの左にあるアイコンをクリックして型を指定する
- 「ホーム」→「閉じて読み込む」でシートに取り込む
ポイントは5番です。金額や数量の列は「整数」または「10進数」、商品コードや郵便番号は「テキスト」を指定します。ここで明示してしまえば、Excelの判定に振り回されることがなくなります。
この方法にはもう1つ利点があります。取り込み設定がブックに保存されるので、翌月は新しいCSVに差し替えて「更新」を押すだけで同じ整形が再現されます。毎月30分かけて手作業で直していたなら、初回の設定10分で元が取れます。
ダブルクリックで開くと文字列化のほかにも、2026/5/1が5月1日表示に化ける、00123の先頭ゼロが消える、長い数字が1.23E+15のような指数表記になる、といった事故が起きます。どれも、開いた瞬間に元の情報が失われるタイプの損失です。数値の判定だけでなく、文字コードの読み違いで文字化けが起きることもあります。
を見抜いて直す方法-320x180.jpg)
CSVを開いた直後の3分点検
慣れてくると、この確認は本当に3分で終わります。集計を始める前に、毎回これだけやってください。
- 金額・数量の列が右寄せになっているか(左寄せなら文字列を疑う)
- 列を選択して、ステータスバーに合計が表示されるか
=COUNT()と=COUNTA()の数が一致しているか- 日付の列が日付として扱われているか(右寄せか、
=ISNUMBER()がTRUEか) - 商品コードの先頭ゼロが残っているか
- 想定した行数どおり取り込まれているか(改行を含むデータがあると行がずれることがある)
最後の項目は見落とされがちです。備考欄などにセル内改行が入ったデータをCSV化すると、行が分裂して取り込まれることがあります。

よくある質問
Q. 区切り位置を実行したのに、一部のセルだけ文字列のままです
そのセルには、カンマや円記号以外の文字が残っています。数式バーで中身を確認して、末尾にスペースが入っていないか、全角数字が混ざっていないかを見てください。混在型のケースEに該当します。
Q. 先頭ゼロを残したまま、その列で計算もしたいです
1つの列で両立はできません。コード列は文字列のまま残し、計算用に別列を作るのが実務的な解決です。列を分けることを「面倒」と感じるかもしれませんが、あとから片方を壊す事故を確実に防げます。
Q. CSVを上書き保存したら書式が消えました
CSVには書式情報を保存できません。色付けや列幅を残したい場合は、必ず.xlsx形式で別名保存してください。CSVは受け渡し用の入れ物であって、作業用のファイルではない、と割り切るのが安全です。
Q. 毎回同じCSVを扱います。マクロを組むべきですか
その前に、先ほどの「テキストまたはCSVから」での取り込みを試してみてください。定型の整形であれば、マクロを書かずに更新ボタンだけで回せることがほとんどです。
研究員メモ
このシリーズを通して何度も書いていることですが、Excelでは「見た目が数字」=「数字」ではありません。人の目には同じでも、内部では別物として扱われている。CSVは、その落差がもっともはっきり出る場面です。
そしてCSVの文字列化がやっかいなのは、エラーが出ないことです。#N/Aや#VALUE!が出てくれるトラブルは、まだ親切なほうです。合計が0と表示されるだけなら、まだ気づけます。怖いのは、1248行のうち68行だけが文字列化していて、合計が「それらしい数字」として出てしまうケース。これは検算しない限り誰も気づきません。
だからこそ、COUNTとCOUNTAの比較という地味な確認を、開いた直後にやる価値があります。式を2つ打つだけで、「全部大丈夫」か「一部だけ怪しい」かが数字で分かる。この習慣があるかどうかで、月次の精度がはっきり変わります。
まとめ
今回のポイントを整理します。
- 切り分け:COUNTとCOUNTAを比べる。ステータスバーに合計が出るかを見る
- 原因:CSVには型の情報がないため、Excelが読み込み時に判定を誤る
- パターン:桁区切りカンマ/通貨記号・単位/先頭ゼロ保持/アポストロフィ/全角・空白の5種類があり、直し方が変わる
- 直す:少量はエラーインジケーター、列まるごとは区切り位置、記号混在はVALUE+SUBSTITUTE。関数を使ったら必ず値として貼り直す
- 防ぐ:ダブルクリックをやめ、「データ」タブの「テキストまたはCSVから」で列の型を指定して取り込む
CSVそのものは悪者ではありません。どんなシステムからでも出せて、どこでも読める、非常に優秀な受け渡し形式です。ただ、Excel向けに整えられているわけではない、というだけのこと。取り込んだ直後に状態を確認するという一手間を挟めば、ほとんどの事故は防げます。
関数そのものの使い方をもう一度確認したい方は、SUM関数の基本を整理した記事もあわせてどうぞ。

なお、実務のCSVでは、今回の原因が2つ以上同時に起きていることが珍しくありません。桁区切りカンマと全角数字が混在していて、区切り位置でもVALUEでも片付かない、というような状況です。そうしたときに、どの順番で原因を潰していくかを診断フロー形式でまとめたものをnoteに置いています。もう一歩踏み込みたい方はこちらへ。
を見抜いて直す方法.jpg)

コメント