• ベストアンサー

CSVデータ集計プログラムをおしえてください

エクセルでは対応し切れないCSVファイル数値測定データ(65500個以上)があります。ある程度狭い範囲の値の数値が不規則にカンマ区切りで連続していてグラフにすると横に波のようにいくつもの山と谷が連続するかんじです。この数値郡に下限値を自由に変えられるようして設定し下限ラインから上に出た山毎の最大値を拾い出す。というプログラムをVBAで作りたいのですが、うまく出来ません。今はCSVデータをVBで開き、新たなファイルへ移せるところまで出来たのですが。その後が複雑すぎてわかりません。データが100万位になるのでVB単体で作ってます。助けてください(;o;)

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

  • ベストアンサー
回答No.9

>さっそく検証してみた所、split関数で難なく時間-ピーク値が >空白なしで抜き出せました。 >問題はこのあとパルスと合わせる方法なのですがなにか >いいやり方はありませんか? パルスデータファイルと電圧データファイルは、同じ行数で 同じ時間間隔になっていますか。 要するにパルスデータファイルと電圧データファイルの任意の 行数のデータは同じ時刻なのですか?。それとも違うのですか。 同じ場合は、比較的簡単です。もう一つ同時にパルスデータも Open し、同時に平行して読み込んでいけばいいだかなのだが。 違う場合は少しややこしい。 とりあえず、同じとした場合のソース。 '事前準備 Set rs = CreateObject("Scripting.FileSystemObject") Set r = rs.OpenTextFile(ReadFile.Text, 1) Set rsP = CreateObject("Scripting.FileSystemObject") Set rP = rs.OpenTextFile("パルスファイル", 1) Set ws = CreateObject("Scripting.FileSystemObject") Set w = _ ws.CreateTextFile(WriteFile.Text, True) cmax = -99999999 '実際の計算 Do Until r.AtEndOfStream   rLine = r.readLine:   LineX = slit(rLine & ",,,,,,,",",")   wLine = LineX(4)   rPLine = r.readLine:   PLineX = slit(rPLine & ",,,,,,,",",")   '閾値処理   workA = wLine   workB = Threshold.Text   If workA < workB Then     If cmax > workB Then       wLine = cmaxTime & "," & Format(cmax, "##.00") & "," & PLineX(4) 【A】       w.WriteLine (wLine)     End If     cmax = -9999999999#   Else     If cmax < workA Then cmax = workA:cmaxTime=LineX(3)   End If Loop '事後処理 r.Close: w.Close: 【A】で、時間と電圧とパルスをセットして書き込む。 違う場合は、時間のずれを補正する必要があります。少しややこしいが、 それは、その時に再度、ここで質問して下さい。 あと、ファイルのオープン方法だけど、どうして Set rs = CreateObject("Scripting.FileSystemObject") Set r = rs.OpenTextFile(ReadFile.Text, 1) を利用しているの?。 普通のオープンでは駄目なの? Open ファイル名 for inut as #1 が普通なのですが。 CreateObject("Scripting.FileSystemObject") OpenTextFile(ReadFile.Text, 1) は、ファイルの内容を直接エクセルの特定のシートか、セルに結びつけて 利用するとかする場合は便利だけど。 普通のオープンのがこの場合ソースがみやすい。 open ReadFile.Text for input as #1 open "パルスファイル" for input as #2 open WriteFile.Text for output as #3 cmax = -99999999 '実際の計算 Do Until eof(1)   line input #1,rLine   LineX = slit(rLine & ",,,,,,,",",")   wLine = LineX(4)   line input #2,rPLine   PLineX = slit(rPLine & ",,,,,,,",",")   '閾値処理   workA = wLine   workB = Threshold.Text   If workA < workB Then     If cmax > workB Then       wLine = cmaxTime & "," & Format(cmax, "##.00") & "," & PLineX(4) 【A】       print #3,wLine     End If     cmax = -9999999999#   Else     If cmax < workA Then cmax = workA:cmaxTime=LineX(3)   End If Loop '事後処理 close #1 close #2 close #3

raphael01
質問者

お礼

有難うございます!ファイルのOPENはたまたま引用したのが それだっただけでして、、参考になります! 時間は電圧、パルスにズレなく揃っています。 早速、検証してみます。

raphael01
質問者

補足

無事、時間・電圧・パルスのDATAがセットで抜き出されました。 有難うございました。 あとはグラフ表示なのですが、やはり全体を一括でグラフ表示 する事は無理なんでしょうか?

すると、全ての回答が全文表示されます。

その他の回答 (9)

回答No.10

先ほどのソースで一部間違っています。訂正します。 cmax = -99999999 '実際の計算 Do Until eof(1)   line input #1,rLine   LineX = slit(rLine & ",,,,,,,",",")   wLine = LineX(4)   line input #2,rPLine   PLineX = slit(rPLine & ",,,,,,,",",")   '閾値処理   workA = wLine   workB = Threshold.Text   If workA < workB Then     If cmax > workB Then       wLine = cmaxTime & "," & Format(cmax, "##.00") & "," & cmaxPulse    ここと       print #3,wLine     End If     cmax = -9999999999#   Else     If cmax < workA Then cmax = workA:cmaxTime=LineX(3):cmaxPulse=PLineX(4)  ここを修正   End If Loop '事後処理 close #1 close #2 close #3 上の内容でOKならグラフ表示は可能です。 グラフの表示に関してはどこまでご存知なのですか?。全く?。それとも少し。 大まかには、上で求めた、ピーク値の時間データ(A列)、電圧データ(B列)、 パルスデータ(C列)にいれて、グラフの散布図をかけばOKだとおもいます。 不明ならここで質問して下さい。

raphael01
質問者

お礼

長期に渡り、有難うございました。グラフも作成出来、すべて解決 致しました。今後とも宜しくお願い致します。

すると、全ての回答が全文表示されます。
回答No.8

プログラムみる限り、どうみても、ピーク値だけをファイルに落としても、 グラフを描画する事は不可能だと思います。なぜなら、ピーク値だけだと 分からないからです。時間が特定できないピーク値だけのファイルは 単にゴミファイルと同等です。 ソースをみるかぎり、その点を考慮して多少時間を合わす為に workA = wLine workB = Threshold.Text If workA < workB Then wLine = ""              【A】 If cmax > workB Then wLine = Format(cmax, "##.00") End If w.WriteLine (wLine) cmax = -9999999999# Else If cmax < workA Then cmax = workA wLine = ""              【B】 w.WriteLine (wLine) End If 【A】の位置であえて空白行を入れていますが、 【B】の位置でも空白行を入れてファイルに落としていかないとどうみても 最低でも時間がずれます。そうでないと閾値をでた時は、ピーク値1点だけ おちるみたいで、閾値をでたデータのピーク値1点以外のデータの時間分の データが欠落しているので、その時間分だけ短くなると思います。 今回の内容を作成しようと思えば、最低でもピーク値とその時点の時間を セットにして落とさないと不可能です。 むしろ、ピーク値と時間がセットでファイルに書き込まれていれば、無駄な 空白行はいらない。その目的を達する為には、最低でも何度も書いているが 「Split 関数」を使える様にならないと無理だと思う。#5の回答をみて まず Split 関数 を利用した内容でソースを書き直してみたら。 「Split 関数」を使う時は、変数の定義はエクセルの場合、  Dim 変数 だけで、その後に型宣言をしたら駄目なので注意して下さい。 その後の事はそれからだ。今のソースのままだと、これ以上複雑な処理を 追加で書き込んでいく事は、不可能だ。ソースがじじくさいです。 綺麗なソースは、幾ら複雑な処理を追加で書き込んでいっても、すんなりと 解読できるものです。 あと、失礼ですが、レスポンスが大変遅いです。こちらからの回答は、最低でも 当日以内に回答しているのに、質問者側が、1週間とか4日後に確認されて 更に質問されると、なにかおかしいと思います。 Private Sub StartCommand_Click() Dim rs, r: Dim ws, w: Dim i As Long Dim count As Long Dim max As Integer Dim start As Long Dim rLine As String Dim wLine As String Dim split As String Dim workA As Double Dim workB As Double Dim cmax As Double Dim cmaxTime As string Dim LineX '事前準備 Set rs = CreateObject("Scripting.FileSystemObject") Set r = rs.OpenTextFile(ReadFile.Text, 1) Set ws = CreateObject("Scripting.FileSystemObject") Set w = _ ws.CreateTextFile(WriteFile.Text, True) cmax = -99999999 '実際の計算 Do Until r.AtEndOfStream   rLine = r.readLine:   LineX = slit(rLine & ",,,,,,,",",")   wLine = LineX(4)   '閾値処理   workA = wLine   workB = Threshold.Text   If workA < workB Then     If cmax > workB Then       wLine = cmaxTime & "," & Format(cmax, "##.00") 【C】       w.WriteLine (wLine)     End If     cmax = -9999999999#   Else     If cmax < workA Then cmax = workA:cmaxTime=LineX(3)   End If Loop '事後処理 r.Close: w.Close: End Sub 【C】の wLine = cmaxTime & "," & Format(cmax, "##.00") で、ピーク値のデータと その時の時刻データをセットに落とす様になっている。 上のソースを動作検証してから、その後の事は、またここで、相談して下さい。 レスポンスはくれぐれも早くにお願いします。マナーだと思います。

raphael01
質問者

お礼

お世話になっております。ご回答有難うございます。 ご指摘どおりレスポンスが遅く申し訳ありませんでした。 確かにわざわざ複雑にしてしまっている感じで、困ってました。 早速検証してみます。

raphael01
質問者

補足

さっそく検証してみた所、split関数で難なく時間-ピーク値が 空白なしで抜き出せました。 問題はこのあとパルスと合わせる方法なのですがなにか いいやり方はありませんか?

すると、全ての回答が全文表示されます。
回答No.7

#6 の回答者です。 一部訂正します。   Dim cb    cm = "aaaa,aaa,aaa,bbbb"    cb = Split(cm, ",")      ' <==== カンマがぬけていました 失礼しました。

raphael01
質問者

補足

お世話になっております。ご回答有難うございます! 又、いろいろと考えたのですが当初の目標のピーク値抜き出しまで 出来た時点で現在止まってしまっております。とりあえずこの プログラムで抜き出した電圧データとパルスデータを合わせて 検証しています。が、上から指摘があり、さらに複雑に 作らなければならなくなってしまいました。 現状をまとめますと下記の様になっています。 データとしては、二つのデータファイルが一度の測定で得られます。 ・パルス-時間データ(約27MB100万DATA) ・電圧-時間データ(〃) データはカンマ区切りで↓のような値が連続しています。 4列目時間、5列目パルス ,,,-0.999792000000000,-0.2400    ,,,-0.999790000000000,-0.2400 ,,,-0.999788000000000,-0.2400 ,,,-0.999786000000000,-0.2400 ,,,-0.999784000000000,-0.2400 ,,,-0.999782000000000,-0.2400 ,,,-0.999780000000000,-0.3200 ,,,-0.999778000000000,-0.2400 4列目時間、5列目電圧 ,,,-0.999792000000000,0.0800 ,,,-0.999790000000000,0.0800 ,,,-0.999788000000000,0.0800 ,,,-0.999786000000000,0.0000 ,,,-0.999784000000000,0.0800 ,,,-0.999782000000000,0.0800 ,,,-0.999780000000000,0.0000 ,,,-0.999778000000000,0.0000 現状は電圧のデータを↓のプログラムでピーク値抜き取りしています。 Private Sub StartCommand_Click() Dim rs, r: Dim ws, w: Dim i As Long Dim count As Long Dim max As Integer Dim start As Long Dim rLine As String Dim wLine As String Dim split As String Dim workA As Double Dim workB As Double Dim cmax As Double '事前準備 Set rs = CreateObject("Scripting.FileSystemObject") Set r = rs.OpenTextFile(ReadFile.Text, 1) Set ws = CreateObject("Scripting.FileSystemObject") Set w = _ ws.CreateTextFile(WriteFile.Text, True) cmax = -99999999 '実際の計算 Do Until r.AtEndOfStream rLine = r.readLine: max = LenC(rLine) '行の文字サイズ取得 start = 0 '開始位置変数クリア count = 0 'カンマカウントクリア '切り出し位置サーチ For i = 1 To max split = MidC(rLine, i, 1) If split = "," Then count = count + 1 If count = 4 Then start = i + 1 End If End If Next i wLine = MidC(rLine, start, max - start) '閾値処理 workA = wLine workB = Threshold.Text If workA < workB Then wLine = "" If cmax > workB Then wLine = Format(cmax, "##.00") End If w.WriteLine (wLine) cmax = -9999999999# Else If cmax < workA Then cmax = workA End If Loop '事後処理 r.Close: w.Close: End Sub グラフ表示は横軸に時間、縦軸に電圧・パルスで規則的なパルスの 何波目のどの位置に電圧ピーク値があるかを検証したいのが目的です。 現在は5列目の電圧データのみ抜き出してエクセルで部分的に 表示させてパルスデータと合わせてグラフ表示させているのですが、 4列目の時間データも一緒に抜き出して空いた行を詰めてデータ保存 が出来ればエクセルでも全データ表示出来るのではないかと思い、 悩んでいます。又、そのデータを使ってパルス側の時間データと 相関させて簡単にパルスの位置を割り出せる様にしたいのですが、 まったくわかりません。教えていただけませんか?

すると、全ての回答が全文表示されます。
回答No.6

split の使い方は、下記の通りです。    Dim cb    cm = "aaaa,aaa,aaa,bbbb"    cb = Split(cm, "") 確認です。 電圧ピークは、電圧データファイルである値から上に出た ところから、次のある値以下になるまでの間の電圧データ郡 のピーク値でよかったのですね。以後、電圧がある値以上から 以下になるまでの山ごとのピーク値をすべて拾うでよかったのですね。 また、この場合、時間軸はどうなっているのですか。通常だと、 等時間間隔でサンプリングするとは思うんだけど、もし、等時間間隔で サンプリングするなら、行数=時間(時刻)となるのだけど、そうでは ないのですか?。時刻データも電圧データの中に入っているとのこと ですか?。またサンプリング時間は等間隔ではないのですか。 もうひとうのファイルにパルスー時間データファイルがあるみたいですが、 電圧ピーク値の値の時のパルス数をみたいとのことなのですが、 当初は5番目の値のみを拾うつもりが4番目の時間データも セットで拾う必要が出てしまいました。 とのところがこちらで理解できていません。 5番目の所に電圧ピーク値があり、パルスー時間データファイルの 5番目のパルスデータが電圧ピーク値のパルス値ではないのですか?。 それなのに、4番目の時間データもセットで拾う必要が出てきたとの 意味が理解できていません。 時間軸が、電圧データファイルとパルスデータファイルで違うのですか?。 違う為に、電圧ピーク値前後のデータがいるとの理解でいいのですか?。 電圧ピーク値前後はどれくらいの前後なのですか? グラフのイメージは 横軸に時間、縦軸にパルス、電圧なのですか。 100万データをすべて、表示することは可能でも処理スピードの問題で とてもエクセルでは使えないかも?。他の言語(VC)とかにするのが 妥当かも?。

すると、全ての回答が全文表示されます。
回答No.5

最終的にどの様にされるのですか?。もう少しわかるといいのですが。 下限ラインから上に出る度に最大値だけを求めるのですか?。 それと下限ラインから上に出る度にファイルに保存する のですか?。ソースからはそのあたりが全くないので。 下限ラインから上に出る度に最大値だけを求めるのであれば Dim rs, r: Dim ws, w: Dim i As Long Dim count As Long Dim max As Integer Dim start As Long Dim rLine As String Dim wLine As String Dim split As String Dim workA As Double Dim workB As Double dim cmax as double dim cdat as string '事前準備 Set rs = CreateObject("Scripting.FileSystemObject") Set r = rs.OpenTextFile(ReadFile.Text, 1) Set ws = CreateObject("Scripting.FileSystemObject") Set w = _ ws.CreateTextFile(WriteFile.Text, True) cmax=-99999999 '実際の計算 Do Until r.AtEndOfStream rLine = r.readLine: max = LenC(rLine) '行の文字サイズ取得 start = 0 '開始位置変数クリア count = 0 'カンマカウントクリア '切り出し位置サーチ For i = 1 To max split = MidC(rLine, i, 1) If split = "," Then count = count + 1 If count = 4 Then start = i + 1 End If End If Next i wLine = MidC(rLine, start, max - start) '閾値処理 workA = wLine workB = Threshold.Text If workA < workB Then wLine = ""   if cmax>workB then    cdat=cdat+format(cmax,"##.00") & ","   end if   cmax=-9999999999 else if cmax<workA then cmax=workA End If w.WriteLine (wLine) Loop   if cmax>workB then    cdat=cdat+format(cmax,"##.00") & ","   end if '事後処理 r.Close: w.Close: で、cdat に下限ラインから上に出る度の最大値が 入っています。 あと、データの切り出し位置サーチのところなんだけど、 VBAって split 関数を使えなかったのかな?。 使えたとおもうんだけど。

raphael01
質問者

補足

ありがとうございます!split関数は使えるはずなのですがやり方が おかしかったのか認識してくれず使いませんでした。もっとうまい やり方があれば教えて頂けませんか? 最終的には電圧-時間データファイルで電圧ピーク値を拾い、 パルス-時間データファイル(両ファイル時間は同期)と 合わせたときのピーク値の位置(何番目のパルスのどの位置で 発生しているか)を見たいのです。 なので、当初は5番目の値のみを拾うつもりが4番目の時間データも セットで拾う必要が出てしまいました。又、縮まったデータを エクセル等でパルス上にプロットした形でグラフ表示する事が 最終目的なのです。すみません、やりながら目的が定まった感じで。 100万データの中に散らばってるピーク値をパルスデータ上にプロット するならエクセルでは結局全て表示出来ませんよね。どうすれば 全体をグラフ表示出来るんでしょうか。

すると、全ての回答が全文表示されます。
  • iriyak
  • ベストアンサー率48% (40/82)
回答No.4

こんにちは。 こうしたテキスト処理に特化した処理系をトライしてみる、というのも一つの手です。Excel VBA や VB のような汎用な処理系から離れてみて。 回答者は Awk をおすすめします。以下は回答者 Awk 関連コメントです。 QNo.4195744 データ抽出に時間がかかり困っています http://okwave.jp/qa4195744.html

raphael01
質問者

お礼

遅くなって申し訳ありません!ご回答有難うございます。あれから自分なりに頑張ってここまで出来たのですが、最後のピーク値抜き取りの部分が良くわからずにいます。別プログラムにした方がいいのでしょうか? Private Sub StartCommand_Click() Dim rs, r: Dim ws, w: Dim i As Long Dim count As Long Dim max As Integer Dim start As Long Dim rLine As String Dim wLine As String Dim split As String Dim workA As Double Dim workB As Double '事前準備 Set rs = CreateObject("Scripting.FileSystemObject") Set r = rs.OpenTextFile(ReadFile.Text, 1) Set ws = CreateObject("Scripting.FileSystemObject") Set w = _ ws.CreateTextFile(WriteFile.Text, True) '実際の計算 Do Until r.AtEndOfStream rLine = r.readLine: max = LenC(rLine) '行の文字サイズ取得 start = 0 '開始位置変数クリア count = 0 'カンマカウントクリア '切り出し位置サーチ For i = 1 To max split = MidC(rLine, i, 1) If split = "," Then count = count + 1 If count = 4 Then start = i + 1 End If End If Next i wLine = MidC(rLine, start, max - start) '閾値処理 workA = wLine workB = Threshold.Text If workA < workB Then wLine = "" End If w.WriteLine (wLine) Loop '事後処理 r.Close: w.Close: End Sub

すると、全ての回答が全文表示されます。
回答No.3

まず問題を整理してみましょう。 データが100万位ある。データがオシロのデータである。電圧値である。数値幅が狭い範囲である。 この当たりから推測すると、仕切り値から上のデータ郡がどれだけあるかと予測を立てて からコーディングしないといけない。 仮にですよ、ひと山のデータ郡のデータ点数が1000点あったとした場合、単純計算で、 1000個のデータ郡が存在する事になります。こうなると、ファイルで処理をするにしても 1000個のファイルが出来る事になります。この当たりはデータの中味を見て予測を 立てるのですが、もしその結果、仕切り値から上のデータ郡を超える山の数が1000個近く あれば、今度はファイルの数が多すぎて他に問題がでます。この当たりを最初に確認して みましょう。ひと山のデータ郡をファイルにするのは、まーせいぜい100個までが限界だと 思いいます。 私ならファイルには落とさないで、そのまま処理をしてしまいます。 dim cmax as double dim cdat as string ' ここにデータ郡のピーク値をためる dim cs as string dim cb() as string cmax=-9999999999 open ファイル名 for input as #1 do until eof(1)   line ipnut #1,cs   cb=slplit(cs,",")   if val(cb(4))>仕切り値 then        ' val(cb(4))が5列目のデータ     if cmax<val(cb(4)) then cmax=val(cb(4))   else     if cmax>仕切り値 then      cdat=cdat+format(cmax,"##.00") & ","     end if     cmax=-9999999999   end if loop close #1 if cmax>仕切り値 then   cdat=cdat+format(cmax,"##.00") & "," end if 以上でcdatの中味は、ひと山のデータごとの最大値のデータがカンマ区切りで集まっています。 尚、上のサンプルプログラムはデバッグしていないので、あくまでも参考までです。 バグがあれば悪しからず。

raphael01
質問者

お礼

遅くなって申し訳ありません!ご回答有難うございます。あれから自分なりに頑張ってここまで出来たのですが、最後のピーク値抜き取りの部分が良くわからずにいます。別プログラムにした方がいいのでしょうか? Private Sub StartCommand_Click() Dim rs, r: Dim ws, w: Dim i As Long Dim count As Long Dim max As Integer Dim start As Long Dim rLine As String Dim wLine As String Dim split As String Dim workA As Double Dim workB As Double '事前準備 Set rs = CreateObject("Scripting.FileSystemObject") Set r = rs.OpenTextFile(ReadFile.Text, 1) Set ws = CreateObject("Scripting.FileSystemObject") Set w = _ ws.CreateTextFile(WriteFile.Text, True) '実際の計算 Do Until r.AtEndOfStream rLine = r.readLine: max = LenC(rLine) '行の文字サイズ取得 start = 0 '開始位置変数クリア count = 0 'カンマカウントクリア '切り出し位置サーチ For i = 1 To max split = MidC(rLine, i, 1) If split = "," Then count = count + 1 If count = 4 Then start = i + 1 End If End If Next i wLine = MidC(rLine, start, max - start) '閾値処理 workA = wLine workB = Threshold.Text If workA < workB Then wLine = "" End If w.WriteLine (wLine) Loop '事後処理 r.Close: w.Close: End Sub

すると、全ての回答が全文表示されます。
  • tom11
  • ベストアンサー率53% (134/251)
回答No.2

データ100万でも、データ100位の擬似データつくり プログラムを作ってみては、如何ですか。?? 100件のプログラムでも、プログラミングが出来るなら、 容易に、100万件に拡張できるはずです。 >今はCSVデータをVBで開き、 >新たなファイルへ移せるところまで出来たのですが これって、プログラムソースを公開できないのですか。??? ちなみに、何のために新たなファイルを作っているのですか?? >下限ラインから上に出た山毎の最大値 この表現、最大値を求めたいのですか、極大値を求めたいのですか 単に極大値を全部求め、極大値が、下限値より大きい 独立変数を求めればいいのでは、 ちなみに、エクセルのvbaでも、出来そうですが、 vbでやる場合は、vbのバージョンも、補足してください。

raphael01
質問者

補足

説明不足で申し訳ありません。 VB6.0でオシロスコープで電圧値とパルス値を計測しています。下記が データのヘッダー部です。メモ帳で表示してます。 頭には文字も入ってしまってましてさらにどうすればいいか。 5列目のみの値を対象にして仕切り値を0と設定した場合に0より上に飛び出たデータ郡の中のピーク値を拾い、又飛び出てきたら同じくピーク値を拾うというものです。 とりあえずCSVデータがVBで開けて別ファイルに移せないと始まらないという事でそこまでのプログラムがやっと作れた状況なのです。 Record Length,1000000,Points,-0.999999408,0 Sample Interval,2.00E-06,s,-0.999997408,-0.16 Trigger Point,5.00E+05,Samples,-0.999995408,-0.08 Trigger Time,5.92E-07,s,-0.999993408,-0.08 ,,,-0.999991408,-0.08 Horizontal Offset,-1,s,-0.999989408,-0.08 ,,,-0.999987408,-0.08 ,,,-0.999985408,0 ,,,-0.999983408,-0.08 ,,,-0.999981408,0.08 ,,,-0.999979408,0 ,,,-0.999977408,0 ,,,-0.999975408,0 ,,,-0.999973408,0 ,,,-0.999971408,-0.08 ,,,-0.999969408,0 ,,,-0.999967408,0 ,,,-0.999965408,-0.08 5列目を拾うのと仕切り値の設定というだけでもどう手を付けていいやらわかりません。

すると、全ての回答が全文表示されます。
  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.1

> 今はCSVデータをVBで開き、新たなファイルへ移せるところまで出来た・・・ まずは、下限ラインから上に出た山を見つける度に、それを新たなファイルとして作成してみてはいかがですか? そのファイル群ができたところで、こんどは各ファイル毎に最大値を拾ってみましょう。

raphael01
質問者

お礼

ありがとうございます。そうですよね、そんなイメージですよね。なにか作成例があれば・・・

すると、全ての回答が全文表示されます。

関連するQ&A