【发布时间】:2018-09-17 15:08:39
【问题描述】:
在 Excel VBA 中,我有一个 y 函数,输入 3 个变量(a、b、c)。我想做的是使用 VBA 将此功能自动应用于一系列单元格(工作表中列出的 a、b 和 c 的组合)。
我设置数据的方式:
b 1 1 1 1 1 2 2 2 2 3 3 3 4 4 etc.
c 2 3 4 5 6 3 4 5 6 4 5 6 5 6 etc.
a
1 . . . . . . . . . . . . . .
2 . . . . . . . . . . . . . .
3 . . . . . . . . . . . . . .
4 . . . . . . . . . . . . . .
etc.
“点”是 function(a,b,c) 的结果应该结束的地方(例如,左上角的点应该是“function(1,1,2)”的结果)。值得注意的是,在一列内应该使用相同的 b 和 c 配对值(因此在同一列内,只有 'a' 变化,而 b 和 c 保持不变)。
此函数的先前版本只有 2 个变量作为输入(a 和 b,设置方式与上面的数据相同),我使用了一个二维数组(垂直行上的 'a' 的值,值'b' 在水平列上)使用以下代码将函数应用于 a 和 b 的所有组合:
Sub applyfunction()
Dim ws As Worksheet
Dim arr_ab()
Dim a, b, i As Long, j As Long
For Each ws In Worksheets
If ws.Name Like "Util*" Then
With ws
a = .Range("B5:B244").Value
b = .Range("C2:CG2").Value
ReDim arr_ab(1 To UBound(a), 1 To UBound(b, 2))
For i = LBound(arr_ab) To UBound(arr_ab)
For j = LBound(arr_ab, 2) To UBound(arr_ab, 2)
arr_ab(a, b) = "=function(" & a(i, 1) & ", " & b(1, j) & ")"
Next j
Next i
.Range("C5:CG244").Value = arr_ab()
End With
End If
Next ws
End Sub
但是,既然我已经向函数添加了第三个变量 (c),我想使用函数 (a,b,c)。当我只有 2 个变量时,我很难让它像我一样工作。有没有办法仍然为此使用数组?
提前感谢您的帮助。
编辑:我想在函数中使用 a、b、c 的值(不是引用)
【问题讨论】:
-
您希望生成的公式使用 a、b、c 的值还是对包含值的单元格的引用?
-
@chrisneilsen 我希望得到的公式使用 a、b、c 的值(而不是引用)。我编辑了问题以明确这一点。
-
更改为`b = .Range("C2:CG3").Value` 和
= "=function(" & a(i, 1) & ", " & b(1, j) & "," &b(2,j) & ")" -
@chrisneilsen 这似乎可行,谢谢!有没有办法将您的评论标记为有帮助?