Arrays 对于范围中的每个单元格,若满足条件,则将单元格值添加到数组中
这听起来像是一个基本的问题,但我还没有找到任何可以帮助我的提示 我发现了类似Arr=RangeA1:B10的东西,这会使事情变得简单,但上面的例子的问题是,它可能会将指定范围内的所有值推入,而我不希望它这样做。虽然事后删除不需要的值听起来像是一种选择,但它也像是一个可以轻松避免的大而无意义的迂回 目前我有以下几点:Arrays 对于范围中的每个单元格,若满足条件,则将单元格值添加到数组中,arrays,vba,excel,foreach,Arrays,Vba,Excel,Foreach,这听起来像是一个基本的问题,但我还没有找到任何可以帮助我的提示 我发现了类似Arr=RangeA1:B10的东西,这会使事情变得简单,但上面的例子的问题是,它可能会将指定范围内的所有值推入,而我不希望它这样做。虽然事后删除不需要的值听起来像是一种选择,但它也像是一个可以轻松避免的大而无意义的迂回 目前我有以下几点: For Each cell In Worksheets("Search").Range("C7:C15").Cells If cell.Value = "Yes" Then
For Each cell In Worksheets("Search").Range("C7:C15").Cells
If cell.Value = "Yes" Then fcat() = cell.Offset(0, -1).Value
Next cell
我之前猜了一下,也尝试了fcatcell,但到目前为止,我只在fcat=cell.Offset0,-1.Value上得到了类型不匹配错误,我不完全确定还需要尝试什么
谢谢您抽出时间,如果还有什么可以改进我的问题,请告诉我。我认为这应该可以解决您的问题
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函数对满足指定条件的范围内的值求和。例如,假设在包含数字的列中,您只希望对大于5的值求和。可以使用以下公式: =SUMIFB2:B25,>5 在此示例中,标准将应用于要求和的值。如果需要,可以将条件应用于一个范围,并将不同范围内的相应值相加。例如,公式=SUMIFB2:B5,John,C2:C5仅对C2:C5范围内的值求和,其中B2:B5范围内的对应单元格等于John。您需要对数组变量使用
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
即时窗口中的结果:
fcat
0:6
13
32
6
20
7
该变量不会自动增大或缩小大小。其上下边界由和表示。您可以为阵列分配一个大小并填充它,或者使用“保留”选项使用Redim更改大小,以维护它已经包含的数据。您必须使用IndexNumber来寻址位置。这就是为什么我自己没有想到这样一个简单的解决方案的原因。感谢您的快速回复!虽然现在我在说“下标超出范围”时遇到了一个错误,所以我想我接下来会研究这个问题。请检查@jepeed的答案