- ベストアンサー
複数csvファイルから特定セルを抽出できるソフト
いつもお世話になっています。 色々、ネットで検索しているのですが、自力で解決できません。 複数csvファイルから特定(例 A1)セルの数字や文字を一括抽出し、別の、エクセルもしくはCSVファイルへ書き出すことのできる有料もしくは無料ソフトを探しています。(自力ではマクロの作成は無理です・・・・・・。) 皆様、ご教授よろしくお願い申し上げます。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No.3の補足欄について 画像がどこにあるか分かりませんが、 月単位のフォルダがあってその中に日ごとのファイルが入っている。 月単位でそれぞれのファイルの特定部分を抜き出して、一つのファイルにまとめたいということでしょうか? 「特定部分」というのはどのようにすれば分かるのでしょうか?レース数が違うようですので多分決めうちはできないのでしょうね。 これさえ特定できれば、簡単そうに見えるのですが、 VBAは分かりませんので、VBAにこだわるのであれば、整理してここのカテゴリーで新しく質問されればどなたかアドバイスしてくれると思います。 RやRubyで良ければプログラムを書いてみますが、直感ですがRubyの方が楽な様な。私はよくわかりませんがPerlやPythonでも同じようにできると思います。
その他の回答 (4)
- f272
- ベストアンサー率46% (8467/18126)
周りのできそうな人に聞くのが一番です。報酬として5000円もあげれば30分で解決ですね。
お礼
ご回答ありがとうございます。 そうですよね。 私もそう思うのですが、周りに詳しい方がいらっしゃいません。 一旦この質問は閉めて、不明点を再整理して、再質問しようと思っておます。 今回はどうもありがとうございました。
- ki073
- ベストアンサー率77% (491/634)
漠然とした質問なので答えにくいのですが、 エクセルで手でやるにはデータが多すぎるということのでしょうか? 手でやれないのなら何れにしてもプログラムっぽいものを書かないと無理なように思います。 データの集計を主にやりたいのでしたら、この際Rにでも挑戦されてはいかがでしょうか。Perlやsedなどよりは敷居が低いと思います。やりたい事をも少し具体的に書かれたらアドバイスは可能ですが。 http://www.r-project.org/index.html 例えばCSVファイルを読むだけなら read.csvでできますし、書くのはwrite.csvです。 日本語の情報はかなり有りますので検索してみてください。ちょっと癖があるソフトですが複雑なデータ集計には便利です。
補足
ki073様 ご回答ありがとうございました。 >手でやるにはデータが多すぎるということのでしょうか?やりたい事をも少し具体的に書かれたらアドバイスは可能ですが。 そうなんです。手でやるには、数が多すぎるんです。やりたい事を具体的に書きますので、大変お手数をお掛けしますが、宜しくお願い申し上げます。可能なら、パソコンに負担がかかるかもしれませんが、vbaでプログラムを書きたいのですが。 ある競馬予想ソフト(!)の予想・結果を1レース毎にcsvのファイル(ファイル名プレミアムモンスター2・2013年01月05日京都01R.csvからプレミアムモンスター2・2014年09月14日新潟12R.csv)で出力しています。 出力先は、デスクトップ→kirk77(フォルダ名です)→PM2(フォルダ名です)→13.01(レース開催日が2013 年01月という意味のフォルダ名です。)→13.01.05(開催日が2013年01月05日という意味のファイル名です。)から 14.09(2014年09月という意味のフォルダ名です。)→14.09.14(開催日が2014年09月14日という意味のファイル名です。) このCSVファイル(1日につき24レースから36レースあります。)を月別に13.01.xlsxから14.09.xlsxのファイルに、見やすいように、書き換えたいと思っています。 例の画像が3枚になりますので、後ほど、質問を3つ連続投稿させて下さい。(画像の添付が1つの質問に1つしかできませんので・・・) 番号275がcsvの画像です。276(セルA2からY2)と277(セルV2からAT2)が書き出したい例です。書き出したい例が横に長いので、画像を2つに分けました。 アドバイスを宜しくお願い申し上げます。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
>自動処理してくれるソフトをご存じないでしょうか? それはないのですよ。 CSVは単なるテキストデータです。あなたのパソコンでは、Windowsの悪弊でCSVにexcelが関連付けられているに過ぎないのです。 ⇒Comma-Separated Values - Wikipedia( http://ja.wikipedia.org/wiki/Comma-Separated_Values ) よって、テキストエディタで処理すべきであって、表計算ソフトで処理すべきではないのです。CSVを展開してテーブルにしたり、またCSVに戻す処理が大きな負担となります。 単なるテキストデータですから、テキストエディタで処理するのが簡単でとっても早い。SEDのようなストリームエディタだとファイル全体を開くことすらしないため、数万行あっても数分もかからず終了するでしょう。 ・SEDは、CUI( http://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%A3%E3%83%A9%E3%82%AF%E3%82%BF%E3%83%A6%E3%83%BC%E3%82%B6%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9 )に不慣れな人にはハードルが高いと思いますが、GUI( http://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%82%AB%E3%83%AB%E3%83%A6%E3%83%BC%E3%82%B6%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9 )で処理するためには表計算ソフトで開かなければなりませんから、最初の問題に戻ってしまう。 よって、 ・テキストエディタで開いて、正規表現を使って置換する ・PerlやRubyなどのテキスト処理が得意なプログラム言語を使ってプログラムを書く の二つしか方法はないのです。いずれもフリーソフトがたくさんあります。 例えばPerlなどは、とてつもなく強力なプログラム言語でありながら、記述方法の制約が少ないですから扱いやすいでしょう。 Perlで・・・ sub CSV2CSV{ my $tmp = $line; $tmp =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/; @values = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} ($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g); my @newValue = ($value[1],$value[3]);#2番目と3番目のデータ $newline = join ',', map {(s/"/""/g or /[\r\n,]/) ? qq("$_") : $_} @newValues; print OUT $newLine; } とか・・・
お礼
ご回答ありがとうございました。 自動処理してくれるソフトは無いのですね。 PerlやRuby・・・・・VBAも持て余している私には敷居が高過ぎます・・・・・(涙) 申し訳ございませんが、他の方の回答を待ってみます。 重ね重ねありがとうございました。深くお礼を申し上げます。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
SED( http://ja.wikipedia.org/wiki/Sed_%28%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%29 )が最も早い。 慣れないと難しいので、perlなどの正規表現扱えるテキストエディタで・・・
お礼
ORUKA1951様 ご回答ありがとうございました。 参照URLを拝見させて頂きましたが、正直、さっぱりわかりませんでした。(私、プログラム音痴なんです。) 自動処理してくれるソフトをご存じないでしょうか?(有料でも無料でもどちらでもOKです。あんまり、高価(1万円以上)なのは、困りますが・・・・・・。)
お礼
ご回答ありがとうございます。 申し訳ございません。画像を3枚、新しい質問に載せたのですが、1つの質問を終わらせる前に連続投稿したために、新しい質問が事務局の方に削除されたようです。 >RやRubyで良ければプログラムを書いてみますが ご親切にありがとうございます。RやRubyは書いて頂いても、扱い方がよくわかりません・・・・。 おっしゃるように、内容を整理して、VBAで、再質問してみたいと思います。 一旦、この質問は締めようと思います。 何回もありがとうございました。深く御礼を申し上げます。 (もし、何かありましたら、今後とも宜しくお願い申し上げます。)