【问题标题】:Passing a range of cells into a function in vba from excel从excel将一系列单元格传递给vba中的函数
【发布时间】:2011-12-28 23:46:19
【问题描述】:

我正在尝试创建一个函数,以便 =processCells(A1:A10) 获取单元格范围,并允许我为每个项目添加 10 并在单元格 A11:A20 中显示新数字。我想在工作表中使用该功能,以便用户可以手动选择单元格 A1:A10,因此他们可以选择 B1:B10 等...而不是 A1:A10

我的问题是将工作表的单元格范围传递给函数,然后对其进行处理。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这里有一个示例 UDF,可帮助您入门

    Function processCells(rng As Variant, Optional AddValue = 10) As Variant
        Dim v As Variant
        Dim i As Long, j As Long
        Select Case TypeName(Application.Caller)
            Case "Range"
                ' Called from a Formula
                v = rng
                If IsArray(v) Then
                    ' Called from an Array Formula
                    For j = 1 To UBound(v, 1)
                    For i = 1 To UBound(v, 2)
                        If IsNumeric(v(j, i)) Then
                            v(j, i) = v(j, i) + AddValue
                        End If
                    Next i, j
                Else
                    ' Called from a single Cell
                    If IsNumeric(v) Then
                        v = v + AddValue
                    End If
                End If
                processCells = v
            Case Else
                processCells = vbEmpty
        End Select
    End Function
    

    要按照您的描述使用它,请将其作为数组公式 =processCells(A1:A10) 输入单元格单元格 A11:A20

    【讨论】:

      猜你喜欢
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 2020-02-21
      相关资源
      最近更新 更多