我有一个名为 CASES-PENDING 的工作表,其中包含许多数据行。我每天都会将特定行的起始单元格的状态更改为“完成”(从“待处理”更改)。然后不必剪切该行并粘贴到我的其他 CASES-DONE 标题工作表上,我想要一个宏来做到这一点。我想在将几行数据的状态从“待定”更改为“完成”后运行宏。然后必须将所有这些行剪切并粘贴到另一个工作表上。那可能吗?非常感谢你们!
问问题
5734 次
2 回答
0
你也可以这样做。比 AutoFilter 解决方案更多的代码,但可能更灵活。
Sub MoveDoneRows()
Dim nStatusCol As Integer
nStatusCol = 1
Dim i As Integer
i = 2
' select first row to insert rows into DONE sheet
Dim nInsertRow As Integer
Sheets("CASES-DONE").Select
Range("A1").Select
Selection.End(xlDown).Select
nInsertRow = ActiveCell.Row + 1
' move rows with status done
Dim sStatus As String
Dim sPasteRow As String
sStatus = Sheets("CASES-PENDING").Cells(i, nStatusCol).Value
While sStatus <> ""
If sStatus = "done" Then
' cut the current row from PENDING sheet
sPasteRow = i & ":" & i
Sheets("CASES-PENDING").Select
Rows(sPasteRow).Select
Selection.Cut
' paste into DONE sheet
Sheets("CASES-DONE").Select
Cells(nInsertRow, nStatusCol).Select
ActiveSheet.Paste
nInsertRow = nInsertRow + 1
' delete empty row from PENDING sheet
Sheets("CASES-PENDING").Select
Rows(sPasteRow).Select
Selection.Delete Shift:=xlUp
Else
i = i + 1
End If
sStatus = Sheets("CASES-PENDING").Cells(i, nStatusCol)
Wend
End Sub
于 2013-06-25T20:15:36.827 回答
0
这只是在黑暗中刺伤,但我最近一直在处理类似的事情。
Dim LastRow As Long
Range("1:1").AutoFilter Field:=(Row you have "Done" in), Criteria1:="Done"
LastRow = Cells(Rows.Count, 3).End(xlUp).Row
Range("CellRangeYouNeedCopied" & LastRow).Copy Destination:=Sheets("SheetX").Range(X,Y)
基本上,这会过滤到其中包含 DONE 的行,并将它们复制并粘贴到您决定命名的任何其他工作表上。只要记住替换所有变量。我对此还是很陌生,所以我可能错了,但值得一试!
编辑:您也可以将其记录为宏,然后使用 Long 变量更改范围以使其成为变量。
于 2013-06-25T19:28:27.083 回答