VBにてCSVデータを読み込むロジックを組んでいるのですが
データの中にカンマが入ったものがたまにあります。
通常通り読むとデータのカンマを区切りのカンマと間違え正しく変数に読み込まれません。
たとえばCSVデータが下記の場合
123,de-ta,12,000,jjjj
実際のデータは
123
de-ta
12,000
jjjj
ですが
12,000を2個のデータと認識して
123
de-ta
12
0000
jjjj
のようになってしまいます。
どなたか12,000をちゃんと読める方法をご存知の方お力をお貸しください。
よろしくお願い致します。
No.11ベストアンサー
- 回答日時:
こんにちは
そのアプリは、固定長出力はできないでしょうか。
二重引用符もだめだとすると、規則性を利用してロジックで分けるしかありません。
例えば・・
Line Input で1行ずつ取り込み。
念のためカンマの数をカウントしてみる。
カンマの位置で、データを切り出す。Instr()かVB6のSplit()で。
IsNumeric(str)を利用して、データが数値か文字列かを判断する。
例ですと、数値の後ろの項目は文字列になっているので、文字列が後ろに来たら、そこまでの数値を連結する。
てな具合です。
では!
ありがとうございます。
私もLine Input で1行ずつ取り込み。を考え、とりあえずプログラミングしてみました。
なんとか今、正常に稼動しています。
やはりこの手しかないようですね。
No.10
- 回答日時:
難しいですね。
でも、まずカラム数は決まっているのですよね?
123,de-ta,12,000,jjjjの場合はカラムが4になるべき?
一行を一度に読み込み、Split関数などで配列にデータを
分割し、カラム数が必要な値より大きい場合は、配列の後
ろから数値でかつ3桁のものを探して、その前が数値であれ
ば繋げるとかすれば、少しいけるかも知れません。
データが
1,222,333,222 でカラム数が2とかの場合は無理ですが。
以上、参考になれば幸いです。
No.8
- 回答日時:
既解答の中に、読んで後のロジックで解決する的な話がありますが、今私も別件の解答で失敗しましたが、もしInput #1,a,b,c式で読むと、次々にずれて変数a,b,cなどにセットされ、最後にEof(1)でレコードの終わりを上手く捉えられず、読むデータが無いというエラーに行き付くと思います。
ご解答にあるようにメモ帳に読みこんで手作業で,を除くより他無いと思います。解答者は実際テストデータでやってみて頂いて、ご批判を仰ぎたいと思います。No.7
- 回答日時:
No.5の者です。
カンマは小数点のことかと思いましたが、金額のカンマが正しいのでしょうか。金額のカンマとしても、難しいですね。例えば、12,345とあったとします。
\12と\345とも取れますし、\12345とも取れますね。
金額のカンマを除いた状態で出力すると12,345→12345となり、\12345に固定されてしまいますね。
やはり、カンマが「区切り記号」と「金額のカンマ」との違いが無い限り、無理な気がします。12、234,56、78,90とかになっていないと厳しいでしょう。\12,\234,56,\78,90など金額の頭に「区切り記号」の意味の文字列があったなら良かったのですが。
7_7_7さんは12,345のような場合、\12と\345、\12345、どのように見分けているのでしょうか。
No.6
- 回答日時:
>データの中にカンマが入ったものがたまにあります。
ロジックを組んで取り込もうとする先がカンマがあったりなかったりの可変では
ロジックでの対処は難しいのではないですか。
手間になりますが一度別のアプリで読み込んで金額をカンマなしで再出力するとか
で取り合えず対処するくらいだと思います。(例えばExcelで読み込んでカンマ編集
を除くとか)
市販のソフトでCSVで出力出来るのであれば金額のカンマを除いた状態で出力する
設定がありそうなものですが。
CSVで出力する際の設定を変更するオプションは無いのでしょうか?
No.5
- 回答日時:
No.3の回答だと、例、12,34,56,78(12,34と56,78)として、「数字と数字の間にあるカンマは数字の一部と見なす」としたら、12.34.56.78("."は小数点)とありえない数値になってしまいます。
質問の意図からして、12,000の","は小数点のことだと思いますが、上の例のように、カンマで区切られた数字が連続であった場合、12と34と56と78、12と34.56と78、・・・など、あいまいすぎて法則を見つけるのが非常に困難だと思います。12,000の前後に何か一定の法則がないと、市販のアプリ側が小数点のことを考慮していただく他に無いのでは、と思います。お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Java javaのCSVデータ読込についてです 6 2022/07/02 10:58
- Visual Basic(VBA) VBAで出力したCSVファイルの先頭にカンマを挿入したい 5 2022/10/14 12:20
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- Excel(エクセル) VBA エラーの件 4 2022/10/10 19:14
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Excel(エクセル) Excel Powerクエリーの質問、行数指定は可能でしょうか? 2 2022/08/22 12:54
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
このQ&Aを見た人はこんなQ&Aも見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
2024年のうちにやっておきたいこと、ここで宣言しませんか?
2024年も残すところ50日を切りましたね。 ことしはどんな1年でしたか? 2024年のうちにやっておきたいこと、 よかったらここで宣言していってください!
-
お風呂の温度、何℃にしてますか?
みなさん、家のお風呂って何℃で入ってますか? ぬるめのお湯にゆったり…という方もいれば、熱いのが好き!という方もいるかと思います。 我が家は平均的(?)な42℃設定なのですが、みなさんのご家庭では何℃に設定していますか?
-
CSVファイルの中で、「 , 」カンマを使いたい
その他(コンピューター・テクノロジー)
-
【ExcelVBA】各セルをダブルクォーテーションで括ってCSV保存したい
Visual Basic(VBA)
-
カンマ区切りの数字をCSVファイルにインポートする時どうすれば?
Excel(エクセル)
-
-
4
CSV書込みの際、カンマで位置がずれる
Visual Basic(VBA)
-
5
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
6
VBAでCSVファイルが使用中かどうかの確認
Visual Basic(VBA)
-
7
カンマ区切りのCSVファイルから"を削除したい
その他(プログラミング・Web制作)
-
8
On ErrorでエラーNoが0
Visual Basic(VBA)
-
9
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
10
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
11
EXCELにcsv形式の外部データを取り込む際にカンマ区切りで取り込も
Excel(エクセル)
-
12
VBA セル内で改行またはカンマを含む場合「””」で括る為の処理
Excel(エクセル)
-
13
VBAで変数内に保持された二次配列データをテーブルに格納
Access(アクセス)
-
14
Access VBAで行ラベルが定義されていないというエラーが出ます
Access(アクセス)
-
15
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
16
Functionで戻り値を複数返す方法
Visual Basic(VBA)
-
17
CloseとDisposeの違い
Visual Basic(VBA)
-
18
ウォッチ式の文字数制限について
Visual Basic(VBA)
-
19
VBAでCSVをExcelに取り込む時に、途中の改行を取り除くには
Visual Basic(VBA)
-
20
Accessのリンク先を相対パスにしたい
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
CSVの定義
-
PHP カンマをエスケープしたい...
-
EXCELからCSVにすると余計なカ...
-
JPY ¥1,500.00は日本円でお幾ら?
-
Excelについて質問です。 セル...
-
[VBA][Excel]クリップボードか...
-
WORDで改ページすると時々グレ...
-
VBAでtxtファイルを読み込む際...
-
データにカンマが入ったCSVデー...
-
カンマ区切り
-
マクロを使ってフォルダー内に...
-
EXCELの文字が指数になる
-
カンマ区切りの数字をCSVフ...
-
VBScript 日付の比較について
-
エクセルの質問
-
メッセージボックスの数字をカ...
-
WSHでエクセルのあるシートをテ...
-
VB2005のTextBoxでカン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
カンマ区切りの数字をCSVフ...
-
マクロを使ってフォルダー内に...
-
CSVの定義
-
WORDで改ページすると時々グレ...
-
Excelについて質問です。 セル...
-
カンマ区切り
-
データにカンマが入ったCSVデー...
-
C#で、テキストボックスの入力...
-
何故、日本は未だに数字を3桁...
-
[VBA][Excel]クリップボードか...
-
VBAでtxtファイルを読み込む際...
-
パス区切りの文字について
-
ひとつの命令を複数行に記述
-
PHP カンマをエスケープしたい...
-
3桁ごと?4桁ごと?コンマの...
-
CSVファイル中の不規則な数のス...
-
エクセル セルの書式設定 ユ...
おすすめ情報