یکی از خوانندگان WordTips از نحوه استفاده از Word برای مرتبسازی برخی از دادههایی که در طی سالها جمعآوری شده بودند، پرسید. داده ها برای یک شرکت حقوقی است، بنابراین نام ها می توانند پسوندهایی مانند موارد زیر داشته باشند:
John Davis, Esq.
سوال این بود که چگونه می توان این را به درستی مرتب کرد، همانطور که خواننده می توانست تحت WordPerfect انجام دهد. البته بهترین راه حل درازمدت تبدیل داده ها به فرمت پایگاه داده مانند Access یا حتی به صفحه گسترده مانند اکسل است. با این حال، در کوتاهمدت، ماکرو زیر اجازه میدهد فهرست به درستی مرتب شود:
Sub CustomSort()
Set myrange = Selection.Range
For Each p In myrange.Paragraphs
p.Range.Select
If InStr(1, p, ",") > 0 Then
CharCount = InStr(1, p, ",") - 1
Selection.StartOf
Selection.MoveRight Unit:=wdCharacter, _
Count:=CharCount
Else
Selection.EndOf
Selection.MoveLeft Unit:=wdCharacter, _
Count:=1
End If
Selection.MoveLeft Unit:=wdWord, Count:=1
Selection.MoveLeft Unit:=wdCharacter, _
Count:=1, Extend:=wdExtend
Selection.TypeText Text:=vbTab
Next p
myrange.Select
Selection.Sort ExcludeHeader:=False, _
FieldNumber:="Field 2", _
SortFieldType:=wdSortFieldAlphanumeric, _
SortOrder:=wdSortOrderAscending, _
FieldNumber2:="Field 1", _
SortFieldType2:=wdSortFieldAlphanumeric, _
SortOrder2:=wdSortOrderAscending, _
FieldNumber3:="", _
SortFieldType3:=wdSortFieldAlphanumeric, _
SortOrder3:=wdSortOrderAscending, _
Separator:=wdSortSeparateByTabs, _
SortColumn:=False, _
CaseSensitive:=False, _
LanguageID:=wdLanguageNone
End Sub
برای استفاده از این ماکرو، کافی است پاراگراف هایی را که می خواهید مرتب کنید انتخاب کنید و سپس ماکرو را اجرا کنید. در هر پاراگراف یک کاما را جستجو می کند و سپس کلمه را درست قبل از کاما پیدا می کند. فاصله (یا برگه) درست قبل از آن کلمه را با یک تب جایگزین می کند. بنابراین، هر پاراگراف به دو قسمت تقسیم می شود: نام اول و احتمالاً میانی فیلد اول است، در حالی که نام خانوادگی و پسوند احتمالی فیلد دوم است. سپس انتخاب بر اساس فیلد دوم مرتب می شود.