در محیط اداری کار با فایل های اکسل ایجاد شده توسط افراد دیگر غیرعادی نیست. برخی از این فایل ها می توانند بسیار متفاوت از فایل هایی باشند که ممکن است ایجاد کنید. به عنوان مثال، شما ممکن است فایلی را به ارث ببرید که در آن ستون اول شامل نام افراد در خط اول و سپس نام خانوادگی آنها در خط دوم است. (کاربر Alt+Enter را فشار داده تا نام اول را از نام دوم در همان سلول جدا کند.) اگر بخواهید ردیف های کاربرگ را بر اساس نام خانوادگی شخص مرتب کنید چه؟
شاید بهترین راه برای تکمیل چنین کاری این باشد که یک ستون جدید در کاربرگ درج کنید - ستون B. (این ستون می تواند پنهان باشد تا هنگام کار معمولی با کاربرگ یا هنگام چاپ آن ظاهر نشود.) فرمول زیر باید سپس در هر سلول از ستون B قرار می گیرد:
=RIGHT(A2,LEN(A2)-FIND(CHAR(10),A2))
بدیهی است که مراجع سلولی زمانی که در ستون B قرار می گیرند تغییر خواهند کرد. در این فرمول قسمت FIND موقعیت نویسه Alt+Enter را تعیین می کند (کد کاراکتر این کاراکتر 10 است). تابع RIGHT کاراکترهای موجود در سلول را برمی گرداند که از کاراکتر بعد از کاراکتر Alt+Enter شروع می شوند . این راه حل منجر به ستون B می شود که حاوی اطلاعات خط دوم ستون اول است. سپس می توانید به راحتی بر اساس اطلاعات ستون B مرتب سازی کنید.
در این راه حل یک فرض وجود دارد - اینکه در هر خانه از ستون A فقط دو خط وجود دارد. اگر تعداد آنها بیشتر یا کمتر باشد، حل مشکل تر می شود. اگر چنین است، بهترین (و ساده ترین) راه حل ممکن است فرمت مجدد کاربرگ باشد به طوری که کلید مرتب سازی به تنهایی در یک ستون باشد. اگر این امکان پذیر نباشد (به هر دلیلی)، می توان از تابع VBA تعریف شده توسط کاربر زیر استفاده کرد:
Function SecLine(x) As String
Dim B1 As Integer
Dim B2 As Integer
B1 = InStr(x, Chr(10))
B2 = InStr(B1 + 1, x, Chr(10))
If (B1 + B2) > 0 Then
If B2 > 0 Then
SecLine = Mid(x, B1 + 1, B2 — B1 - 1)
Else
SecLine = Mid(x, B1 + 1)
End If
End If
End Function
برای استفاده از این روال، به سادگی موارد زیر را در سلول های ستون B قرار دهید:
=SecLine(A2)
صرف نظر از اینکه چند خط در سلول A2 وجود دارد (در این مثال)، تابع یک رشته نشان دهنده مقدار خط دوم را برمی گرداند.