2016-12-17 94 views
-2

我在我的Excel工作簿中有4個選項卡:主跟蹤,進行中,已完成和已移除。主跟蹤表中包含數百個任務的列表。列A到G保存每個任務的信息,列「H」包含任務當前狀態的下拉列表。這個想法是能夠點擊列「H」中的下拉菜單並調整狀態,如果選擇「進行中」,該行中的任務將被移動到「進行中」選項卡中。VBA-將行移動到另一個工作表並重新排列它們在新工作表中的順序

但是,我碰到的問題是在「進行中」工作表內,我有列的額外輸入不在「主跟蹤」工作表。我還想保留「狀態」列作爲每張表格右側的最後一列。實質上,我會將「A:G」列中的數據放入「進行中」選項卡中對應的「A:G」列中,但狀態列(列「H」)將移動到我的3個附加列(在這種情況下列「K」)。有沒有人知道一種方法來做到這一點?

我知道這是一個漫長的問題,但任何幫助將不勝感激。謝謝!

下面是我的代碼來將數據移動到不同的單元:

Option Explicit 

Sub MoveRows() 
    Application.ScreenUpdating = False 

    With Worksheets("Main Tracking") 
     With .Range("H1", .Cells(.Rows.Count, "H").End(xlUp)) 
      FilterAndCopy .Cells, "In Progress" 
      FilterAndCopy .Cells, "Completed" 
      FilterAndCopy .Cells, "Remove" 
     End With 
    End With 

    Application.ScreenUpdating = True 
End Sub 

Sub FilterAndCopy(rng As Range, filterStrng As String) 
    With rng 
     .AutoFilter Field:=1, Criteria1:=filterStrng 
     If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then 
      With .Resize(.Rows.Count).Offset(1).SpecialCells(xlCellTypeVisible).EntireRow 
      .Copy Destination:=Worksheets(filterStrng).Cells(Rows.Count, "A").End(xlUp).Offset(1) 
      .Delete 
      End With 
     End If 
     .Parent.AutoFilterMode = False 
    End With 
End Sub 
+1

你可以在沒有這種併發症的情況下編碼嗎?如果你能做到這一點,併發布代碼,那麼我肯定有人會幫助你最後一部分。 –

+0

添加了代碼。謝謝。 – gluc7

回答

1

這是棘手與就地所以容易粘貼後移至最後一列過濾範圍內的工作...

Sub FilterAndCopy(rng As Range, filterStrng As String) 
    Dim shtDest As Worksheet, rngDest As Range 
    Set shtDest = Worksheets(filterStrng) 
    Set rngDest = shtDest.Cells(Rows.Count, "A").End(xlUp).Offset(1) 
    With rng 
     .AutoFilter Field:=1, Criteria1:=filterStrng 
     If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then 
      With .Resize(.Rows.Count).Offset(1).SpecialCells(xlCellTypeVisible).EntireRow 
      .Copy Destination:=rngDest 
      .Delete 
      End With 
      With shtDest.Range(rngDest, shtDest.Cells(.Rows.Count, 1).End(xlUp)).Offset(0, 7) 
       .Cut Destination:=.Offset(0, 3) 
      End With 
     End If 
     .Parent.AutoFilterMode = False 
    End With 
End Sub 
相關問題