如何使用数组作为范围?
How do I use an Array as a range?
一开始可能是个愚蠢的问题,但我需要将数据存储在数组中,然后在调用范围的函数中使用该数据。
我的数组有以下代码 -
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 的范围..?我无法将原始函数表达到工作表中。有什么想法可以解决这个问题或以不同的方式解决它吗?
根据条件对产品求和
SumIf
适用于范围,不适用于数组。
Range("A1:A10")
是一个范围,而 Range("A1:A10").Value
是一个二维单列数组(包含 10 个元素(行))。
- 您可以将产品写入另一列并使用此列应用
SumIf
,或者您可以在代码中创建循环(可能太慢),等等。
- 而是尝试以下方法之一。让我们知道它有什么问题,如果您需要它的某些部分是动态的。
Excel
在单元格 K2
中,您可以使用:
=IFERROR(SUMPRODUCT(--(I:I0=I2),D:D0,F:F0),"")
然后抄下来。
VBA(公式)
Option Explicit
Sub SumData()
Dim dFormula As String
Const dFormula As String _
= "=IFERROR(SUMPRODUCT(--(I:I0=I2),D:D0,F:F0),"""")"
With ThisWorkbook.Worksheets("Sheet1").Range("K2:K250")
.Formula = dFormula
.Value = .Value
End With
End Sub
一开始可能是个愚蠢的问题,但我需要将数据存储在数组中,然后在调用范围的函数中使用该数据。
我的数组有以下代码 -
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 的范围..?我无法将原始函数表达到工作表中。有什么想法可以解决这个问题或以不同的方式解决它吗?
根据条件对产品求和
SumIf
适用于范围,不适用于数组。Range("A1:A10")
是一个范围,而Range("A1:A10").Value
是一个二维单列数组(包含 10 个元素(行))。- 您可以将产品写入另一列并使用此列应用
SumIf
,或者您可以在代码中创建循环(可能太慢),等等。 - 而是尝试以下方法之一。让我们知道它有什么问题,如果您需要它的某些部分是动态的。
Excel
在单元格
K2
中,您可以使用:=IFERROR(SUMPRODUCT(--(I:I0=I2),D:D0,F:F0),"")
然后抄下来。
VBA(公式)
Option Explicit
Sub SumData()
Dim dFormula As String
Const dFormula As String _
= "=IFERROR(SUMPRODUCT(--(I:I0=I2),D:D0,F:F0),"""")"
With ThisWorkbook.Worksheets("Sheet1").Range("K2:K250")
.Formula = dFormula
.Value = .Value
End With
End Sub