将与模式匹配的值复制/移动到另一列

将与模式匹配的值复制/移动到另一列

我有一张工作表,我们需要将所有符合模式的值移动到不同的列。

例如,我们有一列,其值为一个或多个字母,B后跟一个或多个数字,如k123,,,,,,等。我需要将以 开头的所有值放在列中,将以 开头的所有值放在列中,等等。k4567g345g65535HJ4567KL4553kCgD

有没有什么宏可以做到这一点?

答案1

此代码将创建一个宏,根据列中每个单元格的数字前面的字母移动数据B。将其粘贴到 VBA Explorer ( Alt+ F11) 中,它将在宏窗口中显示为MoveData

您将看到代码查看每个单元格以查看最左边的字符是什么。如果是,则将k单元格内容复制到右侧 1 个位置的单元格(C 列),然后清除原始单元格。如果字符是g,则将其复制到右侧 2 个位置的单元格(D 列),然后清除原始单元格。

Sub MoveData()
Dim myrange, cell As Range
Set myrange = ActiveSheet.Range("B:B", Range("B:B").End(xlDown))
For Each cell In myrange
    If Left(cell.Value, 1) = "k" Then
        cell.Offset(0, 1).Value = cell.Value
        cell.ClearContents
    ElseIf Left(cell.Value, 1) = "g" Then
        cell.Offset(0, 2).Value = cell.Value
        cell.ClearContents
    End If
Next cell

    'Delete empty cells in column C
    Columns("C:C").Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.Delete Shift:=xlUp

    'Delete empty cells in column D
    Columns("D:D").Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.Range("A1").Select
End Sub

您可以通过修改语句中的"k"或来更改它寻找的值。"g"IF

免责声明:使用风险自负。备份您的作品。对任何数据丢失概不负责。

相关内容