- 締切済み
大きなデータのVBAを使った処理方法をおしえてください
1MB以上のCSVファイル数値測定データ(65000個以上)があります。ある程度狭い範囲の値の数値が不規則に連続していてグラフにすると横に波のようにいくつもの山と谷が連続するかんじです。この数値郡に下限値を自由に変えられるようして設定し下限ラインから上に出た山毎の最大値を拾い出す。というものをVBAで作りたいのですが、どうすればうまく作れるでしょうか? また、データが大きいとエクセルではなくVB単体で作るべきなのでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- spnlight
- ベストアンサー率46% (15/32)
初めに変数に下限値をセットして、データを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 あまり、きれいでないですが・・・
- mitarashi
- ベストアンサー率59% (574/965)
A No.1の(2)の一種ですが、 ADOを使ってテキストファイルに接続し、SQLで抽出している事例を http://okwave.jp/qa4150303.html のA No.5に回答しております。 最新のXL2007はどうか知りませんが、それ以前のバージョンは、約32000以上のデータはグラフ化できない(オーバー分は表示されない)ので何らかの条件を設定して、抽出する必要があります。 CSVファイルであれば、Scheme.iniは作らなくても大丈夫だったと思います。
お礼
ありがとうございます。参考になります。
- nekotaru
- ベストアンサー率50% (22/44)
データ数が65000以上でしたら (1)複数シートに分ける (2)VBAからACCESSS機能を呼び出して処理する 以上2つが考えられます。 VB単体よりEXCEL VBAからACCESSを呼び出すほうがいろいろとできるのでお勧めです。
お礼
早速のご回答有難うございます。すみませんがもう少し詳しく教えて頂けませんか?
お礼
ありがとうございます。助かります。