用于查找单元格值是不是在范围内的双 For 循环

Posted

技术标签:

【中文标题】用于查找单元格值是不是在范围内的双 For 循环【英文标题】:Double For Loop for finding if a cell value is in a range用于查找单元格值是否在范围内的双 For 循环 【发布时间】:2014-10-09 09:14:51 【问题描述】:

更多的 VBA 优点,我尝试编写一个带有 for 循环的 for 循环,以通过获取单元格文本为其分配一个变量,然后运行一个范围,查看单元格值是否在范围内,如果找到则更改如果没有找到另一个单元格的值为是或否,但尽管我自己能够看到范围内的值,但我一直得到所有的否

关键是要避免使用 vlookup 函数 =if(vlookup("value","Table","col","false"),"Yes","No") 尽管它似乎跳过了一些值现在。

我的代码是

Dim xell As Range

For Each xell In Range("C6:C36")

lookFor = xell.Value

For i = 6 To 36

    If Cells(i, 10).Value = lookFor Then
        Cells(i, 7).Value = "Yes"
        Else
        Cells(i, 7).Value = "No"
    End If
Next i

Next xell

在第一个范围内循环的想法是让单元格文本将其分配给一个变量,并在此期间启动一个新循环以查看一个范围以查看单元格值是否在此范围内。

它执行但返回 All no。

【问题讨论】:

您每次都会覆盖您的单元格,因此只能获取 Range("C6:C36") 中最后一个 xcell 的结果 那会是什么更正? 【参考方案1】:

原来我在找到yes时退出了我的循环:)

需要退出

Dim xell As Range

For Each xell In Range("C6:C36")

lookFor = xell.Value

For i = 6 To 36

    If Cells(i, 10).Value = lookFor Then
        Cells(i, 7).Value = "Yes"
        Exit For <-------- was missing
        Else
        Cells(i, 7).Value = "No"
    End If
Next i

Next xell

没有解决我当前的问题,即除非编辑,否则找不到数据

【讨论】:

好的,现在,您通过“否”解决了覆盖问题。但是你仍然有最后一个循环(xell = C36)的覆盖。最后一个循环的结果覆盖了之前 29 个循环的结果……但这不是 VBA 的问题,而是你想要做什么的设计问题…… 这个结果对我有用,为了确保它确实我在一个 vlookup 旁边运行它,它产生了相同的结果,即使是除非编辑才能找到的常量单元格是相同的

以上是关于用于查找单元格值是不是在范围内的双 For 循环的主要内容,如果未能解决你的问题,请参考以下文章

使用单元格值范围内的条件运行 SQL 查询列表

如果条件为真,如何循环 LibreOffice Calc 电子表格中的行范围、比较单元格值、设置单元格值和删除行

动态循环范围,VBA

尝试使用 OpenCV 查找特定范围内的像素(使用 for 循环)

如何使For-Each循环向后运行

修改查找和替换的 VBA 代码以循环遍历多个工作表