Reggie سلولی دارد که شامل سه یا چند کلمه است. (تعداد کلمات می تواند متفاوت باشد.) او به فرمولی نیاز دارد که به او اجازه دهد اولین کلمه سلول یا آخرین کلمه سلول را استخراج کند. برای مثال، اگر سلول حاوی عبارت "Reggie was here in 2022" باشد، به فرمولی برای استخراج "Reggie" و یکی برای استخراج "2022" نیاز دارد.
با استفاده از فرمول ها می توانید هر دو کلمه را استخراج کنید. استخراج کلمه اول نسبتاً ساده است. تنها کاری که باید انجام دهید این است که محل اولین فاصله را در عبارت پیدا کنید، سپس هر آنچه را که در سمت چپ آن است استخراج کنید. اگر فرض کنیم که عبارت در A1 است، میتوان از فرمول استفاده کرد:
=LEFT(A1,FIND(" ",A1)-1)
برای استخراج کلمه آخر، به یک فرمول کمی متفاوت نیاز دارید:
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1)," ",REPT(" ",255)),255))
این فرمول فاصله ها را به رشته های 255 خالی تبدیل می کند. سپس 255 کاراکتر آخر را پیدا می کند و کاراکترها را به سمت چپ برش می دهد و آخرین کلمه را باقی می گذارد.
همچنین، اگر ترجیح می دهید، می توانید توابع تعریف شده توسط کاربر را ایجاد کنید تا کلمات مورد نظر خود را به دست آورید. گرفتن کلمه اول آسان است:
Function FirstWord(c As String)
Dim arr
arr = Split(Trim(c), " ")
FirstWord = arr(LBound(arr))
End Function
این تابع از تابع Split برای جدا کردن هر چیزی که در سلول مشخص شده است، با استفاده از پارامتر دوم (" ") به عنوان جداکننده استفاده می کند. سپس هر عنصر در آرایه (arr) شامل بخشی از رشته اصلی است. در این مورد چیزی که برگردانده می شود اولین عنصر (که توسط LBound مشخص شده است) آرایه است - اولین کلمه.
از آنجایی که کلمات از عبارت در یک آرایه قرار می گیرند، می توانید فقط از یک تغییر جزئی در تابع برای برگرداندن آخرین کلمه استفاده کنید:
Function LastWord(c As String)
Dim arr
arr = Split(Trim(c), " ")
LastWord = arr(UBound(arr))
End Function
توجه داشته باشید که اساساً تنها تغییر واقعی در تابع استفاده از UBound به جای LBound است. تابع UBound آخرین عنصر آرایه را مشخص می کند. شما می توانید از هر دو این توابع در یک کاربرگ به این صورت استفاده کنید:
=FirstWord(A1)
=LastWord(A1)
اگر ترجیح میدهید، میتوانید از تابع Split دور بزنید و در عوض، از برخی دیگر از توابع مرتبط با رشته استفاده کنید:
Function GetFirst(c As String)
GetFirst = Left(c, InStr(c, " ") - 1)
End Function
Function GetLast(c As String)
GetFirst = Mid(c, InstrRev(c, " ") + 1)
End Function