几年前,通过浏览不同的论坛,我为自己制作了一个宏,它按长度对列进行排序,从最长到最短(按单元格中的字符数)。我正在将特殊的转置粘贴到新工作表中,以将行列为列。然后我将 VBS 代码粘贴到宏中 100 次,这样它每次运行可以做 100 列。
今天我尝试运行这个宏,但它现在根本不起作用:(
这是我使用的 VBS 代码(没有 100 次粘贴):
Sub SortByLength2()
Dim lLoop As Long
Dim lLoop2 As Long
Dim str1 As String
Dim str2 As String
Dim MyArray
Dim lLastRow As Long
lLastRow = Range("A65536").End(xlUp).Row
MyArray = Range(Cells(2, 1), Cells(lLastRow, 1))
'Sort array
For lLoop = 1 To UBound(MyArray)
For lLoop2 = lLoop To UBound(MyArray)
If Len(MyArray(lLoop2, 1)) > Len(MyArray(lLoop, 1)) Then
str1 = MyArray(lLoop, 1)
str2 = MyArray(lLoop2, 1)
MyArray(lLoop, 1) = str2
MyArray(lLoop2, 1) = str1
End If
Next lLoop2
Next lLoop
'Output sorted array
Range("JO1:JO" & UBound(MyArray) + 1) = (MyArray)
Range("A:A").Delete Shift:=xlToLeft
End Sub
应该有更好的解决方案来按行排序,无需将行转换为列,也无需粘贴相同的 VBS 代码 100 次...
任何人都可以帮助我使用可以简单地按每个单元格中的字符长度对行中的单元格进行排序的宏,并且具有无限的行和列吗?最长的单元格应该是第一个,最短的 - 最后一个
就我而言,我有 745 行和从 A 到 BA 的列范围。
提前致谢
根据要求更新截图: