2013-10-15 123 views
0

我試圖維護一個文檔列表(見下文)只有他們的最新版本。基於最新日期刪除excel行

但是,我的文件顯示一些doc#s有多個轉。我需要能夠爲每個文檔一次性刪除舊版本的行。一種選擇是以某種方式使用每個doc#的發佈日期進行比較。只有具有最新發布日期的行保留。

任何人都可以告訴我如何做到這一點?有沒有比我上面的選擇更好的方法?

仍然開始w/excel vba,但可以快速理解。我的原始列表大約有4000行,因此解決這個問題將會非常有幫助。 Thx ... Jeff

Doc Rev Issue Date 
A  6  5-Oct-2013 
A  5  1-Sep-2013  (Delete) 
A  4  1-Jun-2013  (Delete) 
B  1  3-Oct-2013 
B  0  4-Jul-2013  (Delete) 
C  3  1-Oct-2013 
C  2  9-Sep-2013  (Delete) 
C  1  8-Aug-2013  (Delete) 
C  0  6-Jun-2013  (Delete) 
+0

或者到VBA你可以用本地Excel(使用公式,自動篩選做到這一點,刪除)... –

+0

嗨,彼得。你能否詳細說明一下。 Thx ... Jeff – user2883561

+0

請參閱下面的答案。 –

回答

0

製作保存好的練習冊第一冊!

假設你的標題是行1和第2行數據開始和文件是A列...

在新列第2行添加一個公式是這樣

=IF(A2=A1,"(Delete)","") 

不要將該公式向下複製。要刪除的行將具有「(刪除)」的工作。如果數量不多,只需手動刪除。如果更多,請繼續閱讀。

下一部分很有趣,請複製該列並將SPECIAL作爲VALUES粘貼到另一個新列中。按此排序並刪除所有選項作爲範圍和刪除。

+1

如果列表按照最新版本的文檔進行排序,這隻會起作用!而不是價值複製和排序,最好只是應用一個自動過濾器,並刪除過濾後的一切... –

+0

謝謝,@PeterAlbert。隨着提供的信息,我去了用戶有的樣品,它似乎按照他希望刪除的順序排序。 – asantaballa

+0

我嘗試了Peter的這封信,包括用最新的頂級版排序。當他們的發佈日期實際上是最近的時候,我發現一些行被標記爲「刪除」。我會繼續檢查我的步驟,但希望有人可以幫助。 – user2883561

1

根據您的情況,您可以在不使用VBA的情況下執行此操作。假設你的數據在細胞B2:D10,這種方法應該工作:

  1. 在E,放置公式=MAX($B$2:$B$10*($A$2:$A$10=A2))<>B2 - - 與按Ctrl進入它輸入,並將其複製到D10
  2. 現在應用自動篩選和過濾柱d爲TRUE
  3. 刪除所有行和刪除自動篩選
+0

好的非VBA方式(+1)。 –

0

我像Peter的解決方案一樣是一種非VBA方式。如果你想使用VBA,那麼下面的工作。

你開始通過文件和日期排序,然後遍歷列表,並刪除所有,但最近的:

Sub GetLatestVersion() 
    Dim data As Range, i As Integer 

    Set data = Range("A1:C9") //Change appropriately 
    data.Sort Key1:=Range("A1"), Order1:=xlAscending, Key2:=Range("C1"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 

    For i = data.Rows.Count To 2 Step -1 
     If Range("A" & i - 1) = Range("A" & i) Then 
      Range("A" & i - 1).EntireRow.Delete Shift:=xlUp 
     End If 
    Next i 
End Sub