Ale*_*ing 4 excel vba excel-vba
学习VBA for Excel,我试图在不使用循环的情况下完成我的编码.作为练习,将两个相邻范围的数字相乘,我想出了这个:
Sub multiply_range()
Dim a, b, c As Range
Set a = Range("a1:a5")
Set b = Range("b1:b5")
Set c = Range("c1:c5")
a.Value = Evaluate("row(" & a.Address & ")")
b.Value = Evaluate("row(" & b.Address & ")")
c.Value = Evaluate(a.Address & "*" & b.Address)
End Sub
Run Code Online (Sandbox Code Playgroud)
哪个效果很好.现在我想做类似的事情,但改为使用数组.从这段代码开始:
Sub multiply_array()
Dim aArr(), bArr(), cArr()
ReDim aArr(5), bArr(5), cArr(5)
For i = 0 To 4
aArr(i) = i + 1
bArr(i) = i + 1
Next
For i = 0 To 4
cArr(i) = aArr(i) * bArr(i)
Next
For i = 0 To 4
Range("D" & i + 1).Value = cArr(i)
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
如何使用不使用循环的代码替换这些FOR循环中的任何一个?
干得好:
Sub Squares()
Dim n&
n = 5
[d1].Resize(n) = Evaluate("row(1:" & n & ")^2")
End Sub
Run Code Online (Sandbox Code Playgroud)
UPDATE
这是一个不使用循环而没有范围的变体:
Sub Squares()
Dim a, b, n&
n = 5
a = Array(1, 2, 3, 4, 5)
b = Array(1, 2, 3, 4, 5)
[d1].Resize(n) = Evaluate("{" & Join(a, ";") & "}*{" & Join(b, ";") & "}")
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3054 次 |
| 最近记录: |