| 
    
     |  | ▼nadatani さん: 
 こんばんは。
 
 >Buttonを押して
 >A列の合計をさせたいのですが、
 >4列目が「ABAB」のデータが
 >あるときは、A列の数字をマイナスに変えA列の合計をさせたいのです。
 >コード「総合計」は
 >一回ボタンを押せば「マイナス処理をした合計」になり正解なのですが
 >二回ボタンを押すと「マイナス*マイナス処理」→プラスになり最初の合計と
 >後の合計に差がマイナス分の2倍が
 >生じます。
 
 元データを変えてしまうと、そりゃあ、一回目と2回目では
 計算結果が違ってきますよね!!
 
 
 Sub 総合計1()
 Dim ans As Variant
 Dim i As Integer, rng As Range, pvl As Long
 pvl = Range("F4").Value
 Set rng = Range(Cells(7, 1), Cells(Rows.Count, 1).End(xlUp))
 With rng
 MsgBox "=if(offset(" & .Address & ",0,3,1,1)=""ABAB"",-1*(" & .Address & ")," & _
 .Address & ")" & vbCrLf & "こんな配列数式を評価します"
 
 ans = Evaluate("=if(offset(" & .Address & ",0,3)=""ABAB"",-1*(" & .Address & ")," & _
 .Address & ")")
 End With
 If rng.Row > 5 Then 'この5の意味がわかりませんが、そのままにしておきます
 Range("F4").Value = Application.Sum(ans)
 MsgBox "総合計は" & Format(Range("F4").Value, "#,##0")
 End If
 
 End Sub
 
 
 |  |