0

我想创建一个函数来计算确定范围内的单元格。

当我将 calc 的值返回给 excel 时,我得到一个 #VALUE!错误,这意味着变量类型不同。

我尝试使用 Cint(var) 并得到相同的错误。

这是没有 Cint() 的代码:

Function CalcTest(Interval As Range) As Integer
    Dim x As Integer
    Dim y As Integer
    x = Interval.Offset(0, 0).Value
    y = Interval.Offset(1, 0).Value
    CalcTest = x + y
End Function

我已经尝试过:

Function CalcTest(Intervalo As Range) As Integer
    CalcTest = Interval.Offset(0, 0).Value + Interval.Offset(1, 0).Value
End Function

和:

Function CalcTest(Interval As Range) As Integer
    Dim x As Integer
    Dim y As Integer
    x = CInt(Interval.Offset(0, 0).Value)
    y = CInt(Interval.Offset(1, 0).Value)
    CalcTest = x + y
End Function

并且没有声明 de 函数类型:

Function CalcTest(Interval As Range)
    ...
    ...
End Function

在 Excel 中,我用一些范围调用函数:

=CalcText(A1:A2)

我究竟做错了什么?

#

大图:

在此处输入图像描述

我需要做的是在任何地方创建一个 cel,用于计算 $R col 中每个键值在 $N col 中的总值。

每次我在 $N Col 中有“TH”时,我都需要在 cel 中累积该行的 de $R col 值。

许多其他 $N 值也是如此。

在此示例中,$N 中 TH 的累积 cel 值为 25。

谢谢帮忙!!!

4

3 回答 3

0

你不应该将你的代码简化为不能公平地代表你的问题的东西。从您的评论和问题。

Function CalcTest(Interval As Range) As Integer
    Dim x As Range
    CalcTest = 0
    For Each x In Interval
        If IsNumeric(x) Then
            CalcTest = CalcTest + x.Value
        End If
    Next x
End Function

这将确保您添加的内容实际上是一个数字。

但是,这与工作表功能没有任何不同:

=Sum(Range)

如果您要转换的内容不可转换,那么简单地将值Integer转换为将不起作用。如果您将 Letter 传递给该CInt()函数,它将失败。

于 2013-10-10T18:13:26.827 回答
0

你让自己很难受。

将其放入第 2 行的单元格中并将其向下拖动:

=SUMIF(N$2:N2,"TH",R$2:R2)
于 2013-10-10T17:41:41.823 回答
0

这是你正在尝试的吗?

Public Function CalcTest(rng1 As Range, rng2 As Range) As Variant
    On Error GoTo Whoa

    CalcTest = rng1.Value + rng2.Value

    Exit Function
Whoa:
    CalcTest = "Please check the Range Values"
End Function

在 Excel 单元格中,输入此公式=CalcText(A1,A2)

在此处输入图像描述

于 2013-10-10T17:40:11.427 回答