2012-10-12 70 views
0
Public r1 As Range, rOb As Range, rDat As Range 
Set r1 = Range(db.Range("B3"), db.Range("I" & Rows.Count).End(xlUp)) ' about 1500 rows 
Set rOb = Range(db.Range("B3"), db.Range("B" & Rows.Count).End(xlUp)) 
Set rDat = Range(db.Range("G3"), db.Range("G" & Rows.Count).End(xlUp)) 

r1.Sort Key1:=rOb 
'Or 
r1.Sort Key1:=rDat 

只有約900行被排序。其餘的都不是。
有時,這種排序根本不起作用。
也試過:如何對超過1500行的範圍進行排序?

r1.Sort Key1:=Range(db.Range("G3"), db.Range("G" & Rows.Count).End(xlUp)) 

同樣的結果

+2

做你的1500個行在列數據試試我一路下?由於您的排序基於列I的最後一個單元格,可能是缺少數據。試試'msgbox r1.address'來確保你在整個範圍內進行排序。 – nutsch

+0

@nutsch,ThankYou。第一列幾乎是空的。我明白了這一點。也許你應該寫評論作爲答案,這樣纔有可能投票並接受它。 – Alegro

回答

4

請確保您的範圍挑選的最後一行。如果列I在底部有空白單元格,則範圍不完整。

使用

Set r1 = db.Range("B3").currentregion 

r1 = Range(db.Range("B3"), db.Range("I" & db.cells(Rows.Count,"B").End(xlUp).row) 

,您可以設置「B」,以一列沒有空格在您的數據

相關問題