
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も見ています
-
CSVファイルの中で、「 , 」カンマを使いたい
その他(コンピューター・テクノロジー)
-
CSV書込みの際、カンマで位置がずれる
Visual Basic(VBA)
-
カンマ区切りの数字をCSVファイルにインポートする時どうすれば?
Excel(エクセル)
-
-
4
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
5
VBA セル内で改行またはカンマを含む場合「””」で括る為の処理
Excel(エクセル)
-
6
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
7
コマンドボタンを押すたびに大きくなってしまう
Excel(エクセル)
-
8
【ExcelVBA】各セルをダブルクォーテーションで括ってCSV保存したい
Visual Basic(VBA)
-
9
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
10
スプレッドシートの列名変更の件について
Visual Basic(VBA)
-
11
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
12
Hideについて(.NET)
Visual Basic(VBA)
-
13
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
14
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
15
split関数で区切り文字がない場合
Visual Basic(VBA)
-
16
VB.NETで小数点以下の桁数を取得したい
その他(ソフトウェア)
-
17
VB.net、テキストボックス入力制限、全角のみ
Visual Basic(VBA)
-
18
EXCELにcsv形式の外部データを取り込む際にカンマ区切りで取り込も
Excel(エクセル)
-
19
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
20
UserForm1.Showでエラーになります。
工学
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
-
ピンとくる人とこない人の違いは?直感を鍛える方法を心理コンサルタントに聞いた!
根拠はないがなんとなくそう感じる……。そんな「直感がした」という経験がある人は少なくないだろう。ただ直感は目には見えず、具体的な説明が難しいこともあるため、その正体は理解しにくい。「教えて!goo」にも「...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
マクロを使ってフォルダー内に...
-
Excelについて質問です。 セル...
-
カンマ区切りの数字をCSVフ...
-
Excel VBA: Inputステートメ...
-
データにカンマが入ったCSVデー...
-
[VBA][Excel]クリップボードか...
-
CSVの定義
-
メモ帳からエクセルにセル区切...
-
VBScript 日付の比較について
-
カンマ区切りでないテキストをc...
-
Excelでカンマ区切りの合計をユ...
-
WORDで改ページすると時々グレ...
-
Kotlinの、「, ”カンマ”」「."...
-
EXCELからCSVにすると余計なカ...
-
テキストファイルからReadLine...
-
JPY ¥1,500.00は日本円でお幾ら?
-
excelでスペース区切りのファイ...
-
何故、日本は未だに数字を3桁...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
マクロを使ってフォルダー内に...
-
WORDで改ページすると時々グレ...
-
CSVの定義
-
Excelについて質問です。 セル...
-
カンマ区切り
-
VBAでtxtファイルを読み込む際...
-
[VBA][Excel]クリップボードか...
-
カンマ区切りの数字をCSVフ...
-
C#で、テキストボックスの入力...
-
データにカンマが入ったCSVデー...
-
パス区切りの文字について
-
メモ帳からエクセルにセル区切...
-
エクセルにペーストする際にカ...
-
JPY ¥1,500.00は日本円でお幾ら?
-
区切り文字をTABにしたい
-
PHP カンマをエスケープしたい...
-
(エクセル)特定のスペースを...
おすすめ情報