嵌套关键字循环结构问题

时间:2016-06-25 04:01:54

标签: vba excel-vba loops for-loop nested-loops

(我的程序做什么)

---------- Code worksheet for program

希望 列B 中的每个单元格以及列E 中的关联分配给名称<当 A列中的语句文本包含关键字 D列

中找到的颜色时填充原始数据

程序通过执行使用 Instr 功能的嵌套循环来运行。我设计的结构创建了一个机械化的匹配过程。 Prorgram搜索具有 INSTR 功能的关键字:在父字符串中使用(mytext)变量是要在其中搜索“substring”的字符串(“blue”)

如果InStr(MyText,“蓝色”)和单元格(y,4)=“蓝色”则单元格(x,2)=单元格(y,5)

如果列A中的(( Mytext “'primary_string')变量(语句)包含与子字符串匹配的文本,”蓝色“,”子字符串“)

AND 单元格(y,4)=“蓝色”

如果满足上述条件,则代码将在THEN语句

上执行

然后

我的计划问题

我的问题主要集中在最好地理解设计此代码的机制上。我把节目放在一起,有时我在最后的结果中更幸运。想要提高知识。

循环命名结构 - 了解我的程序使用嵌套循环(其中一个循环在另一个循环中执行)

1 即可。我说道德(x,1)'col A satements'是外环吗?

2。我是否正确说Do While(y,4)'Col D keyword'是内圈?

3。说myText'主要字符串'是否正在搜索'substring'“Blue”中所述的文字是否正确?)

如果InStr(MyText,“蓝色”)和单元格(y,4)=“蓝色”则单元格(x,2)=单元格(y,5)

循环结构问题(根据我的假设)

4. Y = y + 1(内部循环)是否在x = x + 1(外部循环)之前,因此它退出内部循环(Col D关键字)以检查Col A语句中的关键字短语)?

** 5. **为什么在y = y + 1之后使用关键字Loop(是启动循环)?

6. 为什么在x = x + 1 /之后编写Y + 2是否是正确的方法来对抗循环的下一次迭代?我问,因为我们已经有Y = Y + 1 ......

7。为什么我们不必写x = 2

y = y + 1 环 x = x + 1 y = 2 环

代码结构&amp; 变量

A栏 - 语句(预先填充)

B栏 - 已分配给(最初空白列)

C栏 - 空白栏

D列 - 关键字(包含颜色文字关键字)

E列 - 已分配给(填写B列的名称 - 如果A列中包含的文字与D列匹配

(我的计划中的代码)

Sub search_color()

x = 2
y = 2

Do While Cells(x, 1) <> ""

MyText = Cells(x, 1)

Do While Cells(y, 4) <> ""

If InStr(MyText, "Blue") And Cells(y, 4) = "Blue" Then Cells(x, 2) = Cells(y, 5)

If InStr(MyText, "Brown") And Cells(y, 4) = "Brown" Then Cells(x, 2) = Cells(y, 5)

If InStr(MyText, "Orange") And Cells(y, 4) = "Orange" Then Cells(x, 2) = Cells(y, 5)

If InStr(MyText, "Yellow") And Cells(y, 4) = "Yellow" Then Cells(x, 2) = Cells(y, 5)

If InStr(MyText, "Pink") And Cells(y, 4) = "Pink" Then Cells(x, 2) = Cells(y, 5)

If InStr(MyText, "White") And Cells(y, 4) = "White" Then Cells(x, 2) = Cells(y, 5)

If InStr(MyText, "Red") And Cells(y, 4) = "Red" Then Cells(x, 2) = Cells(y, 5)

If InStr(MyText, "Purple") And Cells(y, 4) = "Purple" Then Cells(x, 2) = Cells(y, 5)

If InStr(MyText, "Black") And Cells(y, 4) = "Black" Then Cells(x, 2) = Cells(y, 5)

y = y + 1

Loop

x = x + 1

y = 2

Loop

End Sub

1 个答案:

答案 0 :(得分:0)

Sub search_color()
    Dim x As Long, y As Long
    x = 2

    Do While Cells(x, 1)  ""
        y = 2

        Do While Cells(y, 4)  ""

            If InStr(1, Cells(x, 1).Text, Cells(y, 4).Text, vbTextCompare) Then
                Cells(y, 5) = Cells(x, 2)
                Exit Do
            End If

            y = y + 1

        Loop

        x = x + 1
    Loop

End Sub