对于范围中的每个单元格,将单元格值添加到array-IF条件得到满足

这听起来像是一个基本的问题,但我一直没有find任何可以帮助我的提示。

我发现像Arr = Range("A1:B10")这样的东西会让事情变得简单,但是上面的例子的问题是,它可能会在指定范围内的所有值中移动,这不是我想要的去做。 虽然事后删除不需要的值听起来像是一个选项,但它听起来像是一个巨大的,毫无意义的绕道,可以很容易地避免。

目前我有以下几点:

 For Each cell In Worksheets("Search").Range("C7:C15").Cells If cell.Value = "Yes" Then fcat() = cell.Offset(0, -1).Value Next cell 

我早些时候猜测和尝试fcat(cell) ,但到目前为止,我只是在fcat() = cell.Offset(0, -1).Valuetypes不匹配错误,我不完全确定什么所有其他的尝试。

谢谢你的时间,并让我知道如果还有什么我可以做,以改善我的问题。

您将需要在数组variables上使用ReDim语句 。

 Sub fcat() Dim fcat As Variant, cell As Range ReDim fcat(0) For Each cell In Worksheets("Search").Range("C7:C15").Cells If cell.Value = "Yes" Then fcat(UBound(fcat)) = cell.Offset(0, -1).Value ReDim Preserve fcat(UBound(fcat) + 1) End If Next cell ReDim Preserve fcat(UBound(fcat) - 1) 'try it out Dim v As Long Debug.Print LBound(fcat) & ":" & UBound(fcat) For v = LBound(fcat) To UBound(fcat) Debug.Print fcat(v) Next v End Sub 

REDIM声明

立即窗口的结果:

 fcat 0:6 13 32 6 20 7 

variables不会自动增长或缩小。 它的下限和上限由LBound函数和UBound函数表示 。 您可以使用“保留”选项为arrays指定大小并填充该大小或使用Redim更改大小,以维护其已包含的数据。

我认为这应该可以解决你的问题。

 Dim i as integer i = 0 For Each cell In Worksheets("Search").Range("C7:C15").Cells If cell.Value = "Yes" Then fcat(i) = cell.Offset(0, -1).Value i = i +1 end if Next cell 

在Excel中使用标准函数怎么样? 像sumif

您可以使用SUMIF函数对符合您指定条件的范围内的值进行求和。 例如,假设在包含数字的列中,只需求和大于5的值。可以使用以下公式:

= SUMIF(B2:B25, “> 5”)

在这个例子中,标准被应用于正在求和的值。 如果您愿意,您可以将标准应用于一个范围,并将不同范围内的相应值相加。 例如,公式= SUMIF(B2:B5,“John”,C2:C5)仅将范围C2:C5中的值相加,其中范围B2:B5中的相应单元格等于“John”。