ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
46 visibility
موضوع: آفیس توسط:

راجیف به فرمولی نیاز دارد که حروف اول یک سری کلمات را استخراج کند. به عنوان مثال، اگر سلولی حاوی متن "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)
اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 41 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 19 visibility
ارسال شده در 25 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 19 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 47 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 38 visibility

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

315 نفر آنلاین
0 عضو و 315 مهمان در سایت حاضرند
بازدید امروز: 8815
بازدید دیروز: 25180
بازدید کل: 20346166
...