I would like to share with you a small VBA macro which basic functionality is just replace order of two-member string for example :
John Travolta -> Travolta John
Short manual of macro :
1. Select cells you want to replace the order of their content
2. Run macro
Macro code :
Public Function StrRange(ByVal nRow As Single, ByVal nCol As Single) As String Dim sC As String Dim nC, nRest, nDivRes As Integer sC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" nC = Len(sC) nRest = nCol Mod nC nDivRes = (nCol - nRest) / nC If nDivRes > 0 Then StrRange = Mid(sC, nDivRes, 1) StrRange = StrRange & Mid(sC, nRest, 1) & Format(nRow) End Function Sub ChangeString() Dim range As String range = Selection.Address(ReferenceStyle:=xlA1, _ RowAbsolute:=False, ColumnAbsolute:=False) If range = "" Then MsgBox ("The range of cells was not definedcells. Ending the macro") Exit Sub End If Dim Start Dim Last intPos = InStr(1, range, ":") If intPos > 0 Then split_string = Split(range, ":") If UBound(split_string) = 1 Then Start = split_string(0) Last = split_string(1) End If Else Start = range Last = Start End If Dim SheetName SheetName = ActiveSheet.Name If SheetName = "" Then MsgBox ("Cannot read sheet name. Ending the macro") Exit Sub End If Dim CellAddress For Each c In Range("" & CStr(Start) & ":" & "" & CStr(Last)) If c.Value <> "" Then CellContent = Split(c.Value, " ") CellAddress = StrRange(c.Row, c.Column) Dim wb As Workbook Dim ws As Worksheet Dim TxtRng As Range Set wb = ActiveWorkbook Set ws = wb.Sheets(SheetName) Set TxtRng = ws.Range("" & CStr(CellAddress)) TxtRng.Value = CStr(CellContent(1)) & " " & CStr(CellContent(0)) End If Next c End Sub
Reference :
[1] Pastebin GarciaPL VBA Replace string order
VBA Replace string order
2013-07-28T07:55:00+01:00
GarciaPL
VBA|