0

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

有没有人试过把一些东西放在一起=RangeFunct(range, function,[boolean])?这将沿着循环通过范围中的每个单元格进入现有函数并停止在与选定的布尔值不匹配的布尔值处执行一些操作。任何有关设置此代码的帮助将不胜感激。

4

2 回答 2

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 输入

于 2013-06-07T16:05:44.400 回答
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

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

于 2013-06-07T15:23:12.360 回答