幾年前,通過瀏覽不同的論壇,我創建了一個按長度,最長到最短(按單元格中字符數)排序列的宏。我正在將一個特殊的轉置粘貼到一張新的表格中,以將行列爲列。然後,我將這個VBS代碼粘貼到宏中100次,這樣它可以在每次運行時執行100個列。
Excel宏按長度對行中的單元格進行排序
今天我試圖運行這個宏,但它並沒有在所有現在的工作:(
這是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。
預先感謝
更新,按照請求,screnshot:
你說你從1張表中取數據並粘貼到另一張?您沒有專門參考任何表格,因此您是否可能從錯誤的地方獲取數據? – Sam
我不太可能使用錯誤的工作表,因爲文件中只有一個工作表。但無論如何,我使用的方法是超級醜陋的,我只是討厭使用它,所以無論如何,它可能是一個VBS的好時機,它會很容易和正確 – CamSpy
你可以發佈你的源數據的子集和另一個屏幕打印在排序過程後使用您所需的格式? – Sam