Excel 宏:如果某列每行最后一个字符是"something",那么

Excel Macro: If the final characters in each row of a column is "something", then

如果其中一个单元格满足特定条件,我将尝试连接两个单元格。

具体来说:如果 D 列单元格中的最后一个字符 = " XX ",则连接。我做了类似于下面的操作,但每次都出现错误。

Sub concatenate()
Last = Cells(Rows.Count, 4).End(xlUp).Row

  For i = Last To 1 Step -1

    If Right(Cells(i, 4), 4) = " XX " Then
    'do some stuff to concatenate'

    End If

  Next i

End Sub

非常感谢任何帮助。

Sub concatenate()

Dim myCell As String
Dim i As Integer

lastRow = Worksheets("yourSheet").Cells(Rows.Count, 4).End(xlUp).Row

For i = lastRow To 1 Step -1

    myCell = Worksheets("yourSheet").Cells(i, 4).Value

    If Right(myCell, 4) = " XX " Then
    'do some stuff to concatenate'

    End If

Next i

End Sub

这是添加了一些错误控制的反向循环。

Sub concat()
    Dim i As Long, l As Long
    l = Cells(Rows.Count, 4).End(xlUp).Row
    For i = l To 1 Step -1
        If Not IsEmpty(Cells(i, 4)) Then
            If Not IsError(Cells(i, 4)) Then
                If LCase(Right(Cells(i, 4).Value, 4)) = LCase(" XX ") Then

                    'do some stuff to concatenate'
                    'maybe...
                    Cells(i, 4) = Cells(i, 4).Value & " - " & Cells(i, 5).value
                    Cells(i, 5).clearcontents 'clears value; use Cells(i, 5).clear to clear everything

                End If
            End If
        End If
    Next i
End Sub

运行 空单元格上的字符串操作是不必要的,并且可能会引发错误。尝试对单元格执行 运行 相同的操作并出错将始终抛出 Run-time error '13': Type mismatch。您可能有其他需要适应的特殊情况,但这应该可以帮助您入门。

最后,VBA中的直接字符串比较一般是区分大小写的;因此将两者都转换为小写以消除区分大小写。