(我的程序做什么)
---------- 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
答案 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