プロが教える店舗&オフィスのセキュリティ対策術

あるソフトにデータを取り込むにあたり、エクセルで作ったデータをCSVに変換しました。
変換方法は、エクセルの名前を付けて保存→ファイルの種類「CSV(カンマ区切り)」で保存して作りました。
行はそれぞれ人の名前が入っており、列にはその人の情報が入っています。
メモ帳で作成したCSVファイルを確認すると、スペースの数が違う場合があります。
具体的には、A列に名前、B列に対応する数字(例えば通し番号)が入っているとした時、
多くの人は名前と通し番号の間にスペースが10個程度入り(名前の長さで違う)、カンマで区切った後に通し番号が入ります。
しかし、一部の人にはスペースがはいらずに、名前にカンマと通し番号が続いて表示されます。
<メモ帳で作成したCSVファイルを開いた時の例>
ヤマダ○タロウ○○○○○○○○○○○○○,1,…
スズキ○ハナコ○○○○○○○○○○○○○,2,…
タカハシ○イチロウ○○○○○○○○○○○,3,…
タナカ○アイ○○○○○○○○○○○○○○,4,…
キムラ○ジロウ,5,…
サトウ○シヨウコ○○○○○○○○○○○○,6,…
※○はスペース

この例のキムラジロウの時のように、スペースの数が違って表示される理由がなぜなのかと、どのようにしたらこれを回避できるのか教えていただけませんか?
使うソフトの仕様通りにCSVを作成しているのに、ソフトにデータをうまく取り込めないので、こういったところに問題があるのかと考えています。

ご回答よろしくお願いします。

A 回答 (2件)

>この例のキムラジロウの時のように、スペースの数が違って表示される理由がなぜなのか



CSV出力は「セルに入力されているデータが、幅調整されずに、そのまま出力」されます。

元データの末尾にスペースが付いてしまっているデータは、そのスペースがそのまま出力されます。

元データの末尾にスペースが無いデータは、スペースが無いまま、そのまま出力されます。

たぶん「エクセルのファイルを作った時に元にしたファイルが、フィールドの幅が固定されたテキストファイル」だったのでしょう。

フィールドの幅が固定されたテキストファイルを読み込んでエクセルのファイルを作ると、「文字列型」になっているセルのデータは「末尾にスペースが付いたまま」セルに取り込まれます。

一方「後から行追加して、セルに手入力したデータ」には、末尾にはスペースは付きません。

そうなると、エクセルのファイルの名前が入力された列のセルには

ヤマダ○タロウ○○○○○○○○○○○○○
スズキ○ハナコ○○○○○○○○○○○○○
タカハシ○イチロウ○○○○○○○○○○○
タナカ○アイ○○○○○○○○○○○○○○
キムラ○ジロウ
サトウ○シヨウコ○○○○○○○○○○○○

と言うように、末尾にスペースがある物と、末尾にスペースが無い物が混在する事になります。

それをそのままCSV出力すれば、質問文に書かれた状態のCSVファイルが出来上がって当然です。

元のエクセルのファイルを開いて、すべてのセルを選択状態(反転状態)にしてから、「書式」→「セル」→「フォント」タブ→「下線」から「下線」を選ぶ→「OK」ボタン、と操作してみて下さい。

添付画像は、データの末尾にスペースが付いている物と、データの末尾にスペースが無い物が混在しているエクセルの画像です。

画像左側では、末尾にスペースが付いているセルがどれなのか、見ただけでは判りません。

画像右側のように「下線付き」にすると、末尾にスペースが付いているセルが一目瞭然です。

下線を付けると「見えないスペースにも下線が付く」ので「aaaa」「bbbb」「dddd」のセルで文字の右に下線が延びてて、末尾にスペースが付いていると判ります。「ccc」は下線が伸びてないので、末尾にスペースが無いのが判ります。

この問題を解決するには、以下の2つの方法があります。

・余計なスペースを削りたい場合

TRIM関数を使って、末尾のスペースを取り除いたデータを生成し、生成したセルをコピーして「形式を指定して貼り付け→値のみ」で貼り付けて、末尾のスペースを取り除いた後、CSV出力する

・すべてスペース付きにして固定長にしたい場合

エクセルのファイルをテキストファイルに出力する際、CSV形式を選ばず、PRN形式を選んで「カンマ無しの固定長のテキストファイル」に出力する

カンマ区切りでスペース無しの不定長のテキストファイルが欲しければ前者を、カンマ無しでスペース付きの固定長のテキストファイルが欲しければ後者の方法を使って下さい。
「エクセル→CSVにした時、スペースの数が」の回答画像2
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

下線でみてみるとたしかにスペースが入ってあるのを確認できました。
原因がわかり、よかったです。

どうもありがとうございました。

お礼日時:2014/01/17 11:58

>この例のキムラジロウの時のように、スペースの数が違って表示される理由がなぜなのかと、どのようにしたらこれを回避できるのか教えていただけませんか?


何故そのようになるかは各セルの文字列を点検してください。
表示状態を見ただけでは右側の空白文字が目視で確認できませんので全体の文字列長をLEN(文字列)で確認してください。
一般的には文字列データは右側の空白を付けない形で扱います。
空白を強制的に付加して同じ文字列長に調整するにはCSVファイルに出力前の処理が必要です。

A列に氏名が有るとき以下の式のようにすれば文字列長が一定になります。

=LEFT(A2&REPT(" ",20),20)
「エクセル→CSVにした時、スペースの数が」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています