|
ichinose さん
ありがとうございます。
思ったとおりの結果になりました。
今まで悩んでいたのがすっきりはれました。
>funcstr
の式の内容なんですがどのようになっているのでしょうか?
よければご教授ください。
▼ichinose さん:
>▼かじったばかり さん:
>おはようございます。
>
>>初めて質問させてもらいます。
>>早速ですが下記のように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が
>要らないかも知れません
|
|