2017-02-04 4 views
-4

を入力されると、私は次のようなデータがある場合には「L」列見出しがステータスであるデータシートを持っていますソートしてトップに行く。自動ソート行データが

私のシートには、すべての完成した行が上に表示されます。

このように自動ソートを手伝ってください。

+2

あなたの質問に「シューティング」を停止してください! – 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

はいデータを入力するときにrow2までの行を追加したいL列が "completed" – user3705748

+0

@JohnRichter:良い明確な質問 - いくつかの点があります! –

+0

@Solar Mikeありがとうございました。 –