宏插件

时间:2009-04-30 17:56:23

标签: excel excel-vba vba

目前设置此宏以便如果列G具有“上一个术语”和“好”或“好”并且“保持”彼此相邻,则07a将被输入到列I中的同一行。我想修改此代码,以便如果列G包含“最后一个术语”,并且列K包含任何组合或任何顺序的“好”和“结束”或“好”和“停留”,可能还有其他单词,之前,或者只要存在这两种不同的组合,就在它们后面,那么07a将被输入同一行的第一列。

子插件()     Dim nRow As Long     Dim iRow As Long

nRow = ActiveSheet.Cells(Rows.Count, "G").End(xlUp).Row

For iRow = 1 To nRow
    With Cells(iRow, "G")
        If .Text Like "Okay*" Or .Text Like "End*" Then
            Cells(iRow, "I") = "07a"
        If .Text Like "Okay*" Or .Text Like "Stay*" Then
            Cells(iRow, "I") = "07a"
        End If
    End With
Next iRow

End Sub

1 个答案:

答案 0 :(得分:1)

请尝试以下代码:

Sub Plugin()
Dim nRow As Long
Dim iRow As Long
Dim KUpperText As String

nRow = ActiveSheet.Cells(Rows.Count, "G").End(xlUp).Row

For iRow = 1 To nRow
    KUpperText = UCase(Cells(iRow, "K").Text)
    If UCase(Cells(iRow, "G").Text) Like UCase("Last Term*") Then
        If ((KUpperText Like "*END*" And KUpperText Like "*OKAY*") _
         Or (KUpperText Like "*STAY*" And KUpperText Like "*OKAY*")) Then
            Cells(iRow, "I") = "07a"
        End If
    End If
Next iRow
End Sub

对于每个循环,我读取K列中的Text字符串。 它的格式为大写,以确保例如处理“结束”和“结束”。