VBA按升序sortingExcel行,但不包括第一行?

我成功地使用了下面的代码,一旦我用数据填充工作表,按照B列的升序对数据进行sorting,第一行是logging标题; B列是REPTNO列。

对于样品数据,我有含有REPTNO B1和含有SR0238-SR0253 B2-B17。 一切都很好,但是当我清理B2-B17并提交给用户进行testing时,发生了一些奇怪的事情。

我的用户input了第2行的logging,其值为JF0007REPTNO 。 当我的下面的代码进程,我的第一和第二行翻转(J来的R之前),导致我的“标题”列在第二行,而不是保持在第一。

我需要改变只sorting第二行,排除第一行? 当我输出到.txt文件时,我的行1需要保留为第1行。

rowCnt在这种情况下的值是2(标题行+input的1个数据行。

EDIT2:

  ' Sort by REPTNO field Dim xlSort As XlSortOrder xlSort = xlAscending If rowCnt > 2 Then With Worksheets("Export") .range("B2:B" & rowCnt).Sort Key1:=.range("B2"), Order1:=xlSort, Header:=xlNo, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End With End If 

当有1个logging进入(第2行)时,它似乎只是交换第一行(标题行)。 当我将第二个数据logginginput到第3行REPTNO = JF0005REPTNO值保持为B1。 但是,它确实出现这个代码是不正常的,因为我认为这是。

我需要基于它们的REPTNO值对所有行(第2行 – 无论有多less行)进行REPTNO 。 可悲的是,我现在的代码只是在REPTNO列或Bsorting数据。

看起来sorting会在没有任何东西需要sorting时出现小问题,因为很明显,当只有一个单元时,它没有任何东西可以sorting,也可能会被忽略。

所以我build议检查一下是否有多行填写,如果没有,则跳过sorting。

 ' Sort by REPTNO field Dim xlSort As XlSortOrder xlSort = xlAscending With Worksheets("Export") If .Range("B3") <> "" .range("B2:B" & rowCnt).Sort Key1:=.range("B2"), Order1:=xlSort, Header:=xlNo, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End if End With