2016-10-18 38 views
0

我有這行代碼:排序數組或工作表

sourceRange = wbkSourceFile.Worksheets(1).Range(Cells(1, 1), Cells(lengthOfArray, widthOfArray)) 

它應該從我送入一個宏工作表中的範圍,並把它變成一個數組,所以我可以做一些計算然後將結果數據放在另一張紙上。如果我需要將數據按源數據中的三列進行排序,以便進行計算,最好在將範圍複製到數組之前對錶進行排序(即運行上面的代碼),或填充數組然後對數據進行排序?

簡而言之,排序工作表數據然後加載數組或者之後對數組進行排序會更好嗎?

回答

1

主要的區別是,如果您進行排序,源表將最終排序。如果該子進行排序,則源表可以保持不變。

此外,如果你打算重複這個過程很多,讓子進行排序會爲你節省一些時間,每次數據處理。

+0

但是,有甚至有一種方法來排列在三列的數組?我不認爲快速排序算法可以做到這一點。我唯一剩下的問題是我可以在代碼後面進行工作表排序嗎? – VinnyGuitara

+0

@VinnyGuitara您可以通過任意數量的列對代碼進行排序。 –

0

vba沒有任何內置的排序功能,所以如果你要用代碼來完成它,你必須編寫/查找排序算法。如果你在多列上排序,這將變得非常複雜。因此,我會說你最好的選擇是使用Range.Sort對工作簿中的數據進行排序。