Excel VBA:应用于单个工作表的功能



>我有大量具有相同布局的工作表,第 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

最新更新