将一个数组中的值分配给另一个数组而不循环
Posted
技术标签:
【中文标题】将一个数组中的值分配给另一个数组而不循环【英文标题】:Assign values from one array to another without looping 【发布时间】:2015-09-13 15:07:23 【问题描述】:有没有像 MATLAB 那样在数组的行中分配多个值的方法?
假设您有一个矩阵 M(5,5) 和一个向量 V = [1, 2, 3, 4, 5]
在 Matlab 中,如果你想用向量 V 填充第一行,你可以这样写:
M(1,:) = V
Excel VBA中是否有类似的东西,而不是循环遍历第一行的每一列并每次都分配值V(j)?
【问题讨论】:
不,你不能在直接的 VBA 中这样做。但是Functions For VBA Arrays 提供了许多有用的功能。它提供GetRow
,但不提供SetRow
。一点点重新编码应该会给你寻求的例程。
托尼非常感谢您提供此链接,它真的很有帮助!我现在正在从 MATLAB 切换到 Excel,我看到一些在其他语言中非常简单的任务,必须在 Excel 中进行硬编码!
MATLAB 是专业语言的一个例子。在其专长范围内,它提供了强大且易于使用的功能,但在该专长之外几乎不提供任何功能。 VBA 是一种通用语言。 VBA 可以解决许多编程任务,但它只真正擅长提供对 Excel 工作表的访问。我同时使用 VBA 和 VB.Net。我使用 VBA 来获取简单的东西和 Excel 访问。我使用 VB.Net 进行快速处理和庞大的函数库。 VB.Net 的 Express 版本是免费的,何不试一试。
***.com/questions/16189984/…
【参考方案1】:
您可以尝试以下方法:
Sub InitializeMatrixWithVector()
Dim V(), M()
ReDim M(1 To 5, 1 To 5)
V = Array(1, 2, 3, 4, 5)
M = Application.Choose([1+(row(1:5)=1)], M, V)
Range("B1").Resize(UBound(M), UBound(M, 2)) = M
End Sub
方括号等效于Evaluate
VBA 函数。
Application.Choose
是一个 WorksheetFunction 方法,可以获取和返回变量数组。
【讨论】:
以上是关于将一个数组中的值分配给另一个数组而不循环的主要内容,如果未能解决你的问题,请参考以下文章
如何将一个对象数组的一个属性的值分配给另一个对象数组的同名属性? - Javascript