这听起来像是一个基本问题,但我找不到任何可以帮助我的提示。
我发现像 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).Value
,我不完全确定还可以尝试什么。
感谢您抽出宝贵的时间,如果我还能做些什么来改进我的问题,请告诉我。
最佳答案
您将需要使用ReDim statement在数组变量上。
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
变量的大小不会自动增大或缩小。其下边界和上边界由 LBound function 表示。和 UBound function 。您可以为数组分配大小并填充它,或者使用 Redim 使用“保留”选项更改大小,以维护其已包含的数据。
关于arrays - 对于范围内的每个单元格,将单元格值添加到数组 - IF 条件满足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32202260/