我在Excel工作表中处理每月应计费用。我想写一个函数或宏,当月份变化时,值变为负值。我有一个列(K),其中包含月份,另一个单元格(M18)包含月份,如果K=M18,我希望Amount (N)列中的值变为负值。但=if($K21=$M$18,N=N*-1,")不起作用。我可以在旁边写另一列,比如Q,我可以写=if($K21=$M$18, N*-1, "")
,但是我需要N列本身的值是负的。是否有一种方法可以编写宏或嵌套函数,以有条件地将N的值替换为自身的负版本?如果我要用Q来计算- N的值,我能不能再求一个函数使N=Q?
K_ __ L __ M __ _ ___ N
___ 输入前一个月
___
2月 __ _ * * Venue_ 供应商 _Amount * *
2月 _ __ _ ___ 1666
2月 __ _ __ _ 3240
2月 __ _ __ _ _718
这里有一个宏来完成这个任务:
Sub AccrualsMacro()
Dim rngN As Range
Dim clVal As Double
Dim cl As Range
Dim makeNegative As Boolean
makeNegative = [K21] = [M18]
If makeNegative Then
Set rngN = Range("N1", Range("N1").End(xlDown))
For Each cl In rngN
With cl
clVal = .Value
If Not clVal < 0 Then 'only apply this rule if the value is still positive
.Value = -1 * clVal
End If
End With
Next
End If
End Sub