Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VBA宏对Excel中的行进行排序。除了每行的最后一个单元格外,它工作正常_Vba_Sorting_Excel - Fatal编程技术网

使用VBA宏对Excel中的行进行排序。除了每行的最后一个单元格外,它工作正常

使用VBA宏对Excel中的行进行排序。除了每行的最后一个单元格外,它工作正常,vba,sorting,excel,Vba,Sorting,Excel,因此,我将Excel工作表按字母顺序按行排序,避免前几列。这是我的密码。不知怎的,它工作得很好,将从20或30个单元格到数百个单元格的行进行排序。每行有不同数量的单元格。但除了最后一个细胞外,它对每个细胞都进行了排序。最后一个单元格是一些随机单元格,位于以“z”开头的单元格之后,但以“P”或“L”开头 这是我的密码: Sub SortRows() Dim lngIndex As Long Dim strArray(9 To 11000) As String Dim intCounter As

因此,我将Excel工作表按字母顺序按行排序,避免前几列。这是我的密码。不知怎的,它工作得很好,将从20或30个单元格到数百个单元格的行进行排序。每行有不同数量的单元格。但除了最后一个细胞外,它对每个细胞都进行了排序。最后一个单元格是一些随机单元格,位于以“z”开头的单元格之后,但以“P”或“L”开头

这是我的密码:

Sub SortRows()

Dim lngIndex As Long
Dim strArray(9 To 11000) As String
Dim intCounter As Integer
Dim sht As Worksheet, rng As Range

Set sht = ActiveWorkbook.Worksheets("Page1")
Set rng = sht.Range("J10:UN10")

intCounter = 1

For lngIndex = LBound(strArray) To UBound(strArray)

    intCounter = intCounter + 1
    strArray(lngIndex) = intCounter

    With sht.Sort
        .SortFields.Clear
        .SortFields.Add Key:=rng, SortOn:=xlSortOnValues, _
           Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange rng
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With

    Set rng = rng.Offset(1, 0)
Next

End Sub

测试了你的代码,效果很好。尝试将代码放入新的工作表中并进行测试。

测试了您的代码,代码运行正常。你说的最后一个牢房是什么意思?每行的最后一个单元格?最后一间牢房?请澄清您所说的“最后一个单元格是在以“z”开头的单元格之后的随机单元格,但以“P”或“L”开头。“一些预期结果与当前结果(截图)将有助于tooLet说我们有5行,每个单元格中有一个字母:AGJKEO FODIUT KGJRUT Ghroit DNELFH我运行排序,它对每行的前4个字符/单元格进行排序,但不包括排序中每行的最后一个单元格,因此结果如下:AEGJKO DFIOUT GJKRUT GIJROT DEFLNHYour排序代码运行良好。您的范围可能不包括最后一个单元格。在选择区域时,将其加粗/在单元格上放置colorindex,以检查该区域是否包含行上的每个单元格。该区域实际上超出了行的末尾。应该提到这一点,抱歉:每行的长度不同,因此有些是20个单元格,有些是300个单元格,但范围至少超出了最长行的末尾10个单元格。请检查您的UBound(strArray)值,我怀疑它指向的是您的长度-1个单元格,而不是最后一个单元格。提示:尝试在代码的最顶端添加Option Explicit,如第1行嘿,Alex,我尝试将整个内容复制并粘贴到新工作簿中,但没有成功。所以我只复制了一行到一个新的工作簿中,其中只有我正在尝试排序的单元格,它仍然给了我同样的问题。我只保存了一行,所以我可以把它作为示例发送给你,这样你就可以看到我在说什么。如何与您共享?好的,看起来问题确实来自您的数据。请将您的文件发送到我的邮箱:Hatfield.alex。2014@gmail.com?