Excel formula Excel自定义公式未按预期工作

Excel formula Excel自定义公式未按预期工作,excel-formula,Excel Formula,我对创建自定义excel公式基本上是新手。我有以下自定义excel公式: Function Calculate(Quarter As String) As Variant Dim wFn As WorksheetFunction Dim Rng As Range Calculate = "Error - Quarter should be Q1, Q2, Q3 or Q4" Set wFn = Application.WorksheetFun

我对创建自定义excel公式基本上是新手。我有以下自定义excel公式:

Function Calculate(Quarter As String) As Variant
    Dim wFn As WorksheetFunction
    Dim Rng As Range
    Calculate = "Error - Quarter should be Q1, Q2, Q3 or Q4"

    Set wFn = Application.WorksheetFunction
    
    Select Case Quarter
        Case "Q1":
          'Rng = "K" & RowNumber: "P" & RowNumber'
          Rng = K77: P77
          Calculate = wFn.Sum(Rng)
        Case "Q2":
          'Rng = "R" & RowNumber: "X" & RowNumber'
          Rng = R77: X77
          Calculate = wFn.Sum(Rng)
        Case "Q3":
          'Rng = "Z" & RowNumber: "AE" & RowNumber'
          Rng = Z77: AE77
          Calculate = wFn.Sum(Rng)
        Case "Q4":
          'Rng = "AG" & RowNumber: "AM" & RowNumber'
          Rng = AG77: AM77
          Calculate = wFn.Sum(Rng)
        
    End Select
End Function
但是,当我尝试在工作表的单元格上使用此公式时,输出为0。我试图引用这篇文章


有人能帮忙调试一下吗?

您没有正确引用单元格。范围
K77:P77
是一个对象,因此必须
设置

正如您所写的,我认为(如果没有显式
选项
),它会将K77视为变量,将P77视为未定义的函数(至少这是我得到的错误)

该函数假设输入函数时,范围在同一工作表上

Function Calculate(Quarter As String) As Variant
    Dim wFn As WorksheetFunction
    Dim Rng As Range
    
    Set wFn = Application.WorksheetFunction
    
    Select Case Quarter
        Case "Q1":
          'Rng = "K" & RowNumber: "P" & RowNumber'
          Set Rng = Range("K77:P77")
          Calculate = wFn.Sum(Rng)
        Case "Q2":
          'Rng = "R" & RowNumber: "X" & RowNumber'
          Set Rng = Range("R77:X77")
          Calculate = wFn.Sum(Rng)
        Case "Q3":
          'Rng = "Z" & RowNumber: "AE" & RowNumber'
          Set Rng = Range("Z77:AE77")
          Calculate = wFn.Sum(Rng)
        Case "Q4":
          'Rng = "AG" & RowNumber: "AM" & RowNumber'
          Set Rng = Range("AG77: AM77")
          Calculate = wFn.Sum(Rng)
        Case Else
            'Returning errors from functions:
            'http://www.cpearson.com/excel/writingfunctionsinvba.aspx
            Calculate = CVErr(xlErrNA)
        
    End Select
End Function

谢谢你,达伦!