エクセルのプログラムに関する質問です。


今、各セルにX~Zまでのデータが格納される可能性があるとします。
これをcsvで表現するとY,Z,X,X・・・などです。

次に、複数のデータが一つのセルに格納される可能性があります。
YZX,X,Z,YZ・・・などです。

しかし、データYとZは文字列なので、複数並べると一つのデータに見えてしまいます。

この場合、csvで扱おうと思うなら、通常どうするのが一般的ですか?

例えば、XやYの間に半角スペースを入れて
Y Z X,X,Z,Y Z,・・・でしょうか?

よろしくご指導くださいませ。

回答の条件
  • 1人2回まで
  • 登録:2008/11/07 02:54:20
  • 終了:2008/11/07 21:54:55

ベストアンサー

id:SALINGER No.4

SALINGER回答回数3454ベストアンサー獲得回数9692008/11/07 12:43:19

ポイント22pt

ExcelからCSVで保存すると、

A「カンマ区切り、データにカンマがあるとダブルクォートで囲む。ダブルクォートはダブルクォートで囲む。」

となります。

ただし、データによりダブルクォートで囲んでいるものと囲んでいないものが混在するので、VBAから読み込む場合には少し手間がかかります。


CSVの標準的なフォーマットは

B「カンマ区切り、全てのデータをダブルクォートで囲む。ダブルクォートはダブルクォートで囲む。」

になると思います。

http://codezine.jp/article/detail/2364?p=1

この場合はExcel以外のアプリケーションからの利用や、前述したプログラムからの読み込みやすさという点では、Aよりもよいと思います。しかし、Bの形式をExcelで開いて保存するだけでAに変わってしまうということが起きます。ExcelVBAでコードを書いた場合、Excelで読み込み処理をして保存するという最後のところをブックのSAVEで対処できなくなります。


ExcelVBAから利用する場合は、AかBかになりますが、読み込みと保存のコードが変わってくるのでコードを書きやすい形式にするのがいいと思います。カンマ以外の特定の文字(空白等)をデータ内の区切り文字として使う場合、文字列にその区切り文字が入る場合があるので難しいと思います。

id:ReoReo7

ありがとうございます。うまくできそうに思います。

2008/11/07 21:54:43

その他の回答(3件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982008/11/07 06:28:20

ポイント25pt

CSVで扱うなら、CSVで保存すればいいだけでしょう。

また、セルとセルの区切りは、タブになっていますので、

タブを カンマに 置換すればいいでしょう。

ただ、セルの中にカンマがある場合は、セルを ""で 囲まないとダメですね。

id:ReoReo7

いつもありがとうございます!

2008/11/07 19:19:33
id:hiko3karasu No.2

hiko3karasu回答回数1058ベストアンサー獲得回数252008/11/07 10:25:49

ポイント23pt

""でくくって

"x,y,z"

で1つのセルになりますよ。

id:ReoReo7

ありがとうございます。

2008/11/07 19:19:40
id:yyok No.3

yyok回答回数59ベストアンサー獲得回数32008/11/07 10:35:00

ポイント22pt

CSV的には文字列部分を"で囲めばいいと思います。

X,"Y Z",Z,Z

のように。

"で囲めば例えば

X,"Y, Z",Z,Z

の2つ目のデータは、「Y, Z」と,自体をデータに含めることも

できます。

データ中に"自体を含めるときは"を連続させ、例えば

X,"Y, Z","Z""",Z

とします。3つ目のデータは「Z"」として扱われます。

id:ReoReo7

ありがとうございます。"の書き方も参考になります。

2008/11/07 19:20:05
id:SALINGER No.4

SALINGER回答回数3454ベストアンサー獲得回数9692008/11/07 12:43:19ここでベストアンサー

ポイント22pt

ExcelからCSVで保存すると、

A「カンマ区切り、データにカンマがあるとダブルクォートで囲む。ダブルクォートはダブルクォートで囲む。」

となります。

ただし、データによりダブルクォートで囲んでいるものと囲んでいないものが混在するので、VBAから読み込む場合には少し手間がかかります。


CSVの標準的なフォーマットは

B「カンマ区切り、全てのデータをダブルクォートで囲む。ダブルクォートはダブルクォートで囲む。」

になると思います。

http://codezine.jp/article/detail/2364?p=1

この場合はExcel以外のアプリケーションからの利用や、前述したプログラムからの読み込みやすさという点では、Aよりもよいと思います。しかし、Bの形式をExcelで開いて保存するだけでAに変わってしまうということが起きます。ExcelVBAでコードを書いた場合、Excelで読み込み処理をして保存するという最後のところをブックのSAVEで対処できなくなります。


ExcelVBAから利用する場合は、AかBかになりますが、読み込みと保存のコードが変わってくるのでコードを書きやすい形式にするのがいいと思います。カンマ以外の特定の文字(空白等)をデータ内の区切り文字として使う場合、文字列にその区切り文字が入る場合があるので難しいと思います。

id:ReoReo7

ありがとうございます。うまくできそうに思います。

2008/11/07 21:54:43

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません