我有一个标题为CASES-PENDING的工作表,包含许多行数据。我每天将特定行的开始单元格的状态更改为“已完成”(从“待定”更改)。而不是必须削减该行并粘贴我的其他CASES-DONE标题工作表,我想要一个宏来做到这一点。 我想在更改几行数据的状态后运行宏,从“挂起”到“完成”。然后必须将所有这些行剪切并粘贴到另一个工作表上。 那可能吗? 非常感谢你们!
答案 0 :(得分: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变量更改范围以使其变量。
答案 1 :(得分: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