VBA搜索值并更改行+;2.

VBA搜索值并更改行+;2.,vba,excel,range,Vba,Excel,Range,有人能帮我处理下面的vba吗?我试图实现的是在列中搜索文本字符串,如果它符合我的条件,则更改动态范围的格式。我很难弄清楚如何使这个范围充满活力。始终是与字符串+2匹配的行 以下是到目前为止我得到的信息: Sub FormatPercentages() Dim RowToTest As Long For RowToTest = Cells(Rows.count, 27).End(xlUp).Row To 2 Step -1 With Cells(RowToTest, 27) If .

有人能帮我处理下面的vba吗?我试图实现的是在列中搜索文本字符串,如果它符合我的条件,则更改动态范围的格式。我很难弄清楚如何使这个范围充满活力。始终是与字符串+2匹配的行

以下是到目前为止我得到的信息:

Sub FormatPercentages()
Dim RowToTest As Long


For RowToTest = Cells(Rows.count, 27).End(xlUp).Row To 2 Step -1

With Cells(RowToTest, 27)
    If .Value Like "*Efficiency*" _
    Then _
    Range("AD129:AS131").NumberFormat = "0%"
End With

Next RowToTest

End Sub
我需要有关范围部分的帮助:范围(“AD129:AS131”)。NumberFormat=“0%” 我认为应该是这样的,尽管我知道它写得很糟糕(AD&“N”:&AD.xlToRight&“N”+2)。其中N是与字符串效率匹配的行号

谢谢,,
C

这种混淆可能来自于
\uuu
的奇怪用法。它是这样工作的吗

Sub FormatPercentages()

    Dim RowToTest As Long

    For RowToTest = Cells(Rows.Count, 27).End(xlUp).Row To 2 Step -1
        With Cells(RowToTest, 27)
            If .Value Like "*Efficiency*" Then
                Range("AD" & RowToTest & ":AD" & RowToTest + 2).NumberFormat = "0%"
            End If
        End With
    Next RowToTest
End Sub

我没有测试它,但它看起来像您需要的,假设您的问题中的
N
RowToTest

可能是因为
的奇怪用法引起了混淆。它是这样工作的吗

Sub FormatPercentages()

    Dim RowToTest As Long

    For RowToTest = Cells(Rows.Count, 27).End(xlUp).Row To 2 Step -1
        With Cells(RowToTest, 27)
            If .Value Like "*Efficiency*" Then
                Range("AD" & RowToTest & ":AD" & RowToTest + 2).NumberFormat = "0%"
            End If
        End With
    Next RowToTest
End Sub

我还没有测试它,但它看起来像您需要的,假设您的问题中的
N
RowToTest

请尝试
Resize
属性:

Range("AD" & RowToTest).Resize(3, 1).NumberFormat = "0%"
或者


尝试
调整大小
属性:

Range("AD" & RowToTest).Resize(3, 1).NumberFormat = "0%"
或者


要么像这样使用代码:

...
If .Value Like "*Efficiency*" Then
    Range(Cells(RowToTest, 27), Cells(RowToTest, 27).End(xlToRight)).NumberFormat = "0%"
End If
...
或者,如果从第3行开始,则使用条件格式(您确实从第2行开始…)


条件格式也返回到没有“效率”的状态。。。(如果要使用区分大小写的搜索,请将
SEARCH
替换为
FIND

按照以下方式使用代码:

...
If .Value Like "*Efficiency*" Then
    Range(Cells(RowToTest, 27), Cells(RowToTest, 27).End(xlToRight)).NumberFormat = "0%"
End If
...
或者,如果从第3行开始,则使用条件格式(您确实从第2行开始…)


条件格式也返回到没有“效率”的状态。。。(如果要使用区分大小写的搜索,请将
SEARCH
替换为
FIND

这正是我要查找的内容。你也烧得很快!非常感谢你,维迪亚塔!这正是我想要的。你也烧得很快!非常感谢你,维迪亚塔!