نمایش نتایج: از شماره 1 تا 10 , از مجموع 14

موضوع: راهکارهايي نسبي براي رفع مشکل حرف ي فارسي

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1


    آخرین بازدید
    4 روز پیش
    تاریخ عضویت
    November 2013
    محل سکونت
    تهران
    نوشته ها
    1,518
    امتیاز
    6118
    سپاس
    2,884
    سپاس شده
    4,886 در 1,380 پست
    سطح اکسل
    71.67 %

    راهکارهايي نسبي براي رفع مشکل حرف ي فارسي

    به نام خدا

    (تذکر: اين جستار بيشتر يک مطلب تجربي است و نه يک تحقيق جامع علمي)
    سلام،
    همانطور که مي دانيد حرف "ى" فارسي داراي چند نوع مختلف است که در هنگام جستجوي عبارات در اکسل مشکل ساز مي شود.
    در زير قصد دارم چند راهکار نسبي براي تعديل مشکل فوق ارائه دهم.
    قبل از هر چيز يک نکته را توضيح دهم:
    شما باتابع code مي توانيد کد کاراکترهايي که با صفحه کليد خود تايپ مي کنيد را به دست آوريد به فرض فرمول ("ج")code= عدد 204 را به شما باز خواهد گرداند.

    حال اگر شما کد حرف "ى" که روي صفحه کليد خود داريد را با تابع فوق بررسي کنيد احتمالا" به يکي از سه عدد 236 يا 237 يا 63 برخواهيد خورد.

    ممکن است چند حرف "ى"روي صفحه کليدتان باشد و در نتيجه در آن واحد شما مي توانيد چند "ى" با کدهاي مختلف را در متون نوشتاري خود درج کنيد.
    همچنين ممکن است فايلي داشته باشيم که هر قسمت از اطلاعات مندرج در آن توسط ويرايش در کامپيوترهاي مختلف تکميل شده باشد. اگر هرکدام از کامپيوترهاي مذکور از يک نوع "ى" متفاوت با ديگري استفاده کند فايل ياد شده نيز داراي چند نوع "ى" مختلف خواهد بود.
    در اين گونه موارد در موقع جستجوي عبارات در فايل مورد نظر، اگر در عبارت مورد جستجو حرف "ى" وجود داشته باشد نتيجه جستجو با اشکال مواجه خواهد شد.
    زيرا اکسل فقط آن نوع "ى" که در عبارت جستجو تايپ کرده ايد را بررسي خواهد نمود و اگر نوشته اي با يک نوع "ى" ديگر تايپ شده باشد در نتيجه جستجو نشان داده نخواهد شد.

    راه حل موضوع اين است که همه انواع "ى" هاي داخل فايل را به يک نوع تبديل کرده و بعد جستجو را آغاز کنيم.

    در موارد ساده، يکسان سازي حروف "ى" را با فشردن کليدهاي CTRL+F در پنجره FIND AND REPLACE مي توان انجام داد، که طرز کار آن را در سايت مي توانيد بيابيد ( البته با يک نگاه ساده هم متوجه چگونگي کار پنجره مذکور خواهيد شد).
    ليکن در موارد پيچيده و دفعات زياد و .... اين ابزار عملا" وقت گير و ناکارآمد خواهد بود.

    در اينگونه موارد بايد از کدنويسي بهره جست.
    بايد کدي بنويسيم که در ابتداي باز شدن فايل تمام کدهاي حرف "ى" داخل فايل را بررسي و همه را به يک کد واحد تغيير دهد.
    ضمنا" در موقع جستجو بايد ابتدا حروف "ى" داخل متني که کاربر براي جستجو تايپ مي کند به همان کد پيش فرض تبديل گردد و بعد جستجو انجام شود. (چون ممکن است حرف "ى" روي صفحه کليد کاربر با آن کدي که ما همه را به آن تبديل کرده ايم يکسان نباشد)
    به عنوان مثال کد زير در شيت فعال همه "ى" هاي با کد 236 را به "ى" هاي با کد237 تبديل خواهد نمود:
    کد:
    ActiveSheet.Cells.Replace What:=Chr(236), Replacement:=Chr(237)
    ولي يک مشکلي وجود دارد!
    اگر با همين کد فوق بخواهيم "ى" هاي با کد 63 را به "ى" هاي با کد 237 تبديل کنيم بايد بنويسيم:
    کد:
    ActiveSheet.Cells.Replace What:=Chr(63), Replacement:=Chr(237)
    ولي در موقع استفاده از اين کد اتفاق عجيبي رخ خواهد داد!
    تمامي کاراکتر هاي موجود در صفحه اکسل به "ى" با کد 237 تبديل خواهد شد!
    اما مشکل کجاي کار است؟
    قبل از توضيح مشکل فوق يک نکته را متذکر مي شوم و آن اينکه:
    ------------------------------------------------------
    کاراکترها معمولا" با استانداردهاي خاصي کدنويسي و ايجاد مي گردند، از جمله استانداردهاي موسوم به UNICODE و ASCII
    مشکل اينجا است که ظاهرا" بعضي قسمتهاي نرم افزار اکسل از جمله سيستم کدنويسي اکسل (VBA) از استاندارد کدنويسي UNICODE پشتيباني نمي کند.
    يعني فقط کاراکترهايي که با سيستم ASCII کدنويسي شده اند براي قسمت VBA اکسل شناخته شده اند.
    تابع CODE که در بالا نام برده ام نيز از اين قاعده مستثني نيست.
    اگر کاراکترهايي که فقط با سيستم UNICODE کدنويسي شده اند را با تابع CODE اعتبار سنجي نماييد براي همه آنها کد 63 را برمي گرداند. کد 63 يعني اين کاراکتر ناشناخته و تعريف نشده است (کد کاراکتر علامت سوال هم 63 است).
    نمونه هاي زيادي از اين کاراکتر ها را با جستجو در منو INSERT و در گزينه SYMBOL مي توانيد بيابيد.
    با اين تفاسير مشکل کد فوق بدين گونه است که:
    وقتي شما در کد فوق به اکسل مي گوييد کد 63 را با 237 تعويض کند، اکسل کد 63 را به کاراکتر علامت سوال تعبير مي کند. علامت سوال هم که مي دانيد در جستجو ها به معني يک کاراکتر فرضي (هر کاراکتري که مي خواهد باشد) در نظر گرفته مي شود.
    بنابراين اکسل اينطور استنباط مي کند که بايد هر کاراکتر فرضي در صفحه را با "ي" با کد 237 تعويض کند.
    البته قسمت FIND AND REPLACE که در بالا اشاره کردم همچين اشکالي را ندارد و ظاهرا" قادر به تشخيص کاراکترهاي UNICODE مي باشد، ولي همانطور که گفتم فقط در موارد محدود قابل استفاده است و در کارهاي باحجم بالا ناکارآمد و وقت گير خواهد بود.

    ------------------------------------------------------
    خوب حالا چه بايد بکنيم؟

    دو راه حل (البته نسبی) وجود دارد، یکی اینکه در ابتدای ورود کاربر به فایل حرف "ى" روي صفحه کليد وي را اعتبار سنجي کنيم و اگر آن نوع "ى" با کد 63 روي صفحه کليد وي بود از ورودش به فايل جلوگيري نموده و يا به وي تذکر دهيم. براي اين کار مي توانيم تنظيم کنيم يک فرم در ابتداي اجراي فايل باز شود و از کاربر بخواهد که حرف "ى" روي صفحه کليدش را در فرم تايپ کند سپس (مثلا" با يک کليد تاييد) حرف تايپ شده را به صفحه اکسل انتقال داده و با تابع CODE اعتبار سنجي کنيم. فکر کنم اين راه بهترين راه حل ممکن باشد.
    فايل پيوست را ببينيد. (البته از آنجايي که حرف کاف نيز اغلب همين مشکل را دارد فايل پيوست براي هر دو حرف "ى" و "ک" طراحي شده.


    etebar sanji.xlsm

    يک راه حل ديگر هم به نظرم مي رسد.
    قبل از طرح اين راه حل دوم به اين نکته توجه کنيد:
    --------------------------------------------------
    من يک حرف "ى" اينجا در سايت تايپ مي کنم بهش توجه کنيد: "ی"
    شما همين حرف را کپي کرده و در اکسل پيست کنيد و آن را با تابع CODE اعتبار سنجي کنيد.
    کد 63 مي دهد؟
    حالا همين حرف را دوباره از روي سايت کپي و در VBA پيست کنيد.
    به شکل حرف ي که زيرش دو نقطه دارد (يعني ي کد 237) ظاهر مي شود؟!!!!!!!!!!
    حالا دوباره همين حرف را از روي سايت کپي و در خانه اکسل کپي و بعد از توي خانه اکسل آن را مجددا" کپي و در VBA پيست کنيد.
    حالا به شکل علامت سوال نمايان مي شود؟!!!!!!!!!!!!!!!
    منظور اينکه در حين جابجايي اطلاعات به صورت کپي و پيست و يا موارد ديگر ظاهرا" بر حسب تفاسير کامپيوتري که من از آن با خبر نيستم! اين کدها ممکن است اتوماتيک به هم تبديل شوند.
    ---------------
    ----------------------------------
    من از اين نکته استفاده کردم و با خودم گفتم اگر ما حرف "ى" با کد 63 را در صفحه اکسل تايپ کنيم و بعد آن را يک متغيير ذخيره کنيم و با واسطه آن متغيير کار تعويض را انجام دهيم شايد مشکل حل شود و بتوانيم اکسل را دور بزنيم! فايل پيوست را ببينيد (در فايل ضميمه خانه هاي طوسي به عنوان مرجع کد 63 است و کد ما آنها را تغيير نمي دهد تا بتواند دوباره حروف با کد 63 را از آنها بازيابي کرده و در متغييرها ذخيره کرده و در VBA به کار ببرد، ولي خانه هاي زرد رنگ بايد کدشان يکسان سازي شود):

    yeksan sazi.xlsm

    البته اين همه ماجرا نيست و موضوع يک کم پيچيده تر از اين حرفها است! زيرا حروف "ى" ديگري هم هست که با هيچکدام از روشهاي فوق قابل جايگزيني نيست! يعني هست ولي اشکالاتي بوجود خواهد آورد! اين فايل را ببينيد (در مورد اينها حتي به FIND AND REPLACE هم نمي شود اعتماد کرد):

    moshkel za.xlsx

    فکرکنم در اين موارد اصولا" به علت در دست نبودن يک استاندارد کلي براي فونتهاي فارسي يک تداخل کدنويسي انجام گرديده! البته همانطور که گفتم اين مطلب يک پژوهش علمي نيست و صرفا" تجارب بنده بوده و به همين خاطر هم به نام: راهکار نسبي آنرا ارائه نمودم.

    اخطار: این یک موضوع قدیمی است
    به دلیل قدیمی بودن موضوع، ممکن است برخی فایل های ضمیمه به درستی کار نکنند. لطفا در صورت عدم ضرورت، از بالا آوردن موضوعات قدیمی خودداری نمایید.



اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. محاسبات روي تاريخ شمسي بدون استفاده از add-in يا توابع شمسي
    توسط Ali Parsaei در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 8
    آخرين نوشته: 2014/10/26, 16:06
  2. ثبت فعلي و ثبت نهايي در فرم
    توسط sajad2000 در انجمن سوالات اكسس - Access Questions
    پاسخ ها: 2
    آخرين نوشته: 2014/05/15, 08:09
  3. راهنمايي
    توسط sajad2000 در انجمن سوالات اكسل - Excel Questions
    پاسخ ها: 6
    آخرين نوشته: 2013/01/03, 14:44
  4. مطالب و لينك هايي مربوط به VBA
    توسط afshin160 در انجمن سوالات پیرامون ويژوال بيسيك - VBA Questions
    پاسخ ها: 3
    آخرين نوشته: 2012/12/28, 21:11
  5. راهنمايي قرار دادن كد
    توسط sajad2000 در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 5
    آخرين نوشته: 2012/12/02, 18:37

بازدید کنندگان با جستجو های زیر این صفحه را پیدا کرده اند

حل مشکل جستجو در اکسل

مشکل حرف ی در اکسل

مشکل سرچ فارسی در اکسل

تبدیل علامت سئوال به فارسی در اکسل

رفع مشکل جستجو در اکسل

از بین بردن حرف ی در ستون اکسل

رفع مشکل حرف ی در اکسل

رفع مشکل علامت سوال در اکسل

رفع مشکل در فونت ماکروی که پیغام:میدهد

چرا حرف پ در اکسل تایپ نمیشه

مشکل علامت سوال بجای ی در اکسل

پرینت موزیلا با حروف نا شناخته

رفع مشکل اکسل با علامت سوال می شود

تغییر ی دونقطه

علت تایپ علامت سوال بجای حرف ی در اکسل

چرا توست در اکسل علامت سوال می شود

یونیکد تفاوت ی دو نقطه

رفع عیب عربی بودن ی در اکسل

حل مشکل سرچ در اکسل

حرف ی در اکسل

چرا در spss حرف ی نوشته نمی شود؟

برطرف کردن مشکل حرف ی در برنامه نویسی

علت تایپ علامت سوال بجای عدد در spss

مشکل علامت سوال در ماکرو

علت نشان ندادن عبارت سرچ شده در اکسل

کلمات کلیدی این موضوع

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
  • BB code ها فعال هستند
  • شکلک ها فعال هستند
  • کد [IMG] فعال است
  • کد [VIDEO] فعال است
  • کد HTML غیر فعال است
با ما در تماس باشيد