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