首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >For-Loop中的If语句

For-Loop中的If语句
EN

Stack Overflow用户
提问于 2019-01-16 02:52:00
回答 3查看 59关注 0票数 0

我尝试让for循环遍历一列来查找"No“,如果没有找到"No”,它会在另一个单元格中输出"Yes“。所以我的想法是有一个for循环,然后是一个if语句,声明如果单元格说"Yes“或"No Requirement”,则继续查找"No“,如果没有找到"No”,则输出"Yes“,如果找到,则循环停止并输出"No”。

我正在制作一个从同一个excel工作簿的不同工作表中提取数据的工具。

代码语言:javascript
复制
Sub PleaseWork()

Dim matrix(i, j) As Double


For i = 26 To 33
    For j = 8 To 8
        If Worksheets("Calculations").Range(i, j) = "Yes" Or "No Requirement" Then
            Worksheets("Calculations").Range("H33").Value = "Yes"
            Next i
        Else
            Worksheets("Calculations").Range("H33").Value = "No"
        End If



End Sub

这段代码甚至不会运行,每次我尝试运行它时都会得到一个编译错误。我是VBA的新手,我知道这可能是超级简单的,但我就是不能理解。

EN

回答 3

Stack Overflow用户

发布于 2019-01-16 03:07:49

Next i需要在您的If-End If之外,并且您需要在For i循环中添加Next j,以便代码能够运行。此外,如果使用j = 8,您的第二个循环将只运行一次,您可以完全消除这种情况。

说起来容易多了

代码语言:javascript
复制
For i = 26 To 33
    If Worksheets("Calculations").Cells(i, 8) = "Yes" Or Worksheets("Calculations").Cells(i, 8) = "No Requirement" Then
        Worksheets("Calculations").Range("H33").Value = "Yes"
    Else
        Worksheets("Calculations").Range("H33").Value = "No"
    End If
Next i
票数 1
EN

Stack Overflow用户

发布于 2019-01-16 03:19:23

如果你只看一列,我不确定你为什么要在这里使用矩阵。

下面的代码将检查列(如果您愿意,我可以将其设置为动态范围),并在第一个值为"No Requirement“的单元格停止-然后输出包含值和"No”的单元格的地址,并退出循环。

代码语言:javascript
复制
Sub RandomCol()

For Each cell In Worksheets("Calculations").Range("A1:A50")

    If cell.Value = "Yes" Or cell.Value = "No Requirement" Then

    ElseIf cell.Value = "No" Then
        Range("H33").Value = (cell.Address + " " + "No")
        Exit For
    End If

Next cell

End Sub
票数 0
EN

Stack Overflow用户

发布于 2019-01-23 13:39:55

我希望这能帮到你。

以下内容应该适用于您的目的:

代码语言:javascript
复制
    Sub RunIt()
      '          A, E, 1, 5
      PleaseWork 1, 5, 1, 5
    End Sub

    Sub PleaseWork(intFromCol As Integer, intToCol As Integer, intFromRow As Integer, _
                   intToRow As Integer)

        Dim intI As Integer
        Dim intJ As Integer
        Dim blnFoundNo As Boolean
        Dim strOut As String

        strOut = "Yes"
        blnFoundNo = False
        For intI = intFromCol To intToCol
            For intJ = intFromRow To intToRow
                '                                     Row , Col
                With Worksheets("Calculations").Cells(intJ, intI)
                    If LCase(Trim(.Value)) = "no" Then
                        strOut = Replace(Cstr(.Address), "$", "") & " = No"
                        blnFoundNo = True
                        Exit For
                    End If
                End With
            Next intJ
            If blnFoundNo Then Exit For
        Next intI

        Worksheets("Calculations").Range("H33").Value = strOut

    End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54205158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档