راجیف به فرمولی نیاز دارد که حروف اول یک سری کلمات را استخراج کند. به عنوان مثال، اگر سلولی حاوی متن "Rajeev Kumar Pandey" باشد، او مایل است حروف "RKP" را در یک سلول دیگر استخراج کند. تعداد کلمات در یک سری می تواند از سلولی به سلول دیگر متفاوت باشد.
چند راه وجود دارد که می توان به این کار نزدیک شد. برای شروع فرض بر این است که شما نمی خواهید ساختار کاربرگ خود را با اضافه کردن ستون های میانی تغییر دهید. این فرض همچنین مانع از استفاده از ویژگی Text to Columns برای تقسیم رشته اصلی به کلمات جداگانه می شود.
کلید مشکل این است که مطمئن شوید فرمول شما می تواند تعیین کند که در رشته اصلی کجا فاصله وجود دارد. ممکن است فکر کنید که فرمولی مانند زیر این کار را انجام می دهد:
=LEFT(A1,1)&MID(A1,FIND(" ",A1,1)+1,1)&MID(A1,
FIND(" ",A1,FIND(" ",A1,1)+1)+1,1)
این فرمول تا حدی کار می کند. اگر رشته اصلی دارای دو فاصله باشد که سه کلمه را از هم جدا می کند، به خوبی کار می کند. اگر تعداد کلمات کمتری وجود داشته باشد، فرمول یک خطا برمی گرداند. اگر کلمات بیشتری وجود داشته باشد، فقط حروف اول سه کلمه اول را برمی گرداند (هر چیزی بعد از کلمه سوم را نادیده می گیرد).
این بدان معناست که فرمول نه تنها باید فضاها را بررسی کند، بلکه باید خطاها را در صورت عدم وجود فاصله یا اگر فاصله بسیار کمی وجود دارد، بررسی کند. بررسی خطا به این معنی است که فرمول بسیار طولانی تر می شود:
=IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)
&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)
&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1)
&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",
A1)+1)+1)+1)+1,1)),IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)
&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)
&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1)),
IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)
&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)),
IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)),
IF(ISERR(LEFT(A1,1)),"",LEFT(A1,1)),LEFT(A1,1)
&MID(A1,SEARCH(" ",A1)+1,1)),LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)
&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)),
LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)
&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)
&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1)),LEFT(A1,1)
&MID(A1,SEARCH(" ",A1)+1,1)&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)
&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1)
&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)
+1)+1)+1,1))
این فرمول به درستی هر چیزی از 0 تا 5 کلمه را در یک رشته مدیریت می کند. همچنین فرض میکند که رشته با یک فاصله شروع یا ختم نمیشود و حاوی چندین فاصله بین کلمات نیست. اگر می خواهید تعداد بیشتری از کلمات یا سایر عوارض احتمالی (مانند تعداد فاصله بین کلمات) را مدیریت کنید، بهتر است از یک تابع تعریف شده توسط کاربر استفاده کنید.
چندین روش وجود دارد که یک تابع تعریف شده توسط کاربر می تواند کاراکترهای اصلی را از کلمات یک رشته بیرون بکشد. در واقع، من چندین نسخه دریافت کردم که همین کار را انجام می دهند. با این حال، مثال زیر شاید مختصرترین کدی باشد که من با آن برخورد کردم:
Function Initials(Raw As String) As String
Dim Temp As Variant
Dim J As Integer
Application.Volitile
Temp = Split(Trim(Raw))
For J = 0 To UBound(Temp)
Initials = Initials & Left(Temp(J), 1)
Next J
End Function
تابع Split یک رشته را بر اساس مکان هایی که فضاهای درون آن وجود دارد، «پاره می کند». تک تک کلمات در رشته در یک آرایه (در این مورد Temp) قرار میگیرند که در آن میتوانید به کلمات جداگانه دسترسی پیدا کنید. برای استفاده از تابع در کاربرگ خود، به سادگی از چیزی شبیه به زیر استفاده کنید:
=Initials(A1)