جستجو

ترفندهای کامپیوتری

حضرت علی (ع): «زَکوةُ العِلمِ نَشرُهُ؛ زکات علم نشر آن است».
وبلاگ "ترفندها" (سایت پی‌سی‌ترفند) برای عمل به این حدیث شریف و با هدف ارتقاء دانش و مهارت‌های مرتبط با رایانه در ۳۰ مهرماه ۱۳۹۱ ایجاد شده است. به امید آنکه مفید واقع شود.
ربات پی‌سی‌ترفند در تلگرام:
telegram.me/pctarfand_bot

خلاصه آمار

تبليغات

پربحث ترين ها

۰

جدا کردن متن فارسی (یا عربی) از متن انگلیسی در اکسل

اکسل ماکرونویسی

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

  • حالت ۱)

توضیحات را با یک مثال شروع می‌کنم که سوال یکی از کاربران انجمن آفیس فرساران است:

در ستون A دادهایی داریم که هم متن فارسی و هم متن لاتین می‌باشد و هیچگونه نظمی خاصی ندارد که بتوان  آن‌ها را با mid جدا کرد اگر ممکن است راهنمایی کنید؟

Yield Tax   مالیات بازده
Yield Variance   اختلاف بازده- تغییر پذیری بازده
Yo -Yo-Stock   سهام متزلزل- سهام بی‌ثبات
Zero Base Budgeting   بودجه بندی بر مبنای صفر -  روش بودجه ریزی از صفر
Zero Defect   بدون نقص
Zip Code   کد پستی
Zone   ناحیه
Zone Free   منطقه آزاد
Zone Freight Rate   نرخ کرایه منطقه‌ای
Zone of Acceptance   حیطه پذیرش
Zone Pricing   قیمت بندی ناحیه‌ای
Zoning   منطقه بندی- ناحیه بندی

در مثال فوق اگر دقت کنید در هر سلول بین متون فارسی و لاتین دقیقا 3 فاصله وجود دارد و همچنین در تمام موارد در سمت راست متن لاتین و در سمت چپ متن فارسی قرار دارد یعنی بصورت ترکیبی (مثلا aبcد) نیامده است. پاسخ این سوال در اینجا یعنی انجمن آفیس فرساران داده شده است که با استفاده از تجزیه و ترکیب متن در اکسل انجام می‌شود.


  • حالت ۲)

در حالتی مثل شکل زیر که متون بصورت ترکیبی می‌باشد و فاصله بین متون انگلیسی و فارسی در سلول‌ها متفاوت است، دیگر نمی‌توان از راه حل حالت ۱ (بالا) استفاده کرد. برای این حالت باید از کد ماکرو در اکسل استفاده نمود.

ابتدا سلول‌هایی که می‌خواهید متون انگلیسی و فارسی را از هم جدا کنید انتخاب نمایید (مثل شکل بالا)، سپس کلیدهای Alt + F11 را فشار دهید یا از تب Developer قسمت code گزینه Visual Basic را انتخاب کنید. پنجره Microsoft Visual Basic ظاهر می‌شود. در این پنجره از تب Insert گزینه Module را انتخاب نمائید.

در پنجره جدید باز شده کدهای زیر را کپی کنید.

Sub ExtractArabicFromEng()
'pctarfand.ir & tarfandha.blog.ir'
Dim x%, el As Range, EngStr$, ArabStr$, r As Range: Set r = Selection
If r.Column <> 1 Then MsgBox "Select only one column.": Exit Sub
Const CharList$ = "[A-Za-z0-9]"
Const Znaki$ = "[ ]" 'or another signs'
Application.ScreenUpdating = False
For Each el In r
    EngStr = "": ArabStr = ""
    For x = Len(el.Text) To 1 Step -1
        If Mid(el.Text, x, 1) Like CharList Then
            EngStr = Mid(el.Text, x, 1) & EngStr
        ElseIf Mid(el.Text, x, 1) Like Znaki Then
            EngStr = Mid(el.Text, x, 1) & EngStr
            ArabStr = Mid(el.Text, x, 1) & ArabStr
        Else
            ArabStr = Mid(el.Text, x, 1) & ArabStr
        End If
    Next x
    el.Offset(, 1).Value = Trim(ArabStr)
    el.Offset(, 2).Value = Trim(EngStr)
Next el
Application.ScreenUpdating = True
End Sub

در پایان دکمه  یا کلید F5 را فشار دهید تا عملیات جداسازی انجام شود.

روش فوق در همه حالات قابل استفاده است.

منبع: social.technet.microsoft.com

از روش ساخت تابع که در اینجا اشاره شده است نیز می‌توان استفاده کرد اما محدودیت استفاده دارد.

 

عضویت در خبرنامه:

نظرات (۰)
هیچ نظری هنوز ثبت نشده است

ارسال نظر

قبل از ارسال نظر به نکات زیر توجه کنید:

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

۲- قبل از مطرح کردن سوالتان، مطلب فوق را با دقت مطالعه کنید. اگر پاسخ سوالتان را پیدا نکردید در سایت جستجو کنید، ممکن است در مطلب دیگر پاسخ سوالتان را پیدا کنید.

۳- تنها به سوالاتی پاسخ داده می‌شود که از نحوه حل آن‌ها اطلاع داشته باشم.

۴- نظراتی با مضمون زیر، صرفا تایید و نمایش داده می‌شود و به آن‌ها پاسخی داده نمی‌شود.

الف) در مورد پاسخ سوال شما اطلاعی نداشته باشم،

ب) پاسخ سوال شما در مطلب فوق وجود داشته باشد.

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی
X بستن