2012-10-12 42 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”,以一列没有空格在您的数据

相关问题