arrays - 对于范围内的每个单元格,将单元格值添加到数组 - IF 条件满足

标签 arrays vba excel foreach

这听起来像是一个基本问题,但我找不到任何可以帮助我的提示。

我发现像 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

         REDIM statement

立即窗口的结果:

fcat
0:6
 13 
 32 
 6 
 20 
 7 

变量的大小不会自动增大或缩小。其下边界和上边界由 LBound function 表示。和 UBound function 。您可以为数组分配大小并填充它,或者使用 Redim 使用“保留”选项更改大小,以维护其已包含的数据。

关于arrays - 对于范围内的每个单元格,将单元格值添加到数组 - IF 条件满足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32202260/

相关文章:

C++ 在类中设置数组值

c - 二维和一维数组中指针的区别

javascript - 访问返回的 Promise 对象数组值

VBA 读取密码保护的宏

sql-server - Excel 2007 表单到 SQL Server

sql - Oracle SQL 中的数组

sql-server - 运行简单的 VBA 脚本来测试连接

VBA 返回#REF!粘贴值时

vba - 删除 html 电子邮件中的随机换行符

javascript - node.js 如何打开/读取包含密码的 XLSX 文件