• 締切済み

大きなデータのVBAを使った処理方法をおしえてください

1MB以上のCSVファイル数値測定データ(65000個以上)があります。ある程度狭い範囲の値の数値が不規則に連続していてグラフにすると横に波のようにいくつもの山と谷が連続するかんじです。この数値郡に下限値を自由に変えられるようして設定し下限ラインから上に出た山毎の最大値を拾い出す。というものをVBAで作りたいのですが、どうすればうまく作れるでしょうか? また、データが大きいとエクセルではなくVB単体で作るべきなのでしょうか?

みんなの回答

  • spnlight
  • ベストアンサー率46% (15/32)
回答No.3

初めに変数に下限値をセットして、データを1件づつ読み込み、変数に代入してある、数値と比べて大きければ、今回の数値を代入し直し、下限値より数値が下がったら、どこかに変数の数値を書き出し、変数に下限値をセットする。 例:(書出しは、エクセルシートに書出し) Sub OpenCsvFile() Const ForReading = 1, ForWriting = 2, ForAppending = 3 Dim fs, f, Counter1, Counter2, Filename, SheetName, data1, data2, cnt data1 = 460000000 Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.OpenTextFile("ファイル名をフルパスで", 1, TristateFalse) Do While f.AtEndOfLine <> True s = Val(f.ReadLine) If data1 < s Then If data2 < s Then data2 = s End If Else If data1 < data2 Then Cou = Cou + 1 RanG = "A" & Cou Range(RanG).FormulaR1C1 = Str(data2) data2 = data1 End If End If Loop f.Close End Sub あまり、きれいでないですが・・・

wedge1138
質問者

お礼

ありがとうございます。助かります。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

A No.1の(2)の一種ですが、 ADOを使ってテキストファイルに接続し、SQLで抽出している事例を http://okwave.jp/qa4150303.html のA No.5に回答しております。 最新のXL2007はどうか知りませんが、それ以前のバージョンは、約32000以上のデータはグラフ化できない(オーバー分は表示されない)ので何らかの条件を設定して、抽出する必要があります。 CSVファイルであれば、Scheme.iniは作らなくても大丈夫だったと思います。

wedge1138
質問者

お礼

ありがとうございます。参考になります。

  • nekotaru
  • ベストアンサー率50% (22/44)
回答No.1

データ数が65000以上でしたら (1)複数シートに分ける (2)VBAからACCESSS機能を呼び出して処理する 以上2つが考えられます。 VB単体よりEXCEL VBAからACCESSを呼び出すほうがいろいろとできるのでお勧めです。

wedge1138
質問者

お礼

早速のご回答有難うございます。すみませんがもう少し詳しく教えて頂けませんか?

関連するQ&A