我有一个表,其中列B有数据,有些是“端口”。 C列有规格。我需要创建一个迭代B列的宏,对于那些包含“Port”的单元,并且端口与22,3181或3389不同,它将B列中单元格的值更改为“Port +”。
列c中的格式有所不同,因此它可以是“Port22,port22,port_22”等。示例如下:
|港口| Port3181
|港口| port_3389
| URL | ABCD
| SQL | QWERTY
|港口|港口5900
|港口| Port22
我有一段适用于特定端口的代码,但我不知道如何将所有上述3个端口都包含在标准中。
If ActiveCell Like "Port" And Not ActiveCell.Offset(0, 1) Like "*3181*" Then ActiveCell.FormulaR1C1 = "Port+"
虽然这感觉非常笨拙,也许有人知道更好的方法吗?我有多个工作表,其中最后一行变化,所以我想使循环部分以某种方式动态,所以我可以为所有工作表使用相同的宏。
编辑:
这就是我想出来的:
Dim i As Integer
i = 1
Do
i = i + 1
If InStr(1, ActiveCell.Value, "Port", vbTextCompare) > 0 And ActiveCell.Offset(0, 1) Like "*22*" _
Or ActiveCell.Offset(0, 1) Like "*3181*" Or ActiveCell.Offset(0, 1) Like "*3389*" _
Then ActiveCell.FormulaR1C1 = "Port" Else ActiveCell.FormulaR1C1 = "Port+"
ActiveCell.Offset(1, 0).Select
Loop Until i = 40
现在它的工作原理是,当端口不是指定的3时,它将B列中的单元格更改为Port +。然而,它也改变了非端口条目,其中列B除了“端口”之外还有其他东西。
答案 0 :(得分:0)
你没有提供太多代码,但是
If UCase(ActiveCell.value) Like "*PORT*"
或
If Instr(1, Activecell.value, "Port", vbtextcompare) > 0
都会提供不区分大小写的比较
对于不同的行,如果有一列应始终包含数据,则可以使用
Cells(rows.Count, "A").end(xlup).row
获取最后填充的行,假设您知道数据未被过滤