• ベストアンサー

csvファイルのデータの間引きをしたい

はじめまして。 csvファイルをもとにMSChartでグラフ表示するのですが、データ量が大きすぎ、描画に時間がかかってしまいます。 そこで、csvファイルの間引きを考えたのですが、うまい方法が見当たりません。 何かよい方法はございませんでしょうか? よろしくお願いいたします。 P.S. 何行かおきに変数に読み込むことを考えたのですが、Line Inputでは解決出来ませんでした。

質問者が選んだベストアンサー

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

Excelなり何なりのアプリで読み込んで加工し、 別のファイルとして吐き出すのが、結果的に一番簡単だと思います。

kouritaiki
質問者

お礼

間引き機能を持ったソフトを作りたいので、VBの上で処理したいと思いまして。

その他の回答 (1)

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.2

> csvファイルをもとにMSChartでグラフ表示するのですが、データ量が大きすぎ、描画に時間がかかってしまいます。 今は、どうやってグラフ表示しているんでしょう? その方法のまま、単純に「間引き」をすればよいだけの様な気がしますが・・・ #例えば、ループ処理をやっているなら、 #「ループカウンタの数値を3で割ったあまりを求めて #余りが0の時だけグラフの表示対象にする」 #とかすれば1/3に間引けますよね・・・ > 何行かおきに変数に読み込むことを考えたのですが、Line Inputでは解決出来ませんでした。 これでも解決できそうな気がしますけど・・・ どう、やったんでしょう??

kouritaiki
質問者

お礼

何とかできました。 ありがとうございました。 Open "Sample.csv" For Input As #1 Do Until EOF(1) intRow = intRow + 1 For n = 0 To 4 Input #1, CsvR(n) Next n If intRow = 0 Then For c = 1 To 4 Line(c) = CsvR(c) Next c ElseIf intRow Mod 3 = 0 Then LineB(intRow) = CsvR(0) For c = 1 To 128 intDat(intRow, c) = CLng(CsvR(c)) Next c End If Loop Close #1

関連するQ&A

  • CSVファイルのデータ型について

    初めて質問します。よろしくお願いします。 拡張子「.xls」のファイルを「.csv」に変えるときに、データの形が変わってしまいます。 (エクセルでは「001」(文字列)のものが、CSVで保存すると「1」(数値)となってしまう) これを解決するために エクセルから文字列のデータを持ってきて貼り付け・保存しようとしましたが、 何度やってもデータは数値になってしまいます。 データ量が多いので、手ではとても直せません。。。 どなたか、よい方法がありましたらご教授ください。

  • 【Access2000】CSVファイルのインポート方法

    Access2000(OS:WinXP)でCSVファイルをインポートするVBAを作成しています。 Open "ファイル名" For Input As #txtFileNumber Input #txtFileNumber, txt1, txt2... 上記のようにtxt1,txt2...の変数に代入しているのですが、CSVファイルの行数が可変のため、どうすれば良いのか困っております。最大100フィールド程あるのですが…。何か良い方法がありましたらお教えください。

  • 65000セルを越えるCSVをExcelでグラフを書かせたい

    測定器からCSV変換され、そのデータを元にグラフを書いています。 解析するため、エクセルでグラフを書かせるのですが、何せ、時には65000セルを超える量であり、もはやエクセルではグラフ化できない状況にあります。 10msごとに変換されてくるCSVデータを後からマクロ等で、50ms,100ms・・・と少し間引きをし、65000セル以内におさめ、何とかグラフを書ける様にしたいと思ってます。 やり方教えて頂けないでしょうか? お願い致します。

  • CSVデータを読み込み、ファイルにカテゴリを分けて書きこむ

    CSVファイル例 01,0101,○○○,○○○□□,010101, 01,0102,○○○,○○○■□,010102, 02,0201,○○○,○○○□□,020101, ・・・・・ というファイルがあったとすると、 1番目の「01」「02」と、分けて別のファイルに保存がしたいです。 書き込み自体は出来るようなのですが、なぜかループが、番号ごとに1回しかされずに、 log/01.cgi 01<>0101<>○○○<>○○○□□<>010101 log/01.cgi 02<>0201<>○○○<>○○○□□<>020101 となってしまい、全ての生成したファイルには1行しか格納されていません。 ちなみに、csvファイルは1万行近くあります。 ソースはこのような感じです。 $log = "△△△.csv"; # ログ名 $lines = file("$log"); foreach ($lines as $l) { $line = explode(",",$l); $push_line = $line[0]."<>".$line[1]."<>".$line[2]."<>".$line[3]."<>".$line[4]."<>\n"; $LOG[$line[0]] .= $push_line; $cate = $line[0].",,".$line[1]; # サブカテゴリ用 $LOG[$cate] .= $push_line; # カテゴリ用ログを保存 } なお、csvファイルは、 01・・・ 02・・・ 01・・・ 03・・・ のようになっているため、全ての行を読み込むことはしていると思います。 しかし、ログファイルにはなぜか1行分しか書き込まれていません。書き込みの文は以下になります。 foreach($LOG as $key => $value){ $explode = explode(",,",$key); if($explode[0]){ $logfile = "./log/".urlencode($explode[0]).".cgi"; } $file = fopen("$logfile", 'w'); flock($file,LOCK_EX); fwrite($file, $value); flock($file,LOCK_UN); fclose($file); 解決法が分かる方、回答のほどよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • MySQLで連続csvファイルを読み込むために

    MySQL 5.6を最近使い始めました。 大量のcsvファイルで保存されているデータを読み込んで、データベースとして扱いたいのですが、どうすれば良いでしょうか? ファイル名は、 data1_1.csv data1_2.csv data1_3.csv data2_1.csv data2_2.csv といった形で、規則正しく並んでいるのですが、大量にあるため、ループを使って自動化したいと思っております。そのために、LOAD DATA INFILE ファイル名 を使って、このファイル名を順次変えて繰り返す方法がわかりません。 まず、ファイル名に変数が使えるのかと思って @file="data1_1.csv"としてファイル名を置き換えてみたのですが、エラーでした。これでは、この1_1を順次動かす以前に変数が無理なのかも?と思っています。 何かやり方があるようでしたら、どなたかお教えください。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • csvファイルのデータ変更方法について

    CSV(コンマ区切り)ファイルのデータ変更方法 1、エクセルでCSVファイルを開いて直接データを変更し保存する。   (1)CSVファイルをエクセルで開く時、SYLKファイルであることを確認    しましたが読み込むことが出来ません、ファイルにエラー...のメッセジーが   出るがファイルを開く事が出来る。   (2)CSVファイルをメモ帳で開きID ⇒ ”ID”に変更すると    ファイルをエクセルで開く時、エラーなく開く事ができる。     上記の方法は誤りですか?((2)の方法は私は使用していません) 2、CSVファイルをメモ帳で開き直接データを変更する。   (1)データ量が多いため変更場所を探すのに時間がかかる。   (2)CSVファイルをエクセルで開く時、エラーなく開く事ができる 以上、上記方法について其々解説をおねがいします。 また、標準的なCSVデータの変更方法、CSV取り扱い時の注意事項など教えて頂きたい。私は初心者ですのでよろしくお願いします。

  • EXCELでCSVファイルの読込み

    VBA超初心者でとても困っています。 仕事でEXCELのVBAを使って 現在開いているシートの中に 1つのCSVファイルからデータを読み込むのですが CSVデータの2行目をEXCELのC2へ。 4~10行目までを、EXCELのB5~B14へ マクロを使い、ボタン一つで自動入力させたいのです・・・。 Line Input も、やり方が悪いのかうまくいきません。 ヒントとなるやり方があればぜひ教えてください。

  • VB2005 でCSVファイルの読み込み

    VisualBasic2005でカンマ区切りのcsvファイルを読み込み、各項目を配列に取り込みたいのですが、どうすればいいのですか? VB6の時のように書くとエラーになります。 VB2005にはopen命令はないみたいですね。 Open ファイル名 For Input As #1 input #1,s(1),s(2),s(3) close #1 ちなみにcsvファイルの内容は "会社名(co.xxx,sss)","工場名","製品名(aaa,xxx)" のように各項目中にカンマやピリオドが入っています。 VB6はVBAではダブルコーテーションで囲めば正常に読み込めました。 どなたか教えて下さい。よろしくお願いします。

  • エクセルのシート中のデーターをMSchartでグラフ表示したい

    エクセルを使うのだったらそのままグラフを表示させればよい。 と思われる方が多いだろうと思いながら質問させていただきます。 エクセル上でフォームを作成し、その上へMSchartコントロールを貼り付けます。 そして、現在アクティブになっているシートのA1~A20のデーターをもとにグラフを表示させたいと思っています。 この時、A1~A20のデーターを直接MSchartで読み込む方法がありますでしょうか。 よろしくお願いいたします。

  • CSVファイルをExcelで表として表す

    初歩的なことで申し訳ありませんが、CSVファイルのデータを、Excelでグラフとして表したいのですが、方法を忘れてしまいました。 どなたか教えて頂けないでしょうか? 宜しくお願いします。

専門家に質問してみよう