>我有大量具有相同布局的工作表,第 G6:G38
列是年份,第 H6:H38
列是相应的支付金额。我尝试创建一个简单的公式,我可以在所有工作表中使用,该工作表搜索这些列并汇总给定年份的金额。这是我写到模块中的函数:
Public Function TPaid(Year As Integer)
Application.Volatile
Dim x As Integer
x = 6
Do Until x = 38
If Range("G" & x).Value = Year Then
TPaid = TPaid + Range("H" & x).Value
End If
x = x + 1
Loop
End Function
将公式插入所有工作表上的各个单元格后,我发现每次输入公式时,它都会导致其他工作表上同一公式的所有其他用法显示最新的计算。如何使公式仅适用于其输入的工作表?
示例:在单元格A1
sheet1
我估算了=Tpaid(2013)
,然后在单元格A1
sheet2
我估算了=Tpaid(2013)
。按回车键后sheet2
显示的金额是正确的,但现在sheet1
中的金额已更改为显示与sheet2
相同的金额,这是不正确的。
正如GSerg所说,这可以通过几种方式完成,其中最好的是=SUMIF(G6:G38,2013,H6:H38)
。
否则
Public Function TPaid(Year As Integer)
Application.Volatile
Dim x As Integer, obj as Object
With Application.Caller.Parent
For x = 6 to 38
If .Range("G" & x).Value = Year Then TPaid = TPaid + .Range("H" & x).Value
Next
End With
End Function