2011-09-08 82 views
0

嗯,這不是第一次在這裏問這些問題,但我無法完成。 我必須刪除列中的重複行。從刪除重複的行,每行的長度爲40列。該怎麼辦?

range("A1:A30000") have to delete all the duplicate rows in these columns 

我已經使用了以前的解決方案,從我以前的問題給程序員提供了stackoverflow。他們的工作令人驚歎,但不是這些時間。最後,我有15列的每行,但這些時間每行40列,沒有腳本工作。電腦它只是越來越吊,有時需要2小時這不是我想要的。我使用了Issun,Jon,Reafidy和Doc Brown建議的字典方法,即使他們不工作。我不知道爲什麼。

所以我想使用高級過濾器,但我無法刪除vba中的重複行。我沒有在谷歌上找到它,我看到手動的盒子,但不是vba腳本,即使我發現它不能正常工作。

​​

在應用該行後我必須做什麼。現在刪除重複的行。我記得它喜歡複製粘貼,但我不記得代碼很好,有點像

xltypeinvisble:delete 

我不記得代碼好。我記得我現在閱讀谷歌無法找到它。

任何人都可以告訴我使用高級過濾器方法刪除重複的條目嗎?你認爲,每行有40列,這使得我的腳本需要很長時間,有時會掛斷嗎?原因可能是什麼?

任何其他更快的方法是讚賞(可能字典之一)。我相信人們說字典的方法,但我不知道它不能正常工作可能是代碼錯誤或不確定的原因,只是越來越掛斷。所以無法知道爲什麼,以及它對我測試的小數據的正常工作。但沒有更大的一個。

任何幫助,非常感謝!

回答

0

我不熟悉您要查找的單行命令,以便一次刪除所有不可見的行,但是您可以遍歷範圍中的行並手動刪除它們。

如果這仍然對您來說太慢,您可能需要考慮添加VBA命令以在宏運行時關閉屏幕更新和重新計算。

Sub DeleteDUpes() 
    Dim ThisRange As Range 
    Dim NewRange As Range 

    Set ThisRange = Range("A1:A30000") 
    ThisRange.AdvancedFilter Action:=xlFilterInPlace, Unique:=True 
    ' Loop through each row from bottom up, deleting rows hidden by filter 
    For thisrow = ThisRange.Rows.Count To 1 Step -1 
     Set NewRange = ThisRange.Resize(1).Offset(thisrow - 1, 0) 
     If NewRange.EntireRow.Hidden Then 
      r.EntireRow.Delete 
     End If 
    Next 
End Sub