【问题标题】:Excel passing a range into a functionExcel将范围传递给函数
【发布时间】:2014-10-26 09:18:44
【问题描述】:

您如何将一系列单元格传递到函数中,以便您可以单独处理这些项目。因此,如何将一系列单元格传递给函数。

我正在尝试这样做,以便我可以有一个使用以下方法的方法

Function processNumbers(Var as Range) 

从这里我不确定如何获取列表中的项目数并横穿数组来编辑内容。有没有比上述更好的方法来携带物品。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您声明的函数是正确的方法。

    Function processNumbers(Var as Range) As Variant
        NumberOfCells = Var.Cells.Count
        NumberOfRows = Var.Rows.Count
        NumberOfColumns = Var.Columns.Count
        RangeAddress = Var.Address
    
        ' Iterate the range  (slow)
        For Each Cl in Var.Cells
            ' ...
        Next
    
        ' Get Values from range as an array
        Dim Dat as variant
        Dat = var
    
        ' Iterate array
        For rw = LBound(Dat,1) to UBound(Dat,1)
            For col = LBound(Dat,2) to UBound(Dat,2)
                ' reference Dat(rw,col)
            Next col
        Nest rw
    
        ' Put (modified) values back into range.  Note: won't work in a UDF
        Val = Dat
    End Function
    

    【讨论】:

    • 谢谢,但您所说的“在 UDF 中不起作用”是什么意思。当我执行 processNumbers = Dat 而不是 Val = Dat 时,我只得到一个单元格而不是完整的修改列表。 IE。我传入 a1:e1 并在 A3 中输入公式,我没有在 A3:E3 中取回值,而只是在 A3 中。
    • 当从单元格中的公式调用函数时,它称为用户定义函数或 UDF。像这样调用时,它不能更改工作表中的单元格,只能返回一个值。
    • 要将值返回到 A3:E3 这样的范围,请以数组公式的形式输入函数:选择范围 A3:E3,输入您的函数,然后按 Ctrl-Shift-Enter(而不仅仅是 Enter ) 结果应该是公式栏中显示的公式应该类似于{=processNumbers(...)}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 2018-06-26
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多