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


rez227

ارسال های توصیه شده

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

 

  • حالت ۱)

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

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

در ستون 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   منطقه بندی- ناحیه بندی

----------------------------------------------------------------------

  • حالت ۲)

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

225.jpg

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

Sub ExtractArabicFromEng()
'MVP OShon VBATools
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 

در پایان دکمه doc-multiply-calculation-3.png یا کلید F5 را فشار دهید تا عملیات جداسازی انجام شود.

225-1.jpg

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

منبع: social.technet.microsoft.com , ترفند ها

ویرایش شده توسط فرانچیز!!!
لینک به دیدگاه

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری
  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.