2016-02-26 141 views
0

您好我想作一個表的列等於另一個的不使用複製和粘貼認爲這將運行得更快。然後,我試圖刪除新工作表的列中的重複值。我的代碼有效,但由於數據太多,所以速度很慢!將值從一張紙複製到另一張並刪除重複項?

Dim ws As Worksheet 
Set ws = ThisWorkbook.Sheets("COMP29") 
ws.Columns(15).Copy Destination:=Sheets("TEMPLIST1").Columns(1) 

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
'Remove Duplicates, Sort, and Name Temp Worksheet 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 

Dim LastRow As Long 

'Name 
ActiveSheet.Name = "TEMPLIST1" 

'Remove Duplicates 
With ActiveSheet 
    LastRow = .Range("A" & .Rows.Count).End(xlUp).Row 
    .Range("A1:B" & LastRow).RemoveDuplicates Columns:=Array(1, 1), Header:=xlYes 
End With 

有沒有更高效的方法來實現這個目標?通過獨特的列表,我在DropButtonClick上填充了一個ComboBox。謝謝!

回答

0

這是要執行的操作的最快方式,它應該是FAST - 我只能認爲你已經在你的列表中得到的公式(或引用您的列表),它們減緩下來。請嘗試關閉自動計算,看看是否能改善這種情況(不要忘記你的刪除重複後,再將其打開!)

+0

我有計算手冊。我會繼續審查。我不確定爲什麼它很慢。大概需要5-15秒,我會想。我想它會延遲1-2秒。 – Chris2015

+0

唯一的其他建議我能想到的是片材( 「templist」)範圍內。( 「A1:B」 &LASTROW)。價值=片材( 「comp29」)範圍內。( 「A1:B」 &LASTROW)。價值。這是不值得的算法要經過和重複檢查,並複製每一個新的項目,如微軟的內置函數總是會更快。 – ninjaRoche

+0

謝謝。我使用.value = .value並花費了一些東西! – Chris2015

相關問題