【问题标题】: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 版本是免费的,何不试一试。

标签: vba excel


【解决方案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 方法,可以获取和返回变量数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多