やりたい事というのは、オシロスコープで取り込んだパルス波形のデータをCSV形式でPCに取り込み、そのパルス数をエクセルに数えさせる、というものです。
Hレベル5.0、Lレベルを0とすれば、非常に短い間隔で0.1と5.0を行ったりきたりするのですが、パルスを数えるのであれば0から5に変わった回数と5から0に変わった回数を数えれば事足りると考え得ました。
そこでたとえば、
・A1~A10までが0.1(±0.3)
・A11~A20までが5.0(±0.3)
・A21~A30までが0.1(±0.3)
(以下略)
というように数値が入っているとして、
A10とA11、A20とA21のように、数値が急激に変化した場所の以外を残して削除する。もしくは、変化した回数をカウントしてそれが何回目に起きたのかをセルに書き込むにはどのようにすればよろしいでしょうか?
マクロは全く触った事が無く、周りに詳しいものもいないのに急いでデータがほしいため質問しました。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
方法は幾つかあると思いますが、ひとつの例として・・・・
とりあえず、マクロではなく関数式を使って、
B2セルに、=IF(OR(A2-A1>1,A1-A2)>1),1,0) ←こんな式を入れておいて、B列の下方にコピーすると隣のA列のセルが、1つ上のセルとの間で差が1上になったときにB列に1を表示します。
こうすれば数値の変わり目がわかるので、あとはその表示された物を、 SUM や COUNTIF 関数で数えれば、変化の回数は数えられると思います。
増えた場合と減った場合を分けて数えるのなら、
B2セルに、=IF(OR(A2-A1>1,2,IF(,A1-A2)>1),1,0) ←こんな式にして、COUNTIF 関数で1と2をそれぞれ数えれば判ると思います。
ありがとうございます。
確かにこれでカウントはできました。
が、正確ではないようです。調べてみると、
パルスが立ち上がっている途中、つまり変化の最中を読むと
(どうやら時折、5.0と0の間に3.3などといった数値が含まれるようです。)
どうやら正確にカウントできなかったようです。
これは自分が提示した条件が悪かったせいですね。
申し訳ありません。
ですが、考え方としては非常に納得が行きました。
ありがとうございました。
No.5
- 回答日時:
forbiddendollさん、
皆さんはセッセと回答しておられますが、私にはどうしても質問の意味がサッパリ分かりません。
》 …急激に変化した場所の以外を残して削除する
この「場所の以外を残して」とはどういうことですか?
例えば、下のA列のようなデータがあったとして、C列のようにすることですか?それともE列のようにすることですか?
》 …それが何回目に起きたのかを…
「それ」って何を指しますか?
A B C D E
1 0.1 -0.1 0.1
2 -0.1 4.7 -0.1
3 0.2 4.9 0.2
4 0.1 0.1 0.1
5 -0.2 -0.2
6 -0.2 -0.2
7 0.2 0.2
8 0.4 0.4
9 0.2 0.2
10 -0.1 5.1
11 4.7 5.2
12 5.1 5.0
13 5.2 5.3
14 5.0 5.2
15 5.3 4.9
16 5.2 5.2
17 4.9 4.8
18 5.2 0.3
19 4.8 -0.2
20 4.9 0.1
21 0.1 0.3
22 0.3 -0.1
23 -0.2 -0.1
24 0.1 0.2
25 0.3 0.0
26 -0.1 0.1
27 -0.1
28 0.2
29 0.0
30 0.1
》 …急激に変化した場所の以外を残して削除する
>この「場所の以外を残して」とはどういうことですか?
>例えば、下のA列のようなデータがあったとして、C列のようにす>ることですか?それともE列のようにすることですか?
私にはあなたの問いかけこそ理解できませんが?
例のつもりでなにやら数値を書いてありますが、C列もE列も一体何をもって数値を抜き出したのか説明も無いので何を思ってこの数値が取り出されたのか分かりません。
質問内容を見ていただければおおよそ分かると思いますが、
仮にA列に
1 0.1
2 -0.1
3 4.8
4 5.1
5 -0.1
と数値が入っていれば、1と3を取り出したいのですよ。あなたの例えのC列には4.7と4.9が入っていますが、これの何所が「急激な変化」なんですか?
》 …それが何回目に起きたのかを…
>「それ」って何を指しますか?
正直、なぜこんな場で日本語の教育をしなければならないのか、全く持って理解できませんが説明しましょうか。
「A10とA11、A20とA21のように、数値が急激に変化した場所の以外を残して削除する。もしくは、変化した回数をカウントして[それ]が何回目に起きたのかをセルに書き込むにはどのようにすればよろしいでしょうか?」
とあり、疑問にされているのは[]ないのそれが何をさしているか?という事ですが。
この場合、[それ]がさすものは「急激に変化した場所」でしょう。確かに[変化した回数]ともとれますが、質問内容全体からどちらをさすかなんて少し考えれば分かると思いますが?
>皆さんはセッセと回答しておられますが、私にはどうしても質問の意味がサッパリ分かりません。
分からないなら引っ込んでなさい。
むしろ私には、貴方にだけ日本語が通じなかった事のほうが分かりません。教えてくれますか?
No.4
- 回答日時:
信号処理などの門外漢なので、下記が使えるか質問者が考えて見てください。
B1:B12
0
1
0
1
0
0
1
0
0
1
0
0
0と1だが数字は何でも良い、直前の値と比べて変化した回数を勘定するつもり。
式として、
=SUM(IF(B1:B11>B2:B12,0,1))
と入れて、SHIFT、CTRL,ENTERの3つのキーを同時押しする。配列数式という。式の前後が{}で囲まれる。
結果 7
エクセルグラフを描くと突起が4つあることが判る。
一般的には尖点の高さは不揃い?かと思うが。
(結果+1)/2がピーク(微分計数の符号の変化のようなもの。尖り点)の数ではないかと思うがどうだろう。
ありがとうございます。
これをみて、いっそ数値を2値化すればいい事にきがつきました。
4.0以上なら1、それ以下は0とすれば、3.3などという電圧が変化していく最中にも対応でき、
その2値化した数値に対してNo.1の解答者の方法で変化した回数をカウントすれば問題なくパルス数を数えることができました!
みなさんのおかげで非常に素早くほしい結果を得られる状態になりました。
ありがとうございました。
No.3
- 回答日時:
カッコがちょっとおかしかったようです。
B2セルに、=IF(OR(A2-A1>1,A1-A2>1),1,0) と
=IF(A2-A1>1,2,IF(A1-A2)>1,1,0)
こうでしたm(__)m
No.2
- 回答日時:
次の方法は如何でしょうか。
(1)データ表の先頭行に見出し行を挿入、仮にA1(データ)、B1(変化)、C1(発生回数)
(2)B2に0を入力、B3に=(ABS(A2-A3)>4)*1を入力、B2のフィルハンドル(セル枠右下の■)をダブルクリック
※差分を4としていますが任意の値に調整して下さい。
(3)C2に=ROW(A1)を入力、C2のフィルハンドルをクリック
(4)データ→フィルタ→オートフィルタ→B列のフィルタ矢印ボタンを押下、1を選択して抽出セル範囲をコピーして別シートに形式を選択して貼り付け→値を選択して貼り付け
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの関数(式)を教えてください。 1 2022/09/27 09:28
- Visual Basic(VBA) VBAで大量データの処理 3 2022/11/15 21:53
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
- PowerPoint(パワーポイント) ExcelのグラフをPowerPointに貼り付けした際にデータテーブルの小数点以下を削除したいです 2 2023/02/28 19:46
- Excel(エクセル) セルを数式で指定する方法 5 2022/04/13 16:55
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Excel(エクセル) 電卓は正しいのに エクセルで計算させると間違った答えです。なぜ? 7 2022/08/11 07:04
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) エクセルの印刷範囲をページ単位で可変にする方法 3 2022/05/23 13:04
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数の文字列のいずれかが含ま...
-
Excelの入力規則で2列表示したい
-
数式が入ったセルを含めて、数...
-
SUMに含まれる範囲から特定のセ...
-
別のセルに値が入力されたら、...
-
列の数字に100をかけたい
-
エクセルでセルの値分の個数の...
-
Excel上でのデータ数字が連番で...
-
エクセル:横長の表を改行して...
-
エクセルで表示されている数字...
-
エクセルで曜日に応じた文字を...
-
HYPERLINKとADDRESSとMATCHの組...
-
【EXCEL】IPアドレス範囲に該当...
-
【EXCEL】指定したセルの値を他...
-
エクセルで公平にチーム分けす...
-
EXCELの特定セルを編集不可・コ...
-
EXCELでA列とB列の文字が合わせ...
-
【エクセル】同じ文字を文頭に...
-
C列にF列の担当者(A〜)を順番...
-
スペースとスペースの間の文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数の文字列のいずれかが含ま...
-
Excelの入力規則で2列表示したい
-
SUMに含まれる範囲から特定のセ...
-
数式が入ったセルを含めて、数...
-
Excel上でのデータ数字が連番で...
-
列の数字に100をかけたい
-
スペースとスペースの間の文字...
-
別のセルに値が入力されたら、...
-
エクセルで表示されている数字...
-
エクセルでセルの値分の個数の...
-
エクセル:横長の表を改行して...
-
[関数について]わかる方教えて...
-
エクセル関数に詳しい方教えて...
-
エクセルで、毎日の走行距離(...
-
エクセルのsumifでかけ算してか...
-
HYPERLINKとADDRESSとMATCHの組...
-
エクセルで曜日に応じた文字を...
-
入退社日より各月末の在籍者数...
-
エクセルで1列全部10倍したい
-
エクセルで小数を含む数値の抽出
おすすめ情報