首页 > 解决方案 > 连接字符串而不是替换

问题描述

我正在从表中过滤某些列:

ActiveSheet.Range("A1").AutoFilter Field:=3, Criteria1:="<>*/*"

我想要所有不包含的东西/

然后我申请Selection.Replace将该单元格的内容与/SUP

Selection.Replace What:="???", Replacement:="???/SUP", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

但它不起作用。我期望的输出是:

cellWith/ --- replace --- cellWith/
cellWithout --- replace --- cellWithout/SUP

有人能帮我吗?

标签: excelvbareplace

解决方案


与我的上一条评论相关,循环使用变体数组,这应该很快,因为检查是由 VBA 执行的,而不是每次都引用单元格:

Sub test()
    Dim lr As Long, i As Long, arr As Variant
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    arr = Range(Cells(1, 1), Cells(lr, 1)).Value
    For i = 2 To UBound(arr)
        If InStr(arr(i, 1), "/") Then
            Cells(i, 2).Value = arr(i, 1)
        Else
            Cells(i, 2).Value = arr(i, 1) & "/SUP"
        End If
    Next i
End Sub

我将值输出到 b 列(出于可视化目的,从循环中的第 2 行开始),如下所示:

在此处输入图像描述


推荐阅读