ExcelでON,OFFの切り替え時間をカウントしたい。
MS Excelにてデータの整理を行っています。
今回、ONとOFFの信号を読み取ってそれを各セルに表示しているのですが、
それをカウントしたいのです。
現在エクセル上では以下のようになっています。
A B C D
1 時間 信号
2 1 ON
3 2 ON
4 3 ON
5 4 ON
6 5 OFF
7 6 OFF
・ ・ ・
・ ・ ・
・ ・ ・
これらを
(1)トップ(セル番B2)から始め、下のセルをどんどん読んでいく
(2)ONが連続していればカウント続行、OFFになったらカウントを止める。そのカウントをcell C2に入れる。
(3)次は逆にOFFをカウントしていき、同じようにONになったらカウントを止める。そのカウントをcell D2に入れる
(4)(2)と(3)を繰り返し行い、ONのカウントはC列に、OFFのカウントはD列に入力していく。
(5)参照する対象のセルが空白であれば、演算(マクロ?)をストップする。
というふうにしたいのですがよくわかりません。
なお、時間は1セル1秒の間隔になっていますので、セルの数をカウントする方法で構いません。
VBAを使っても構いませんので、どなたかご教授お願いいたします。
No.2ベストアンサー
- 回答日時:
一例です。
各連続する区間をカウントしていますので相違しているようでしたら読み捨て下さい。
Sub カウント()
a = 1
b = 1
For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
Select Case Cells(i, "B").Value
Case "ON"
If Cells(i, "B") <> Cells(i + 1, "B") Then
Cells(i, "C").Value = a
a = 1
Else
a = a + 1
End If
Case "OFF"
If Cells(i, "B") <> Cells(i + 1, "B") Then
Cells(i, "D").Value = b
b = 1
Else
b = b + 1
End If
End Select
Next i
End Sub
ありがとうございました。
きちんとカウントすることができました。
初心者のため、コードの内容についてはわかりませんので自身で学習してみたいと思います。
No.4
- 回答日時:
もし、勘違いしていたならばすみません。
作業列を設ければ関数でも可能だと思います。
例えば、F列とG列を作業列として使用するものとします。
まず、F2セルに次の数式を入力して下さい。
=IF($B$1="OFF",1,"")
次に、G2セルに次の数式を入力して下さい。
=IF($B$1="ON",1,"")
次に、F3セルに次の数式を入力して下さい。
=IF(AND($B2="ON",$B3<>"ON"),COUNT(F$2:F2)+1,"")
次に、G3セルに次の数式を入力して下さい。
=IF(AND($B2="OFF",$B3<>"OFF"),COUNT(G$2:G2)+1,"")
そして、F3~G3の範囲をコピーして、予定されるB列の行数を上回るのに充分な回数になるまで、同じ列の4行目以下に貼り付けて下さい。
次に、C2セルに次の数式を入力して下さい。
=IF(ROWS($1:1)>COUNT($F:$F)-($B$2="OFF"),"",MATCH(ROWS($1:1)+($B$2="OFF"),$F:$F)-MATCH(ROWS($1:1),$G:$G))
次に、D2セルに次の数式を入力して下さい。
=IF(ROWS($1:1)>COUNT($G:$G)-($B$2="ON"),"",MATCH(ROWS($1:1)+($B$2="ON"),$G:$G)-MATCH(ROWS($1:1),$F:$F))
そして、C3~D3の範囲をコピーして、予定されるON・OFFの切り換え回数を上回るのに充分な回数になるまで、同じ列の4行目以下に貼り付けて下さい。
以上でカウント可能になると思います。
No.3
- 回答日時:
VBAは忘れてしまいましたので、少々いい加減ですが、
こんな感じ?
(ActiveSheetが対象。ON、OFF以外の値が出てきたところで停止します。)
Sub sample()
Dim rng As Range
Dim val As String, count As Long
Set rng = ActiveSheet.Cells(1, 2)
ActiveSheet.Columns("C:D").ClearContents
count = 0
Do
val = rng.Offset(1, 0).Value
If (val <> "ON" And val <> "OFF") Then Exit Do
If (val = rng.Value) Then
count = count + 1
Else
Call setCount(count, rng.Value)
count = 1
o_val = val
End If
Set rng = rng.Offset(1, 0)
Loop
Call setCount(count, rng.Value)
End Sub
Sub setCount(cnt As Long, v As String)
Dim c As Integer
If (cnt = 0) Then Exit Sub
If (v = "ON") Then c = 3 Else c = 4
ActiveSheet.Cells(Rows.count, c).End(xlUp).Offset(1, 0).Value = cnt
End Sub
回答ありがとうございました。
実行してみた結果、表示はされましたが、
「ONとOFFどちらか」または「ONとOFFどちらも」実際の値よりも+1されてしまいます。
自身で学習して解析してみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel質問】 「本日の日付」から指定条件を満たす営業日経過後の日数を表示させる関数式 3 2022/06/06 23:28
- Excel(エクセル) Excel countif関数で取り消し線のセルをカウントしないようにしたい countif関数で文 2 2023/08/21 10:27
- Excel(エクセル) セルに設定した[コメント]、表示のON/OFFは正常なるも印刷されない! 3 2022/09/18 21:56
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
- その他(Microsoft Office) 【スプレッドシート】白色のセルをカウントしたい 2 2023/02/24 07:39
- Excel(エクセル) excelで同日を除いて数えたい 5 2023/01/15 22:08
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- Excel(エクセル) Excelでの複数条件のカウントについて 1 2022/09/25 07:40
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ITの見積もりってなんであんな...
-
パソコンでJPEG画像ファイルを...
-
YahooのIDがロックされてしまい...
-
ティラノビルダーProというゲー...
-
「.movpkg」「.m3u8」ファイル...
-
グーグルクロムにダウンロード...
-
ホームページビルダーのバージ...
-
ゆうちょ認証アプリが使えません
-
新バージョンPDFでのスナップシ...
-
先日からDigiBestTVで「デバイ...
-
jtrim 1.53cが正常な動きをし...
-
中古のパソコン購入 オフィスの...
-
拡張子が異なりファイル名が同...
-
写真の印刷レイアウトについて
-
Winrarの移行
-
CMYKのペイントソフトを探して...
-
プータブルUSB起動について
-
Numbersについてお伺いです。 ...
-
microsoft teamsの左のアイコン...
-
Prishwallというソフト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
YahooのIDがロックされてしまい...
-
「.movpkg」「.m3u8」ファイル...
-
ゆうちょ認証アプリが使えません
-
サポートの終了したソフトから...
-
Windows Media PlayerでCDが焼...
-
STEAM版BF4が起動しない
-
クリスタルディスクインフォは...
-
ATOKをお使いの方、今後もVer U...
-
CMYKのペイントソフトを探して...
-
アドビの値上げについて
-
Bluerayディスクのオーサリング...
-
jtrim 1.53cが正常な動きをし...
-
住所もしくは緯度経度で道のり...
-
自分で描いた下手な絵を綺麗に...
-
googleスプレッドシートのキャ...
-
新バージョンPDFでのスナップシ...
-
i Tune でCDからハードディスク...
-
先日からDigiBestTVで「デバイ...
-
Winrarの移行
-
gimpで文字の細工をしたい
おすすめ情報