2013-06-25 168 views
0

我有一个名为CASES-PENDING的工作表,其中包含许多行数据。在每天的基础上,我将特定行的开始单元格的状态更改为“已完成”(从“待定”更改)。与其不必剪切该行并粘贴在我的其他CASES-DONE标题工作表上,我想要一个宏来做到这一点。 我想在更改多行数据的状态(从“挂起”到“完成”)后运行宏。然后,所有这些行必须剪切并粘贴到另一个工作表上。 这可能吗? 非常感谢!Excel宏将一行工作表中的特定行从一个工作表切换到另一个工作表

回答

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) 

基本上这个过滤器,只在他们开展的行,copys和它们粘贴在你决定什么名字等板材。只记得替换所有的变量。我在这方面还很新,所以我可能是错的,但值得一试!

编辑:您也可以将其记录为宏,然后使用Long变量更改范围以使其变量。

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 
相关问题