- 締切済み
【vba】3波形の各最小値の差分算出方法について
同時に取得した3波形について、各波形の最小値(y軸値)を記録した時間(x軸)を拾い、max時間とmin時間の差分を算出したいです。 vba等で対処可能でしょうか? よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kon555
- ベストアンサー率51% (1845/3564)
少数のファイルならvbaまでは不要です。 時間の差分はExcelで普通に引き算できますから、問題になるのは最大値と最小値の特定だけで、それはフィルタやMAX,MINなどのシート関数で対応可能です。 測定機関係の波形データなら、多分A列が時間、B列が測定値になっていると思いますから、下記のサイトの手法で抜き出せます。 https://ja.extendoffice.com/documents/excel/2548-excel-find-highest-value-and-return-adjacent-cell.html https://toushitsu-off8.com/excel-max-koumoku/ 一度関数を作ってしまえば後は値貼り付けなどで簡単に算出できますから、vba化するメリットはファイル数が多い場合ですね。 おそらく貴方にvbaのスキルがない事を考えると、一度に処理するcsvファイルが20を超えてくるあたりまでは、シート関数で対処した方が無難だと思います。 あとこれは質問の範囲から外れますが、波形データなどでよくあるのですが。機械的に最大最小値を抜き取るとノイズなどの外れ値を拾いかねないので、前後のデータとの整合性の確認はしましょう。
- imogasi
- ベストアンサー率27% (4737/17069)
#1です。 自分のパソコンに、CSVデータファイルになっているのなら、エクセルシートに読み込ませるのは簡単。 VBAはエクセル・ワード・パワポ・アウトルックなどに向いたものがあるが、データ処理といえば、まずはエクセルVBAだろう。 関数もmx=Application.worksheetfunction.max(範囲の引数)のようなので求められる。 そのデータ例を数行(数十行必要かも)分挙げて、質問したら。 ーー たとえば、1次元配列に入ったデータも対象にできる。 例 Sub test01() da = Array(12, 23, 6, 7, 34) MsgBox Application.WorksheetFunction.Max(da) End Sub 実行で34が表示される。 単純なMAX、Minの値を探すのであれば、VBAでも簡単だが、内容が判らないから、軽々しく 簡単とは言えない。 ーー ちなみに、参考。 私はその柄じゃないが、理系のバックボーンの人は、 【Excel】高速フーリエ変換(FFT)のマクロ(VBA) https://imagingsolution.net/office/excel/fast_fourier_transform/ のようなのは、VBAで作れる、応用できる、理解できる、ようだ。 こんな類の質問か?
- imogasi
- ベストアンサー率27% (4737/17069)
どこかのファイルに(数値)データが記録されているのか。 考察時間を終わってから、その記録データを調べれば良いのか。 リアルタイムで波形データが入ってきて、各瞬間や、特定の時間スパン内で考えるのか。 オンラインかオフラインか、と言ったらよいのかな。 ーー 質問者は、このことで頭がいっぱいで、様子や課題は熟知しているのだろうが、ここの読者程度(文系の、よくてプログラマ)程度には、状況がよく判らないのではないか。 ちなみに、過去数十年に、このカテの質問に、同タイプの質問はなかったように思うが。 対話・質問しようとする、他人(読者・回答者の)のレベルを、推し量り、表現を変えることも、人生では大切だと思うが。 ここ(ここのカテゴリ)では、もし理工系の専門的な問題ならば、不向きのように思う。
お礼
ご指摘ありがとうございます。 説明不足で申し訳ありません。 別で確認いたします。 補足ですが、波形データの解析は取り終えた後になります。 取り終えたcsvデータの解析をvba、関数等で上記質問を解決できないかと思い質問いたしました。