Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


54650 / 76738 ←次へ | 前へ→

【26874】Re:条件一致での合計値を求める
発言  ichinose  - 05/7/22(金) 6:51 -

引用なし
パスワード
   ▼かじったばかり さん:
おはようございます。

>初めて質問させてもらいます。
>早速ですが下記のように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が
要らないかも知れません

0 hits

【26871】条件一致での合計値を求める かじったばかり 05/7/21(木) 23:52 質問
【26874】Re:条件一致での合計値を求める ichinose 05/7/22(金) 6:51 発言
【26903】Re:条件一致での合計値を求める かじったばかり 05/7/22(金) 22:33 お礼
【26929】Re:条件一致での合計値を求める ichinose 05/7/23(土) 12:17 発言
【26930】Re:条件一致での合計値を求める かじったばかり 05/7/23(土) 18:49 お礼

54650 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free