excel - 获取 excel 将整行粘贴到新工作表上的下一个可用位置,而不是覆盖已经存在的数据
问题描述
如果列包含关键字,我将使用此代码复制/粘贴整行。我将宏分配给一个按钮。它可以工作,但如果我得到一个标记为完成的新项目并再次按下按钮,它会删除“完成”工作表上的所有内容并粘贴新信息。我希望它粘贴在最后一行下面。
Dim i As long
Dim p As long
Dim Source As Worksheet
Dim Target As Worksheet
Set Source = ActiveWorkbook.Worksheets("In Progress")
Set Target = ActiveWorkbook.Worksheets("Complete")
p = 3 ' Start copying to row 3 in target sheet
Dim lastrow As Integer: lastrow = Source.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
For i = lastrow To 3 Step -1
If Source.Range("B" & i).Value = "Complete" Then
Source.Rows(i).Copy Target.Rows(p)
Source.Rows(i).EntireRow.Delete
p = p + 1
End If
Next
End Sub
谷歌搜索后,看来我需要类似的东西
lastrow = Sheet2.Range("A99999").End(xlUp).Row + 1.
我是否有点接近我需要解决的问题?谢谢您的帮助。
解决方案
工作版本:
Sub TransferComplete()
Dim i As long
Dim p As long
Dim Source As Worksheet
Dim Target As Worksheet
Set Source = ActiveWorkbook.Worksheets("In Progress")
Set Target = ActiveWorkbook.Worksheets("Complete")
p = Target.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row + 1 ' Start copying to last row in target sheet
Dim lastrow As long: lastrow = Source.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
For i = lastrow To 3 Step -1
If Source.Range("B" & i).Value = "Complete" Then
Source.Rows(i).Copy Target.Rows(p)
Source.Rows(i).EntireRow.Delete
p = p + 1
End If
Next
End Sub
我删除p = 3
并替换为p = Target.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row + 1
推荐阅读
- brightway - 通过 BW2 在 ecoinventdb 中搜索时出现奇怪的结果
- python - 尝试访问 Google 表格并收到有关“意外凭据类型”的错误
- typescript - 在 TypeScript 中将名称 + 类型组合成一个类型化列表
- xamarin.forms - 我正在尝试以编程方式将图像添加到列表/数组中,并在每个循环中访问它们以更改它们的源图像
- google-cloud-platform - SDK 调用的 Google API 端点列表
- powershell - 使用文件名作为变量重命名我的项目不使用 Powershell
- emacs - SSreflect 不适用于 Emacs、Coq 和 ProofGeneral。如何在 MacOS 中安装 SSreflect?
- javascript - 用于 API 代理链接的 HTML 表单操作
- sql - T-SQL 返回表按最大对优先排序
- python-3.x - 我如何创建决策变量