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
我已经看到几个问题,询问如何使用 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