rez227 ارسال شده در 15 اردیبهشت، 1394 گزارش اشتراک گذاری ارسال شده در 15 اردیبهشت، 1394 (ویرایش شده) برای یک حالت خاص که در یک سلول ترکیبی از متن فارسی و انگلیسی داشته باشیم و بخواهیم آنها را از هم جدا کنیم همیشه نمیتوان از روشهای معمول استفاده کرد. حالت ۱)توضیحات را با یک مثال شروع میکنم که سوال یکی از کاربران انجمن آفیس فرساران است: در مثال فوق اگه دقت کنید در هر سلول بین متون فارسی و لاتین دقیقا 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 منطقه بندی- ناحیه بندی ---------------------------------------------------------------------- حالت ۲)در حالتی مثل شکل زیر که متون بصورت ترکیبی میباشد و فاصله بین متون لاتین و فارسی در سلولها متفاوت است، دیگر نمیتوان از راه حل حالت ۱ (بالا) استفاده کرد. برای این حالت باید از کد ماکرو در اکسل استفاده نمود. ابتدا سلولهایی که میخواهید متون انگلیسی و فارسی را از هم جدا کنید انتخاب نمایید (مثل شکل بالا)، سپس کلیدهای 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 در پایان دکمه یا کلید F5 را فشار دهید تا عملیات جداسازی انجام شود. روش فوق در همه حالات قابل استفاده است. منبع: social.technet.microsoft.com , ترفند ها ویرایش شده 15 اردیبهشت، 1394 توسط فرانچیز!!! واکنش ها : Unknown 1 لینک به دیدگاه
ارسال های توصیه شده
برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید
برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید
ایجاد یک حساب کاربری
برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !
ثبت نام یک حساب کاربری جدیدورود به حساب کاربری
دارای حساب کاربری هستید؟ از اینجا وارد شوید
ورود به حساب کاربری