VBA 根据特定单元格条件将单元格从一列移动到另一列的代码

VBA code for moving cells from one column to another based on specific cell criteria

我已经看到几个问题,询问如何使用 VBA 将单元格从一个工作簿移动到另一个工作簿或一个 sheet 到另一个工作簿,但我希望将信息从一列移动到另一列相同的 sheet 基于特定标准。

我编写这段代码是为了将包含单词 "save" 的单元格从 A 列移动到同一 sheet 中的 I 列:

Sub Findandcut()
    Dim rngA As Range
    Dim cell As Range

    Set rngA = Sheets("Jan BY").Range("A2:A1000")
    For Each cell In rngA
        If cell.Value = "save" Then
            cell.EntireRow.Cut
            Sheets("Jan BY").Range("I2").End(xlDown).Select
            ActiveSheet.Paste
        End If
    Next cell

End Sub

但是,虽然当我 运行 这个宏没有显示任何错误时,它似乎也没有做任何其他事情。没有选择、剪切或粘贴任何内容。我的代码哪里出错了?

move cells from column A if they contained the word "save" to column I in the same sheet

您的代码不会做这样的事情。

要完成您的要求,您需要这样的东西:

Sub Findandcut()
    Dim row As Long

    For row = 2 To 1000
        ' Check if "save" appears in the value anywhere.
        If Range("A" & row).Value Like "*save*" Then
            ' Copy the value and then blank the source.
            Range("I" & row).Value = Range("A" & row).Value
            Range("A" & row).Value = ""
        End If
    Next

End Sub

编辑

如果要移动行的全部内容,使其从第 I 列开始,只需替换相关代码部分:

If Range("A" & row).Value Like "*save*" Then
    ' Shift the row so it starts at column I.
    Dim i As Integer
    For i = 1 To 8
        Range("A" & row).Insert Shift:=xlToRight
    Next
End If

可能是这样的:

Sub Findandcut()
    Dim rngA As Range
    Dim cell As Range

    Set rngA = Sheets("Jan BY").Range("A2:A1000")
    For Each cell In rngA
        If cell.Value = "save" Then
            cell.Copy cell.Offset(0, 8)
            cell.Clear
        End If
    Next cell

End Sub

此代码向下扫描列,检测匹配项并执行复制。复制会带来 格式 以及值。

Sub Findandcut()
    Dim rngA As Range
    Dim cell As Range

    Set rngA = Sheets("Jan BY").Range("A2:A1000")
    For Each cell In rngA
        If cell.Value = "save" Then
            Sheets("Jan BY").Range("I" & Rows.Count).End(xlUp).Select
            Selection.Value = cell.Value
            cell.Delete Shift:=xlUp
        End If
    Next cell

End Sub