2017-02-04 50 views
-4

我的數據表中「L」列標題狀態,其中下面的數據是存在的:自動排序行作爲數據輸入

ERROR 
PENDING 
DOC PEND 
COMPLETED 

當我輸入「已完成」,那麼該行應整理出來並返回頂部。

我想我的工作表應該顯示頂部的所有完成的行。

請幫我做這種自動排序。

+2

請在您的問題中停止「SHOUTING」! – davejal

+0

將公式應用到另一列,在您輸入完成後將顯示排序後的數據。 – harun24hr

回答

1

將以下內容粘貼到工作表模塊中。

Private Sub Worksheet_Activate() 
myBoolean = False 
End Sub 

Private Sub Worksheet_Change(ByVal Target As Range) 

If Not myBoolean Then 
If Mid(Target.Address, 1, 2) = "$L" Then 
On Error GoTo goodBye 
If UCase(Target.Value) = "COMPLETED" Then 
     Run moveRowToTop(Target.Row) 
    End If 
    myBoolean = False 
End If 
End If 
goodBye: 
On Error GoTo 0 
End Sub 

然後將以下內容粘貼到標準模塊中。

Public myBoolean As Boolean 

Function moveRowToTop(rowToChange As Long) 

    Application.ScreenUpdating = False 
    myBoolean = True 
    Range("A2").Select 
    Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove 
    ActiveSheet.Range("A" & rowToChange + 1 & ":L" & rowToChange + 1).Select 
    Selection.Copy 
    Range("A2").Select 
    ActiveSheet.Paste 
    ActiveSheet.Rows(rowToChange + 1 & ":" & rowToChange + 1).Select 
    Selection.Delete Shift:=xlUp 
    Range("L2").Select 
    Application.ScreenUpdating = True 

End Function 

試試看看它是否做到了你想要的。

+0

是的,我想添加行到行2,因爲我輸入數據n L列「已完成」 – user3705748

+0

@JohnRichter:很好的澄清問題 - 有一些要點! –

+0

非常感謝@Solar Mike。 –