簡體   English   中英

在Excel,VBA中添加兩個值

[英]Adding two values in Excel, VBA

我是VBA的新手,想添加兩個值。 我的代碼是:

Cells(7 + i + 1, 6).Select

sum1 = "=SUMIFS('[" + strFil_1 + "]Tooling forecast template'!R6C20:R500C20,'[" + strFil_1 + "]Tooling forecast template'!R6C7:R500C7,""=ME1"", '[" + strFil_1 + "]Tooling forecast template'!R6C5:R500C5,""=Test Tool"", '[" + strFil_1 + "]Tooling forecast template'!R6C13:R500C13,""=" + ArrME1(i) + """, '[" + strFil_1 + "]Tooling forecast template'!R6C6:R500C6,""<>Actual tool/equipment change"", '[" + strFil_1 + "]Tooling forecast template'!R6C23:R500C23,""<>Cancelled"", '[" + strFil_1 + "]Tooling forecast template'!R6C23:R500C23,""<>Not Ordered"")"

sum2 = "=SUMIFS('[" + strFil_1 + "]Tooling forecast template'!R6C20:R500C20,'[" + strFil_1 + "]Tooling forecast template'!R6C7:R500C7,""=ME1"", '[" + strFil_1 + "]Tooling forecast template'!R6C5:R500C5,""=Hard Tool"", '[" + strFil_1 + "]Tooling forecast template'!R6C13:R500C13,""=" + ArrME1(i) + """, '[" + strFil_1 + "]Tooling forecast template'!R6C6:R500C6,""<>Actual tool/equipment change"", '[" + strFil_1 + "]Tooling forecast template'!R6C23:R500C23,""<>Cancelled"", '[" + strFil_1 + "]Tooling forecast template'!R6C23:R500C23,""<>Not Ordered"") "

ActiveCell.FormulaR1C1 = sum1 + sum2

我之和的原因是因為如果我將其作為一個表達式,則該行將太大,並且VBA無法將其正確分成兩行,如果可能的話,也請發布該行。

我在上面的代碼中得到的錯誤是它只顯示TRUE或FALSE,而不是實際的總和。

如果您想要的是兩個公式的結果之和,那么我建議將實際公式放入兩個實際單元格中,然后將結果相加。 稱一個為“ Hard Tool”結果,另一個為“ Test Tool”結果。

另外,如果您想在VBA中運行SUMIFS()函數,則可以使用類似的方法(對於第一部分,未經測試)

With Workbooks(strFil_1).Worksheets("Tooling forecast template")
    sum_range = Range(.Cells(6, 20), .Cells(500, 20))
    criteria_range1 = Range(.Cells(6, 7), .Cells(500, 7))
    criteria_range2 = Range(.Cells(6, 5), .Cells(500, 5))
    criteria_range3 = Range(.Cells(6, 13), .Cells(500, 13))
    criteria_range4 = Range(.Cells(6, 6), .Cells(500, 6))
    criteria_range5 = Range(.Cells(6, 23), .Cells(500, 23))
End With

sum1 = Application.WorksheetFunction.SumIfs( _
        sum_range, _
        criteria_range1, "ME1", _
        criteria_range2, "Test Tool", _
        criteria_range3, ArrME1(i), _
        criteria_range4, """<>Actual tool/equipment change""", _
        criteria_range5, """<>Cancelled""", _
        criteria_range5, """<>Not Ordered""" _
        )

不知道您要嘗試做什么,但是sum1和sum2顯然是字符串。
因此,您的最后一行在活動單元格中存儲一個包含其他2個公式的串聯的公式: "=sum1string=sum2string"

如果兩個公式都是相同的字符串,則返回的TRUE確實是正確的計算。

我建議您養成在每個過程的頂部添加OPTION EXPLICIT的習慣。 這將迫使您將變量變暗。 例如,如果將DIM sum1設為單個,則將立即捕獲錯誤。

您可能會得到更好的結果:

sum2 = "+SUMIFS(...."
ActiveCell.FormulaR1C1 = sum1 & sum2

另外,您可以對sum1和sum2嘗試使用EVALUATE或[]:

ActiveCell.FormulaR1C1 = [sum1] + [sum2]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM