開始可能是一個愚蠢的問題,但我需要將資料存盤在一個陣列中,然后在呼叫范圍的函式中使用該資料。
我的陣列有以下代碼 -
Function UnitCheckArr()
Dim UnitValueArr(2 To 250) As Long
Dim UnitValue As Long
For UnitValue = LBound(UnitValueArr) To UBound(UnitValueArr)
UnitValueArr(UnitValue) = Cells(UnitValue, 4) * Cells(UnitValue, 6)
Next UnitValue
End Function
然后我想在 SUMIF 函式中使用所說的陣列,就像這樣 -
Sub NetSumIF()
If [COUNTA(F2:F250)=0] Then
Worksheets("Sheet1").Range("K2:K250") = Application.WorksheetFunction.SumIf(Worksheets("Sheet1").Range("I2:I250"), "I2", Worksheets("Sheet1").Range("UnitCheckArr"))
End If
End Sub
目前我收到一個物件定義錯誤,我假設它是因為我無法將陣串列示為 sumif 的范圍......?我無法將原始功能表達到作業表中。任何想法如何解決這個問題或以不同的方式解決它?
uj5u.com熱心網友回復:
有條件的總和產品
SumIf適用于范圍,不適用于陣列。Range("A1:A10")是一個范圍,Range("A1:A10").Value而是一個基于一列的二維陣列(包含 10 個元素(行))。- 您可以將產品寫入另一列并
SumIf使用此列應用,或者您可以在代碼中創建回圈(可能太慢)或諸如此類。 - 而是嘗試以下方法之一。讓我們知道它有什么問題,如果您需要動態的某些部分。
電子表格
在單元格中,
K2您可以使用:=IFERROR(SUMPRODUCT(--(I$2:I$250=I2),D$2:D$250,F$2:F$250),"")并抄下來。
VBA(公式)
Option Explicit
Sub SumData()
Dim dFormula As String
Const dFormula As String _
= "=IFERROR(SUMPRODUCT(--(I$2:I$250=I2),D$2:D$250,F$2:F$250),"""")"
With ThisWorkbook.Worksheets("Sheet1").Range("K2:K250")
.Formula = dFormula
.Value = .Value
End With
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/345271.html
下一篇:對范圍定義中的列使用變數
