اذهب الي المحتوي
أوفيسنا

ماكرو لضبط الأسماء دفعة واحدة


الردود الموصى بها

السلام عليكم : قمت بتسجيل ماكرو من أجل ضبط الأسماء دفعة واحدة وهناك اسطر كثيرة داخل الكود اعتقد يوجد حل لتقليلها أو اختصارها (كما أريد أن أضيف اسماء أخرى داخل الكود بدون التسجيل كل مرة يعني هناك اسماء قد تطرأ على الملف تحتاج إلى تصحيح أريد أن أضيفها ضمن الكود بدون الرجوع مرة أخرى للتسجيل أو لنسخ الأسطر وتعديل الأسماء بداخلها) أتمنى أجد حل لذلك وبارك الله فيكم

تعديل الأسماء دفعة واحدة.xlsm

رابط هذا التعليق
شارك

استاذنا الأستاذ سليم حاصبيا أنا أعمل بمدرسة وللأسف يتم تسجيل الطلاب على موقع الوزارة بواسطة أولياء الأمور وكثيراً ما أجد أخطاء لغوية في الأسماء فحينما أقوم بعمل قوائم فصول واريد ترتيب الأسماء مثلاً أجد (أسم مصطفي) بياء وليس ألف مقصورة والصحيح هو (مصطفى) فأنا أريد أن اجعل من هذا الماكرو قاعدة بيانات للأسماء الصحيحة بما فيها الأسماء التي بها أخطاء وذلك لتطبيقها فيما بعد على أي ملف به أسماء تحوي أخطاء أرجوا أن تكون الفكرة قد وصلت

تم تعديل بواسطه علي بطيخ سالم
رابط هذا التعليق
شارك

مهمة الكود يقوم بالبحث عن الأسماء التي بها خطأ وتصحيحها دفعة واحدة وذلك لاستخدامها في نطاق 3000 اسم بالمدرسة (بها أسماء مكررة مثل علي - مصطفى - ...... إلى آخره من الأسماء) 

2019-09-27_024004.png

رابط هذا التعليق
شارك

الامر ليس بهذه البساطة

مثلاً اذا اردت ان تستبدل كل شيء يبدأ بـــ حس و اخذت في الماكرو ( "حس* ":= what  ) 

فان البرنامج يستبدل   حسن و  حسني و  حسام باسم حسين اذا كان المستبدل في الماكرو هو حسين

رابط هذا التعليق
شارك

استاذ سليم حاصبيا اشكرك على التجاوب معي 

سوف أقوم باستبدال الاسم داخل الكود وما أريده هو اختصار الأسطر الموجودة في هذا الكود بحيث تتوافق مع ما اريد استبداله من الأسماء فقط يعني كالتالي:

Cells.Replace What:="حسنى", Replacement:="حسني", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

Cells.Replace What:="على", Replacement:="علي", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

Cells.Replace What:="مصطفي", Replacement:="مصطفى", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

Cells.Replace What:="سالى", Replacement:="سالي", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

وهكذا الكود يعمل معي بطريقة جيدة لكن ما أريده اختصار اسطر الكود نفسه بحيث اصحح الأسماء بدلالة الأسماء الخاطئة بدلاً من نسخ الكود ولصقه في كل مرة اريد تصحيح اسم

رابط هذا التعليق
شارك

وهناك بعض الأسماء المختلفة عند تطبيق الكود عليها قام بتعديلها جميعاً مرة واحدة مثل (اسم عبد ا...) من الملاحظ أن هناك مسافة بين (حرف الدال وحرف الألف) وبحذف هذه المسافة داخل الكود قام بتصحيح الكثير من الأسماء المركبة دفعة واحدة (مثل عبدالله - عبدالرحمن - عبدالعليم ....وهكذا ) وتعلم استاذنا أن مثل هذه الأشياء البسيطة تصيب الترتيب بالخلل في الاكسل مما يتسبب في كثير من المشاكل مثل ترتيب الطلاب داخل قاعات الامتحان وغيرها فقد أجد اسم عبدالله بعد مجموعة من الأسماء المختلفة بعيداً عن نفس الاسم وذلك لوجود مسافة بين الحرفين

2019-09-27_030702.png

رابط هذا التعليق
شارك

في هذا الملف نموذج عما تريد

فقط اكمل المصفوفة بما تشاء من اختصارات و ما يقابلها من اسماء ونفذ الماكرو

Option Explicit
Sub replace_Please()
Dim my_rg As Range
Dim arr(1 To 3)
Dim st$
Dim i%
 arr(1) = "مصط" & "*": arr(2) = "حس" & "*": arr(3) = "عيد" & "*"
 Set my_rg = Range("f1").CurrentRegion
 For i = LBound(arr) To UBound(arr)
 Select Case arr(i)
  Case "مصط" & "*": st = "مصطفى"
  Case "حس" & "*": st = "حسين"
  Case "عيد" & "*": st = "عبد"
 End Select
 my_rg.Replace What:=arr(i), Replacement:=st, LookAt:=xlPart
Next
End Sub

الملف مرفق

Replacement.xlsm

  • Like 2
رابط هذا التعليق
شارك

استاذنا هل لابد من هذا السطر arr(1) = "مصط" & "*": arr(2) = "حس" & "*": arr(3) = "عد" & "*": arr(4) = "هدي" & "*" بحيث اضيف اليه في كل مرة أم يمكن الاستغناء عنه بحيث اضيف الأسماء المطلوبة بعد Case مباشرة

تم تعديل بواسطه علي بطيخ سالم
رابط هذا التعليق
شارك

46 دقائق مضت, علي بطيخ سالم said:

استاذنا هل لابد من هذا السطر arr(1) = "مصط" & "*": arr(2) = "حس" & "*": arr(3) = "عد" & "*": arr(4) = "هدي" & "*" بحيث اضيف اليه في كل مرة أم يمكن الاستغناء عنه بحيث اضيف الأسماء المطلوبة بعد Case مباشرة

يمكن ان تضيف الاسماء دون  array لكن باستعمال array يكون الماكرو اسرع 

و كما قلت لك يمكنك تكبير array قدر ما تشاء ولو كان هنا 100000 احتمال 

  • Thanks 1
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information