【问题标题】:VBA sorting Excel rows in ascending order but excluding first row?VBA按升序排序Excel行但不包括第一行?
【发布时间】:2013-06-30 07:40:02
【问题描述】:

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

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

我的用户在第 2 行中输入了一条记录,其值为 JF0007 对应于 REPTNO。当我的以下代码处理时,我的第一行和第二行正在翻转(J 在 R 之前),导致我的“标题”列位于第二行而不是保留在第一行。

我需要更改哪些内容才能仅对第二行进行排序,不包括第一行?当我输出到 .txt 文件时,我的第 1 行需要保留为第 1 行。

这种情况下rowCnt的值为2(标题行+输入的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 条记录(第 2 行)时,它似乎只交换第一行(标题行)。当我在第 3 行REPTNO = JF0005 中输入第二条数据记录时,REPTNO 的值仍为 B1。然而,这段代码似乎并没有像我想象的那样运行。

我需要根据它们的REPTNO 值对所有行(第 2 行 - 不管有多少行)进行排序。可悲的是,我当前的代码仅对REPTNO 列或B 中的数据进行排序。

【问题讨论】:

  • .range("B2:B" & rowCnt).Sort 仅对 B 列进行排序。如果您还有其他需要包含的列,则需要扩展该范围。例如:.range("A2:J" & rowCnt).Sort
  • 您告诉我们您的数据有一个标题行,但在对Sort 的调用中您有Header:=xlNo - 试试Header:=xlYes

标签: vba sorting excel excel-2007


【解决方案1】:

当没有任何东西要排序时,排序看起来有点小故障,因为显然当只有一个单元格时,它没有任何东西要排序,还不如跳过。

所以我只建议先检查是否有不止一行填写,如果没有则跳过排序。

' 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

【讨论】:

  • 我做了类似的事情,检查总行数是否大于 2。但是我确实注意到我的代码仅对 REPTNOB 列进行排序,而不是对整行进行排序.例如,当我有JF0007 后跟JF0005 时,排序时,JF0005 出现在JF0007 之前,但两者只在它们的列中交换位置。 JF0005 的最终结果是使用 JF0007 输入的数据。我需要与已排序的列值关联的所有数据,以将值移动到它的新排序顺序中。
  • 感谢 mattboy 的帮助!蒂姆让我理顺了。需要扩大我的.Sort的范围
猜你喜欢
  • 2015-09-28
  • 2020-01-01
  • 1970-01-01
  • 2022-11-10
  • 2013-02-13
  • 1970-01-01
  • 2020-04-13
  • 2015-01-07
  • 1970-01-01
相关资源
最近更新 更多