excel - 如何从剪切/删除/粘贴已在同一工作表中剪切/删除/粘贴的行中停止 Find if Then 功能
问题描述
我修改了下面的代码,以便根据列中的特定值将整行剪切并粘贴到 SAME 表中的较低位置。这些行不是粘贴在最后一行,而是粘贴在有数据的行之间的几个空行中。假设我有 12 行需要复制并粘贴到数据之间的 12 个空行中。下面的代码将首先将行移动到 12 个空行,然后继续移动已经移动到所有行末尾位置的大约 6 行。移动 12 行后如何让代码停止?
Sub MoveLS()
Dim i As Variant
Dim endrow As Integer
Dim Version3 As Worksheet
Set Version3 = ActiveWorkbook.Sheets("Version 3")
endrow = Version3.Range("A1").End(xlDown).Offset(1, 0).Row
For i = 2 To endrow
If Version3.Cells(i, "AVI").Value = "3. NOT ON LIST" Then
Version3.Cells(i, "AVI").EntireRow.Cut Destination:=Version3.Range("A1").End(xlDown).Offset(1, 0)
Version3.Cells(i, "AVI").EntireRow.Delete
End If
Next
End Sub
解决方案
这是一种方法:在完成循环之前不要删除行。
Sub MoveLS()
Dim i As Variant
Dim endrow As Integer
Dim Version3 As Worksheet
Dim rngDel As Range
Set Version3 = ActiveWorkbook.Sheets("Version 3")
endrow = Version3.Range("A1").End(xlDown).Row 'removed the Offset(1, 0)
For i = 2 To endrow
If Version3.Cells(i, "AVI").Value = "3. NOT ON LIST" Then
Version3.Cells(i, "AVI").EntireRow.Cut _
Destination:=Version3.Range("A1").End(xlDown).Offset(1, 0)
'add a dummy value so the next xlDown doesn't stop here
Version3.Cells(i, "A").Value = "XXX"
'build range to delete later
If rngDel Is Nothing Then
Set rngDel = Version3.Cells(i, "AVI")
Else
Set rngDel = Application.Union(rngDel, Version3.Cells(i, "AVI"))
End If
End If
Next
'delete any cleared rows
If Not rngDel Is Nothing Then rngDel.EntireRow.Delete
End Sub
推荐阅读
- visual-studio-code - Nsis 打包构建,在 VSCode 中不起作用
- python - Python Regex 4 字母单词,最少 1 个大写字母
- c# - WPF中的Emgu.cv绑定失败
- string - 如何将多个地址传递给radare2中的axt命令以查找二进制文件中所有字符串的交叉引用?
- windows - Windows 上的 Hive 支持无法使用 winutils
- ios - 如何使用 react-native 从 iPhone 获取已安装应用程序的列表
- substrate - 启动基板前端模板时出错
- node.js - Nodejs:搜索包含特定单词的文件夹
- javascript - ReactJs:TypeError:无法读取未定义的属性“长度”
- assembly - 警告:`PTR' 不是 NASM 关键字 [-w+ptr]