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

تام یک کاربرگ دارد که حاوی مقدار زیادی متن است. او به راهی برای بیرون کشیدن حرف اول هر کلمه در داخل پرانتز از هر متن سلولی نیاز دارد. به عنوان مثال، اگر یک سلول حاوی "یک علف هرز (در طول فصل بهار) وجود دارد که باید ریشه کن شود، تام باید "dts" را از آن متن بیرون بکشد. او مشکوک است که این کار باید با یک ماکرو انجام شود، اما نمی داند از کجا شروع کند.

اگر می خواهید این کار را به صورت دستی انجام دهید، انجام آن چندان دشوار نیست. به سرعت و به طور کلی مراحل را طی می کنم.

فرض کنید متن شما در ستون A است و هر خانه فقط شامل یک مجموعه پرانتز است. در این مورد می توانید موارد زیر را در ستون B قرار دهید:

=IFERROR(LEFT(MID(A1,FIND("(",A1)+1,LEN(A1)),FIND(")",
MID(A1,FIND("(",A1)+1,LEN(A1)))-1),"")

حتی اگر در اینجا فرمول را به دو خط تقسیم کرده ام، به یاد داشته باشید که یک فرمول واحد است و باید به این صورت وارد شود. آن را به تعداد سلول های لازم کپی کنید. آنچه در ستون B به دست می آورید، متنی است که با اولین مجموعه پرانتز (در صورت وجود) در سلول وجود دارد.

سپس، تمام سلول های ستون B را انتخاب کنید، Ctrl+C را فشار دهید و سپس از Paste Special برای چسباندن مقادیر به آن سلول ها استفاده کنید. با این کار از فرمول ها خلاص می شود اما متن پرانتزی استخراج شده باقی می ماند.

حالا سلول های ستون B همچنان باید انتخاب شوند. می خواهید از جادوگر Text to Columns (از زبانه Data روبان) برای تقسیم کلمات به سلول های جداگانه استفاده کنید. این کار با استفاده از یک فاصله به عنوان جداکننده در جادوگر آسان است. پس از انجام این کار، در پایان با یک کلمه در هر ستون که با ستون C شروع می شود، می شوید.

حالا در ستون اول که هیچ کلمه ای در آن وجود ندارد (بگذارید ستون J است) فرمول زیر را وارد کنید:

=LEFT(TRIM(C1),1) & LEFT(TRIM(D1),1) & LEFT(TRIM(E1),1)
& LEFT(TRIM(F1),1) & LEFT(TRIM(G1),1)) & LEFT(TRIM(H1),1)
& LEFT(TRIM(I1),1)

باز هم، این یک فرمول واحد است حتی اگر در اینجا در سه خط نشان داده شده است. این منجر به اولین حروف مورد نظر شما در ستون J می شود.

بدیهی است که اگر هر چند وقت یک بار لازم باشد حروف را بکشید، این فرآیند "قابل انجام" است. اگر لازم است این کار را بیشتر انجام دهید، بهتر است به یک تابع تعریف شده توسط کاربر تکیه کنید تا کار را برای شما انجام دهد. موارد زیر یک مورد ساده است که به خوبی کار می کند:

Function PickInitials(sRaw As String) As String
    Dim sTemp As String
    Dim J As Integer
    Dim Wds() As String

    sTemp = ""
    J = InStr(sRaw, "(")
    If J > 0 Then
        sTemp = Mid(sRaw, J + 1)
        J = InStr(sTemp, ")")
        If J > 0 Then
            sTemp = Left(sTemp, J - 1)
        End If
        Wds = Split(sTemp)

        sTemp = ""
        For J = 0 To UBound(Wds)
            sTemp = sTemp & Left(Trim(Wds(J)),1)
        Next J
    End If
    PickInitials = sTemp
End Function

برای استفاده از تابع، تنها کاری که باید انجام دهید این است که از موارد زیر در یک سلول استفاده کنید:

=PickInitials(A1)

اگر متن پرانتزی در سلول وجود نداشته باشد، اگر فقط یک پرانتز باز وجود داشته باشد، عملکرد به خوبی کار می کند و با فاصله های متعدد بین کلمات پرتاب نمی شود. تابع حروف اولیه را حفظ می کند. اگر می خواهید همه حروف را به صورت کوچک برگرداند، می توانید خط نهایی ماکرو را به این تغییر دهید:

    PickInitials = LCase(sTemp)
اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

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

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

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

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

172 نفر آنلاین
0 عضو و 172 مهمان در سایت حاضرند
بازدید امروز: 10032
بازدید دیروز: 27627
بازدید کل: 15184856
...