gpt4 book ai didi

excel - 不使用循环操作数组

转载 作者:行者123 更新时间:2023-12-02 09:18:02 25 4
gpt4 key购买 nike

学习 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

效果非常好。现在我想做类似的事情,但使用数组代替。从这段代码开始:

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

如何用不使用循环的代码替换这些 FOR 循环中的任何一个?

最佳答案

给你:

Sub Squares()
Dim n&
n = 5
[d1].Resize(n) = Evaluate("row(1:" & n & ")^2")
End Sub

更新

这是一个不使用循环和范围的变体:

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

关于excel - 不使用循环操作数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32272888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com