【问题标题】:How to retrieve the value of a cell that is occupied by a function and not just a number using .value如何检索由函数占用的单元格的值,而不仅仅是使用 .value 的数字
【发布时间】:2014-05-23 21:30:34
【问题描述】:

我想做的是创建一个函数,让我可以查看一个范围并计算哪些单元格被一个数字占用。

完成此操作后,我将总结可以看到的前 30 个数字,而不仅仅是该范围内的前 30 个单元格。我通过询问它是否大于 0 来做到这一点,这意味着它是一个数字而不是空格。

我的代码如下所示

Function cum(days_cum As Double, col_number As Double) As Double
Dim count As Long, sum As Double, i As Integer, number As Double
count = 0
For i = 15 To 1050
    number = Cells(i, col_number).Value
    If number > 0 Then
        count = count + 1
        sum = sum + number
        If count <= days_cum Then
        cum = sum
    End If
    End If
Next i
End Function

我遇到的问题是某些单元格正在使用函数来计算该数字。

有关解决此问题并让我的 vba 使用此问题的任何建议??????非常感谢您的帮助!!!

【问题讨论】:

  • 您尝试过使用特殊单元格吗?见tduhameau.wordpress.com/tag/specialcells
  • cells.Value 有什么问题?这将返回公式的结果。 cells.Formula 将返回公式。
  • 由于某种原因它只返回 0,我返回并将值作为值复制回空间,它仍然返回 0。我不知道它为什么这样做。

标签: excel vba range cells


【解决方案1】:

这是一个简单的 UDF,它将对某个范围内的前 30 个数字求和,不包括空格和包含公式的单元格:

Public Function AddFirst30(RIN As Range) As Variant
    Dim Kount As Long, t As Variant, r As Range
    k = 0
    t = 0
    For Each r In RIN
        If r.Value <> "" And r.HasFormula = False Then
            t = t + r.Value
            k = k + 1
            If k = 30 Then GoTo success
        End If
    Next r
    AddFirst30 = "Not enough numbers present"
    Exit Function

success:
    AddFirst30 = t
End Function

编辑#1:

要更改 UDF 以便排除公式,只需删除 .HasFormula 测试:

Public Function AddFirst30(RIN As Range) As Variant
    Dim Kount As Long, t As Variant, r As Range
    k = 0
    t = 0
    For Each r In RIN
        If r.Value <> "" Then
            t = t + r.Value
            k = k + 1
            If k = 30 Then GoTo success
        End If
    Next r
    AddFirst30 = "Not enough numbers present"
    Exit Function

success:
    AddFirst30 = t
End Function

【讨论】:

  • 我会在星期二回去工作时试试这个。如果我想说添加前 60 或 90,是否会完全相同。我是否只需将 30 部分更改为我希望在指定范围内添加的任何数量?
  • 非常感谢。节省了我很多时间。我会在周二发表评论,让你知道进展如何。希望我现在有文件可以尝试。
  • 如果我想添加那些有公式的,我该怎么做。我只想添加原始数字。
  • 有没有办法也说没有足够的数字,但总和是这样,只有x个数字?
  • 是的,我刚刚拿出我的笔记本电脑并切换了一些东西。我通过修补回答了我之前的问题。
猜你喜欢
  • 2023-02-03
  • 2011-08-13
  • 2011-03-18
  • 2019-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多