ExcelでCSVファイルを読み込むとき、0(ゼロ)で始まる数字の文字列を正しく読み込むためには、どうすればいいのでしょうか
たとえば次のようなCSVファイルを読み込むと
先頭の0が省かれてしまいます。
01234,aaa[cr][lf]
これがダメ
「1234」と表示されてしまう
"01234",aaa[cr][lf]
これもダメ
「1234」と表示されてしまう
セルに「01234」と表示出来るようにするにはどうしたらいいのでしょうか?教えてください。お願いします。
ご存知の方、教えてください。
No.5ベストアンサー
- 回答日時:
下記をやって見ました。
0つき数字コード4桁列の先頭に「’」を付け加えた
ファイルを作ってみました。
ABC3列でA列が0つき数字コード4桁とする。
先頭0は残るが’も残り、エンタを打ちこむと’が消える。
Private Sub Form_Click()
Dim a(10)
Open "c:\My Documents\a11.csv" For Input As #1
Open "c:\My Documents\a12.csv" For Output As #2
While Not EOF(1)
Input #1, a(1), a(2), a(3)
' MsgBox a(1) & "," & a(2) & "," & a(3)
Write #2, "'" & Mid("0000", 1, 4 - Len(a(1))) _
& a(1), a(2), a(3)
Wend
Close #1, #2
End Sub
興味があれば検討してください。
やってみました。
>先頭0は残るが’も残り、エンタを打ちこむと’が消える。
確かに・・・
サンプルプログラムまで教えていただき、ありがとうございました。
妥協線として、教えていただいた方法でやることにします。
保存しなおすと、次には先頭の"0"が消えてしまいますが・・・
#なんか、Excel嫌いになりそうです・・・
#好き勝手放題やるから・・・
No.6
- 回答日時:
CSVファイルはWIN上でファイルの関連付けが行われているため(エクセルと)エクセルで開くと、勝手な(全て標準状態で)設定がされます。
回避方法としては、関連付けを解除してしまうか、エクセル上からインポートして外部データとする方法があります。
関連付けの解除はやったことが無いのでいまいちですが、インポートは以下の手順で出来ます。
「データ」→「外部データの取り込み」→「テキストファイルのインポート」→「CSVファイルを選択」→「インポート」→テキストファイルウイザードが起動します。ここで、カンマ区切りを選択して次に進むと、上に「G/標準」のところをクリックして「文字列」を選択して完了で、5桁の数字は文字列として認識されます。
これは数値を文字として取り扱うため、計算など数値として取り扱いたい場合には、No1の方の言われているようにセルの書式を変更する方法が良いと思われますが。
ご回答ありがとうございます。
>勝手な(全て標準状態で)設定がされます。
勝手ですね、ホントに・・
文字列データの場合、「01234」の全体がユーザーのデータなので、先頭の「0」を勝手に取ってしまっては、いけないですよね。(と思うんですが・・・)
>数値を文字として取り扱う
実は、私の場合「01234」の部分は、IDコードなので、先頭の「0」にも意味のある文字列なのです。
>エクセル上からインポート
この手順を設定などで、自動化できればうれしいのですが・・・
ありがとうございました。
No.4
- 回答日時:
少し前に同様の質問に回答しました。
ご参考に。ExcelVBAを使ってテキストファイルを取り込む際に条件を与える方法
http://www.okweb.ne.jp/kotaeru.php3?q=427768
参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=427768
ご回答ありがとうございます。
ExcelVBAとは事情が違いますが、紹介いただいたURLは参考になりました。
ありがとうございました
No.3
- 回答日時:
プログラムで出力しているとのことなら、その際に0の前に「’(半角アポストロフィ)」を付けてCSV出力をするとかはですかね。
しかしこの方法でも操作人がその後CSV形式で保存しなおしたら0が消えてしまうだったような?(大丈夫でしたらすみません)
それか、もともと拡張子をCSV以外にして必ずウィザードを使用するようにするか
ですかね。
どちらにせよその後の操作人の使い方次第にはなってしまうかとは思うのですが
回答にはなっていませんがアドバイスということで。
"'01234","aaa" で、うまくいきました。
といっても、初期表示は「'01234」だし、
おっしゃるように
>CSV形式で保存しなおしたら0が消えてしまう
というなんとも悲しい状況です。
私のやりたいことはそれほど不自然なこととは思ってないのですが、M$さんのSEにとっては、「違う」のでしょうね。
ありがとうございました。
No.2
- 回答日時:
消極的な方法ですが,
(1)CSVのデータで該当箇所の0の前に適当な(他の部分で使用しない)文字を入れておきます。
例)01234 => P01234 (半角でも全角でも大丈夫だと思います)
(2)EXCELで開く。
(3)(1)で入力した文字を半角の’(アポストロフィー [Shift]+[7])に置換する。
ご回答ありがとうございます。
>[Shift]+[7])に置換する。
なるべくなら、一発で(自動的に)出来るようにしたかったんですが・・・
質問に書いてなかったので、舌足らずでした。
ありがとうございました。
No.1
- 回答日時:
数値として扱うけど5桁で頭を0で埋めたいのなら、表示形式を"00000"とする。
文字列として扱いたいなら、ファイル名の末尾を.csvから.txtに変更し、読み込み
ウィザードで該当するカラムを文字列に指定する。
こんな感じですね。エクセルはcsvファイルのうちファイル名の末尾が.csvであるも
のに対して、ウィザードを起動せず身勝手な解釈で余計なお世話をしてくれる仕様な
ので注意が必要です。
早速ご回答ありがとうございます
あるプログラムで出力したファイルをExcelで利用する(こともある)という状況なので、Excelでの操作は使う人が一回一回やらなくちゃいけないんですね。(;_;)
CSVって、他のアプリケーションでも読み込めるのでいいかなと思ってました。(他のアプリでは、ダブルクォートで囲むと文字列という判断をするようで0は省かれません)
>勝手な解釈で余計なお世話をしてくれる仕様なので注意が必要です。
そうでしたか・・・・
なんか、がっくりきました・・・
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Wordの文章をExcelに内容ごとに...
-
多数のeml形式ファイルを1つの...
-
ダブルクォーテーション囲いカ...
-
複数のメールファイルを1つの...
-
【Access】クエリで抽出...
-
Excelのデータ(数字)をテキス...
-
イラストレータで座標のデータ...
-
EXCEL表示について
-
列数が4000を超えるcsvファイル...
-
SQLSever 一括インポートについて
-
複数eml形式のBecky!への一括イ...
-
AccessでCSVの読み込み履歴を残...
-
複数のエクセルファイルをアク...
-
Excel 2016 テキストファイルの...
-
タブ区切りファイルからカンマ...
-
アクセスで小数点以下1桁まで...
-
エクセル2000で65536行を超える...
-
notepad++ で作成した文書を cs...
-
ExcelでCSVファイルを読み込むとき
-
ACCESS でインポートフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Access】クエリで抽出...
-
Wordの文章をExcelに内容ごとに...
-
SQLSever 一括インポートについて
-
Excelのデータ(数字)をテキス...
-
アクセス(ACCESS) インポート...
-
ダブルクォーテーション囲いカ...
-
複数eml形式のBecky!への一括イ...
-
多数のeml形式ファイルを1つの...
-
ACCESS CSV形式でエクスポート...
-
アクセス2007でのインポートエ...
-
複数のメールファイルを1つの...
-
Excelでhtml形式のテキストを表...
-
notepad++ で作成した文書を cs...
-
VBA 複数のCSVファイルを一度...
-
【AccessVBA】ダイアログで複数...
-
ACCESS複数テキストファイルを...
-
ACCESS でインポートフ...
-
Excel 2016 テキストファイルの...
-
アクセスで小数点以下1桁まで...
-
Accessのテーブルにデー...
おすすめ情報