又快了一点,编写了一个改写地址的函数 Sub aa() Dim Rng As Range Dim ArrTemp() As String Dim RowN&, ColN& Application.ScreenUpdating = False t = Timer For Each Rng In Selection.AreaS RowN = Rng.Rows.Count ColN = Rng.Columns.Count ReDim ArrTemp(1 To RowN, 1 To ColN) As String With Rng For i = 1 To RowN ArrTemp(i, 1) = .Item(i, 1).Address For j = 2 To ColN ArrTemp(i, j) = MyAdd(ArrTemp(i, j - 1)) Next j Next i .Value = ArrTemp End With Next Rng MsgBox Timer - t Application.ScreenUpdating = True End Sub Function MyAdd(Add) Dim Arr() As String Dim strC$ Dim Temp$ Dim BlnJW As Boolean Arr = Split(Add, "$") strC$ = Arr(1) BlnJW = True For i = Len(strC$) To 1 Step -1 Temp$ = Mid$(strC$, i, 1) If BlnJW Then If Temp$ = "Z" Then Mid$(strC$, i, 1) = "A" BlnJW = True Else Mid$(strC$, i, 1) = Chr(Asc(Temp$) + 1) BlnJW = False End If End If Next i If BlnJW Then strC$ = "A" & strC$ MyAdd = "$" & strC & "$" & Arr(2) End Function |