|
▼かじったばかり さん:
おはようございます。
>初めて質問させてもらいます。
>早速ですが下記のようにA列には積算値で必ず増加してゆきます。
>B列C列には計器からの信号でONかOFFの状態で入力されています。
>BとCともにONの時があります。又行数は定まっていませんが約3000行ほどあります
>求めたいことはBがONでCがOFFのときのA列の増加量です。
>下記表では(6-1)+(35-33)=7
>となります。
>
>どのように考えたらよいのか考えあぐねています。
>どうかアドバイスをください。
> A B C
>1 1 ON OFF
>2 3 ON OFF
>3 6 ON OFF
>4 7 ON ON
>5 9 ON ON
>6 11 OFF ON
>7 18 OFF ON
>8 20 OFF ON
>9 25 OFF ON
>10 30 OFF ON
>11 33 ON OFF
>12 35 ON OFF
>・
>・
>・
上記のようにA列1行目からデータが入力されているものとして
'==================================
Sub main()
Dim rng As Range
Dim A1add As String, A2add As String
Dim B1add As String, B2add As String
Dim C1add As String, C2add As String
On Error Resume Next
Set rng = Range("a1", Cells(Rows.Count, 1).End(xlUp))
Set rng = rng.Resize(rng.Count - 1, 1)
If Err.Number = 0 Then
With rng
A1add = .Address
B1add = .Offset(0, 1).Address
C1add = .Offset(0, 2).Address
A2add = .Offset(1, 0).Address
B2add = .Offset(1, 1).Address
C2add = .Offset(1, 2).Address
funcstr = "SUM(IF((" & B2add & "=""on"")*(" & _
C2add & "=""off"")*(" & _
B1add & "=""on"")*(" & _
C1add & "=""off"")," & _
A2add & "-" & A1add & ",0))"
End With
MsgBox "増加量は----- " & Evaluate(funcstr)
Else
MsgBox "増加量は----- " & 0
End If
On Error GoTo 0
End Sub
名前の定義と数式を組み合わせるとVBAが
要らないかも知れません
|
|