是否可以使用VBA从左到右对整个工作表进行sorting?

我有一个大工作表,其中包含以下信息:

1: BTBJS 2: A 3: TSSPE 4: EORPW 

这些数字都属于A列。我希望在VBA脚本中包含一行代码,以便将整个工作表按字母顺序排列所有字母,同时将这些数字保持在同一位置:

 1: BBJST 2: A 3: EPSST 4: EOPRW 

当然,这可以一次一行地完成,但是可以安排一个完整的工作表吗? 我知道从左到右按字母顺序排列的每一行都会将数字保持在相同的位置,所以不需要考虑这一点。 有没有一个简单的解决scheme,我错过了?

希望下面的代码将满足

 Sub Sort() lastrow = Range("A" & Rows.Count).End(xlUp).Row For i = 1 To lastrow lastcolumn = Cells(i, Columns.Count).End(xlToLeft).Column ReDim sortalphabet(lastcolumn - 2) As String For j = 2 To lastcolumn sortalphabet(j - 2) = Cells(i, j) Next j For ii = LBound(sortalphabet) To UBound(sortalphabet) - 1 For j = LBound(sortalphabet) To UBound(sortalphabet) - 1 If ii < UBound(sortalphabet) Then Condition1 = sortalphabet(j) > sortalphabet(j + 1) If Condition1 Then t = sortalphabet(j) sortalphabet(j) = sortalphabet(j + 1) sortalphabet(j + 1) = t End If End If Next j Next ii For j = 2 To lastcolumn Cells(i, j) = sortalphabet(j - 2) Next j Next i End Sub 

感谢http://www.thespreadsheetguru.com ,了解我修改的字母sorting和brettdj: VBA排除特殊字符和数字,但保留string的空格

 Sub sortcells(StartRange As Range) Dim strArrCell() As String Dim intTemp As Integer Do While rngStart.Value <> "" intTemp = Split(StartRange.Value, ":")(0) strArrCell = Split(StripNonAlpha(rngStart.Value), " ") strArrCell = Alphabetically_SortArray(strArrCell) StartRange.Value = intTemp & ": " & Join$(strArrCell, " ") Set StartRange = StartRange.Offset(1, 0) Loop End Sub Function Alphabetically_SortArray(myArray() As String) As String() Dim x As Long, y As Long Dim TempTxt1 As String Dim TempTxt2 As String For x = LBound(myArray) To UBound(myArray) For y = x To UBound(myArray) If UCase(myArray(y)) < UCase(myArray(x)) Then TempTxt1 = myArray(x) TempTxt2 = myArray(y) myArray(x) = TempTxt2 myArray(y) = TempTxt1 End If Next y Next x Alphabetically_SortArray = myArray End Function Function StripNonAlpha(TextToReplace As String) As String Dim ObjRegex As Object Set ObjRegex = CreateObject("vbscript.regexp") With ObjRegex .Global = True .Pattern = "[^a-zA-Z\s]+" StripNonAlpha = .Replace(Replace(TextToReplace, "-", Chr(32)), vbNullString) End With End Function