【问题标题】:Array addition/subtraction vba数组加法/减法 vba
【发布时间】:2018-06-15 04:19:15
【问题描述】:

好吧,我觉得我在这里遗漏了一些重要的东西;但是我试图在 VBA 上减去数组。我需要减去数组并将它们分配给另一个变量x,所以我不能做一个规范化函数。以下是我的代码版本:

代码:

Dim xnew As Variant, xTable As Variant, x As Variant

xnew = [{1,2}]
xTable = [{4,3}]

x = xTable - xnew

MsgBox (x)

我发誓这是一个愚蠢的问题,我已经在互联网上四处寻找这个简单的操作,但到我的死,什么都没有出现......我认为这个问题与 MINUS operation on Array elements 不同,因为这里问的人是试图改变数组的大小,我没有。

【问题讨论】:

标签: vba math


【解决方案1】:

你也可以使用字符串和Application.Evaluate来避免循环:

Dim xnew As String, xTable As String, x As Variant

xnew = "{1,2}"
xTable = "{4,3}"

x = Application.Evaluate("INDEX(" & xTable & " - " & xnew & ",)")

For i = LBound(x) To UBound(x)
    Debug.Print "x(" & i & ") = " & x(i)
Next

【讨论】:

    【解决方案2】:

    我认为您正在尝试将它们作为矩阵减去。 VBA 不是那么聪明。您需要遍历数组并自己进行减法。

    Dim xnew As Variant, xTable As Variant, x(1 To 2) As Variant, i As Integer
    
    xnew = [{1,2}]
    xTable = [{4,3}]
    
    For i = LBound(xTable) To UBound(xTable)
        x(i) = xTable(i) - xnew(i)
    Next
    
    For i = LBound(x) To UBound(x)
        Debug.Print "x(" & i & ") = " & x(i)
    Next
    

    输出

    x(1) = 3
    x(2) = 1

    注意:如果您不知道xTable 的大小,那么您可以通过ReDim x(LBound(xTable) To UBound(xTable)x 上设置正确的尺寸

    【讨论】:

    • 谢谢!你怎么知道输出。它不会为我打印出来
    • @JakeK,打开 VBA 编辑器,确保立即窗口可见(查看 → 立即窗口,CTRL+G)。这是Debug.Print 输出将显示的地方。
    • 啊!凉爽的!我不知道这是一个功能!谢谢!
    • @JakeK,我们真诚地互相教了一些新东西。我已经这样做了 15 年,但我不知道您可以定义像 [{element,element}] 这样的数组
    • @DrewChapin []Application.Evaluate 的简写,它可以返回一个数组。
    猜你喜欢
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多