あるソフトにデータを取り込むにあたり、エクセルで作ったデータをCSVに変換しました。
変換方法は、エクセルの名前を付けて保存→ファイルの種類「CSV(カンマ区切り)」で保存して作りました。
行はそれぞれ人の名前が入っており、列にはその人の情報が入っています。
メモ帳で作成したCSVファイルを確認すると、スペースの数が違う場合があります。
具体的には、A列に名前、B列に対応する数字(例えば通し番号)が入っているとした時、
多くの人は名前と通し番号の間にスペースが10個程度入り(名前の長さで違う)、カンマで区切った後に通し番号が入ります。
しかし、一部の人にはスペースがはいらずに、名前にカンマと通し番号が続いて表示されます。
<メモ帳で作成したCSVファイルを開いた時の例>
ヤマダ○タロウ○○○○○○○○○○○○○,1,…
スズキ○ハナコ○○○○○○○○○○○○○,2,…
タカハシ○イチロウ○○○○○○○○○○○,3,…
タナカ○アイ○○○○○○○○○○○○○○,4,…
キムラ○ジロウ,5,…
サトウ○シヨウコ○○○○○○○○○○○○,6,…
※○はスペース
この例のキムラジロウの時のように、スペースの数が違って表示される理由がなぜなのかと、どのようにしたらこれを回避できるのか教えていただけませんか?
使うソフトの仕様通りにCSVを作成しているのに、ソフトにデータをうまく取り込めないので、こういったところに問題があるのかと考えています。
ご回答よろしくお願いします。
No.2ベストアンサー
- 回答日時:
>この例のキムラジロウの時のように、スペースの数が違って表示される理由がなぜなのか
CSV出力は「セルに入力されているデータが、幅調整されずに、そのまま出力」されます。
元データの末尾にスペースが付いてしまっているデータは、そのスペースがそのまま出力されます。
元データの末尾にスペースが無いデータは、スペースが無いまま、そのまま出力されます。
たぶん「エクセルのファイルを作った時に元にしたファイルが、フィールドの幅が固定されたテキストファイル」だったのでしょう。
フィールドの幅が固定されたテキストファイルを読み込んでエクセルのファイルを作ると、「文字列型」になっているセルのデータは「末尾にスペースが付いたまま」セルに取り込まれます。
一方「後から行追加して、セルに手入力したデータ」には、末尾にはスペースは付きません。
そうなると、エクセルのファイルの名前が入力された列のセルには
ヤマダ○タロウ○○○○○○○○○○○○○
スズキ○ハナコ○○○○○○○○○○○○○
タカハシ○イチロウ○○○○○○○○○○○
タナカ○アイ○○○○○○○○○○○○○○
キムラ○ジロウ
サトウ○シヨウコ○○○○○○○○○○○○
と言うように、末尾にスペースがある物と、末尾にスペースが無い物が混在する事になります。
それをそのままCSV出力すれば、質問文に書かれた状態のCSVファイルが出来上がって当然です。
元のエクセルのファイルを開いて、すべてのセルを選択状態(反転状態)にしてから、「書式」→「セル」→「フォント」タブ→「下線」から「下線」を選ぶ→「OK」ボタン、と操作してみて下さい。
添付画像は、データの末尾にスペースが付いている物と、データの末尾にスペースが無い物が混在しているエクセルの画像です。
画像左側では、末尾にスペースが付いているセルがどれなのか、見ただけでは判りません。
画像右側のように「下線付き」にすると、末尾にスペースが付いているセルが一目瞭然です。
下線を付けると「見えないスペースにも下線が付く」ので「aaaa」「bbbb」「dddd」のセルで文字の右に下線が延びてて、末尾にスペースが付いていると判ります。「ccc」は下線が伸びてないので、末尾にスペースが無いのが判ります。
この問題を解決するには、以下の2つの方法があります。
・余計なスペースを削りたい場合
TRIM関数を使って、末尾のスペースを取り除いたデータを生成し、生成したセルをコピーして「形式を指定して貼り付け→値のみ」で貼り付けて、末尾のスペースを取り除いた後、CSV出力する
・すべてスペース付きにして固定長にしたい場合
エクセルのファイルをテキストファイルに出力する際、CSV形式を選ばず、PRN形式を選んで「カンマ無しの固定長のテキストファイル」に出力する
カンマ区切りでスペース無しの不定長のテキストファイルが欲しければ前者を、カンマ無しでスペース付きの固定長のテキストファイルが欲しければ後者の方法を使って下さい。
ご回答ありがとうございます。
下線でみてみるとたしかにスペースが入ってあるのを確認できました。
原因がわかり、よかったです。
どうもありがとうございました。
No.1
- 回答日時:
>この例のキムラジロウの時のように、スペースの数が違って表示される理由がなぜなのかと、どのようにしたらこれを回避できるのか教えていただけませんか?
何故そのようになるかは各セルの文字列を点検してください。
表示状態を見ただけでは右側の空白文字が目視で確認できませんので全体の文字列長をLEN(文字列)で確認してください。
一般的には文字列データは右側の空白を付けない形で扱います。
空白を強制的に付加して同じ文字列長に調整するにはCSVファイルに出力前の処理が必要です。
A列に氏名が有るとき以下の式のようにすれば文字列長が一定になります。
=LEFT(A2&REPT(" ",20),20)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- Visual Basic(VBA) VBAで出力したCSVファイルの先頭にカンマを挿入したい 5 2022/10/14 12:20
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
CSV形式にすると出てくる空白を消したいです。
その他(Microsoft Office)
-
エクセルでCSVを編集するとき、空白(NULL?)はどう入れますか
Excel(エクセル)
-
【Excel】 csvの作成時、空白セルにもカンマ
Excel(エクセル)
-
-
4
EXCELからCSVにすると余計なカンマがつきます
Excel(エクセル)
-
5
固定長データのテキストファイルのスペースについて
Excel(エクセル)
-
6
CSVの定義
その他(パソコン・スマホ・電化製品)
-
7
EXCELでCSVファイル保存するとデータが無いところにカンマ
その他(ソフトウェア)
-
8
Excelマクロ 空白セルを無視してCSV出力
Excel(エクセル)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
CSVで1列目を空白にする方法は?
PowerPoint(パワーポイント)
-
11
sqlplusでヘッダーが付かない
Oracle
-
12
配列の値を置換するにはどうすればいいでしょう?
Excel(エクセル)
-
13
csvファイル内の特定の空白をカンマに置き換えたい
その他(コンピューター・テクノロジー)
-
14
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文章内にスペースを入力する方...
-
【関数】スペースがいくつ入っ...
-
電車の中で腕を身体にそわせて(...
-
数値と単位が離れないように半...
-
Twitterのスペースに入ろうとす...
-
エクセル→CSVにした時、スペー...
-
viで行にスペース(空白)を挿...
-
エクセルについて質問です。 写...
-
「?」のあとにスペースはいら...
-
JR谷川駅の駐車場について
-
電子辞書の使い方
-
HP作成時容量20MBとはど...
-
フランス語:疑問符や感嘆符に...
-
正規表現で郵便番号だけを削除
-
word 2007 フィールドコード内...
-
学生寮に住んでるのですが、タ...
-
直リンクのできる素材屋さん
-
名前の入力について
-
Twitter(X)で、スペース機能が...
-
エクセルのセル内から数式だけ...
おすすめ情報