【问题标题】:Change cell value based on adjacent cell value根据相邻单元格值更改单元格值
【发布时间】:2013-07-02 08:21:09
【问题描述】:

我有一张表,其中 B 列有数据,有些是“端口”。 C列有一个规范。我需要创建一个遍历 B 列的宏,对于那些包含“端口”且端口不同于 22、3181 或 3389 的单元格,它将 B 列中单元格的值更改为“端口 +”。

c 列的格式各不相同,可以是“Port22、port22、port_22”等。示例如下:

|端口 |端口3181
|港口 |端口_3389
|网址 | abcd
|SQL | qwerty
|港口 | 5900 端口
|港口 |端口 22

我有一段适用于特定端口的代码,但我不知道如何将上述所有 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 列除了“端口”以外的其他内容到端口+。

【问题讨论】:

    标签: excel vba loops


    【解决方案1】:

    你没有提供太多代码来继续,但是

    If UCase(ActiveCell.value) Like "*PORT*"
    

    If Instr(1, Activecell.value, "Port", vbtextcompare) > 0 
    

    都将提供不区分大小写的比较

    如果有一列应该始终包含数据,则可以使用不同的行

    Cells(rows.Count, "A").end(xlup).row
    

    假设您知道数据未过滤,则获取最后填充的行

    【讨论】:

      猜你喜欢
      • 2014-06-11
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      • 2022-09-29
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      • 1970-01-01
      相关资源
      最近更新 更多