Excel UDF通过范围循环现有函数

时间:2013-06-07 14:47:56

标签: excel vba user-defined-functions

我正在尝试组合一个用户定义的函数,它允许excel函数在一个范围内工作,而不仅仅是一个单元格。示例将是=isnumber(value)该函数不能在一系列单元格中起作用,因此要使用它来检查我需要为该范围中的每个单元格重复它的范围。

是否有人试图将=RangeFunct(range, function,[boolean])的内容放在一起?这将沿着循环线到达现有函数的范围内的每个单元格,并停止与所选择的布尔值不匹配的布尔值。任何有关设置此代码的帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

例如:=RangeFunc(A1:A10,"ISNUMBER")

Function RangeFunc(rng As Range, funct As String) As Boolean
    Dim c As Range
    Dim rv As Boolean
    rv = True
    For Each c In rng.Cells
        If rng.Parent.Evaluate(funct & "(" & c.Address() & ")") = False Then
            rv = False
            Exit For
        End If
    Next c
    RangeFunc = rv
End Function

你总是可以使用数组公式代替:

=AND(ISNUMBER(A1:A10))

...使用Ctrl + Shift + Enter

输入

答案 1 :(得分:0)

像这样简单的东西可以让你将一个范围定义为一个字符串(即“A1:B10”),然后循环遍历该范围内的每个单元格。对于每个单元格,您可以测试条件,修改该单元格(突出显示或注意它),等等。这是一个非常简单的示例:

Public Function RangeFunct(ByVal myRange As String) As Boolean
    Dim cell As Range
    Dim checkRange As Range
    Set checkRange = Range(myRange)

    Dim bTemp As Boolean
    bTemp = True

    For Each cell In checkRange
        If cell.Value = 1 Then
            bTemp = False
            Exit For
        End If

    Next cell

    RangeFunct = bTemp
End Function

如果您可以更具体地了解要测试的内容以及如何使用它,那么我可以修改代码以满足您的需求。