روشهای برتر برای یافتن زیررشته در لیبره آفیس کالک
اول از همه، هیچ تابع زیررشتهای در برنامه لیبره آفیس کالک وجود ندارد.
این بدان معناست که هنگام انجام کار خود باید از توابع زیر (یا ترکیبی از آنها) استفاده کنید.
1 |
MID, LEFT, RIGHT, FIND, LEN, SUBSTITUTE, REPT, TRIM |
در این مقاله چند نمونه با استفاده از توابع بالا را توضیح خواهم داد. این به شما کمک میکند بفهمید که میتوانید زیررشته را در مقادیر سلول لیبره آفیس کالک پیدا کنید.
استفاده از تابع MID
در مثال زیر سه جمله وجود دارد. هر کدام دارای یک عدد است که داخل پرانتز قرار گرفته است. چگونه میتوان فقط عدد را استخراج کرد و در سلول دیگری قرار داد؟
از تابع MID در این مثال استفاده خواهیم کرد. در اینجا سینتکس چنین است:
1 |
MID(search_text, start_number, length) |
- search_text: مقدار سلولی که میخواهید در آن جستجو کنید. این میتواند یک مقدار یا مرجع سلول باشد.
- start_number: از کدام تعداد کاراکتر، زیررشته برگردانده خواهد شد. این باید یک عدد کامل باشد.
- length: اندازه زیررشته که باید برگردانده شود. این باید یک عدد کامل باشد.
برای این کار از فرمول زیر استفاده میشود.
1 |
=MID(A1,FIND("(",A1)+1,2) |
توضیح: جستجو روی مقدار A1 انجام میشود و سپس موقعیت “(” – پرانتز اول را پیدا میکند. این موقعیت شروع +1 زیررشته خواهد بود. و طولی که باید برگردانده شود 2 است.
این نتیجه در این تصویر است.
اما، در ردیف 3 مشکلی وجود دارد که پرانتز بسته شدن را برمیگرداند. زیرا ما طول را دو عرضه کردهایم و تنها یک عدد وجود دارد.
چگونه این را رفع کنیم؟ بیایید فرمول را به صورت زیر اصلاح کنیم.
1 |
=MID(A1,FIND("(",A1)+1,FIND(")",A1)-FIND("(",A1)-1) |
توضیح: دو قسمت اول فرمول صحیح است. فرمول طول در اینجا متفاوت است. من موقعیت بستن پرانتز “)” را پیدا میکنم و سپس با کاهش یک عدد آن را از موقعیت “(” کم میکنم. در نهایت نتیجه مطلوب را به ما میدهد.
بیایید یک مثال پیچیده را ببینیم.
استفاده از توابع SUBSTITUTE و MID با هم
در اینجا نمونه ای از دادههایی است که داریم. این شامل ترکیبی از کلمات با آدرس ایمیل بین آنها است. چگونه میتوانید فقط آدرس ایمیل را استخراج کنید؟ توجه داشته باشید که طول متن و آدرس ایمیل متفاوت است. از این رو نمیتوانید از متن برای ستونها استفاده کنید.
به عنوان اولین قدم، بخش آدرس ایمیل را با اضافه کردن فاصلههای زیاد، مانند 50 فاصله، جدا میکنیم. برای انجام این کار، از تابع SUBSTITUTE استفاده میکنیم تا با استفاده از تابع REPT، یک فاصله ” ” را با 50 فاصله جایگزین کنیم.
1 |
=SUBSTITUTE(A1," ", REPT(" ",50)) |
و اگر این را برای اولین داده سلولی، یعنی A1 اعمال کنیم، نتیجه این است. همانطور که میبینید، آدرس ایمیل اکنون از کلمات جدا شده است. هر فضا با 50 فضا جایگزین میشود.
گام بعدی حذف همه کلمات و نگه داشتن فقط آدرس ایمیل با فاصله است. از آنجایی که 50 فاصله اضافه کردهایم (از قبل میدانیم که 50 فاصله قبل و بعد از آدرسهای ایمیل وجود دارد)، وقت آن است که “@” را با استفاده از تابع MID که در بالا توضیح داده شد، پیدا کنیم.
1 |
=MID(A2,FIND("@",A2)-25,75) |
همانطور که میبینید آدرس ایمیل از کلمات جدا شده است. اما فضاهایی داشت. تنها کاری که باید انجام دهید این است که از عملکرد TRIM برای حذف فضاها استفاده کنید.
1 |
=TRIM(A3) |
با ترکیب تمام مراحل، فرمول نهایی به این میشود.
1 |
=TRIM(MID(SUBSTITUTE(A1," ", REPT(" ",50)),FIND("@",SUBSTITUTE(A1," ", REPT(" ",50)))-25,75)) |
و در اینجا نتیجه نهایی است. ممکن است پیچیده به نظر برسد، اما اینطور نیست – اگر به آن فکر کنید.
درباره محسن بهارلوئی
رسالت من و تیم حاضر در رسانه «محتوای باز» که از اقصی نقاط ایران در حال تالیف مقالات آموزشی هستند؛ آموزش کلیه نرمافزارهای آزاد/متنباز و ابزارهای گنو/لینوکسی برای ایرانیان است. امید است که هر چه سریعتر و با کیفیتتر محقق شود.
نوشتههای بیشتر از محسن بهارلوئیاین سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش میشوند.
دیدگاهتان را بنویسید