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

الفرز (الترتيب) مع تجاهل كلمة (أبو)، (أم)، (ابن)، (بنو)

Recommended Posts

الإخوة الكرام، هل هناك طريقة لترتيب قائمة أعلام فيها مثلا (محمد، علي، أبو شهبة، أم سلمة، ابن عباس) بحيث أتجاهل كلمة (أبو)، (أم)، (ابن) في الترتيب، فيأتي مثلا (أبو شهبة) في حرف (الشين) ، و(أم سلمة) في حرف (السين)، و(ابن عباس) في حرف (العين)؟

شارك هذه المشاركه


رابط المشاركه
شارك

السلام عليكم

اعتقد المطلوب سيكون اسهل كثيرا فى الاكسيل

و هناك بالفعل عدة مواضيع تطرقت الي تقسيم و الي ترتيب الاسماء بقسم الاكسيل ، فاستخدم خاصية البحث للوصول لها

شارك هذه المشاركه


رابط المشاركه
شارك

جزاكم الله خيرا أستاذ محمد على ردكم، لكني عملت هذا الماكرو، ونفع والحمد لله:

Sub ترتيبأعلام()
'
' ترتيبأعلام Macro
'
'
 Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Color = wdColorRed
    With Selection.Find
        .Text = "^pابن "
        .Replacement.Text = "^pابن* "
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "^pأبو "
        .Replacement.Text = "^pأبو* "
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "^pأم "
        .Replacement.Text = "^pأم* "
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        
     With Selection.Find
        .Text = "^pبنو "
        .Replacement.Text = "^pبنو* "
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
         End With
    
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Font.Color = wdColorAutomatic
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^p"
        .Replacement.Text = "^p*"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.WholeStory
    WordBasic.TextToTable ConvertFrom:=3, NumColumns:=2, NumRows:=11, _
        InitialColWidth:=wdAutoPosition, Format:=0, Apply:=1184, AutoFit:=0, _
        SetDefault:=0, Word8:=0, Style:="شبكة جدول"
    Selection.Sort ExcludeHeader:=False, FieldNumber:="عمود 2", SortFieldType _
        :=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, FieldNumber2 _
        :="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _
        wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _
        wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _
        wdSortSeparateByCommas, SortColumn:=False, CaseSensitive:=False, _
        LanguageID:=wdArabicEgypt, SubFieldNumber:="فقرات", SubFieldNumber2:= _
        "فقرات", SubFieldNumber3:="فقرات"
    Selection.Sort BidiSort:=False, IgnoreThe:=True, IgnoreKashida:=False, _
        IgnoreDiacritics:=False, IgnoreHe:=False
    Selection.Rows.ConvertToText Separator:=wdSeparateByDefaultListSeparator, _
        NestedTables:=True
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "*"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
       
    End With
   
    Selection.Find.Execute Replace:=wdReplaceAll
   Selection.MoveUp Unit:=wdLine, Count:=1
End Sub

 

 

 

شارك هذه المشاركه


رابط المشاركه
شارك

جميل انك وصلت الي مبتغاك 😄

ما فهمته من الكود انك اعتمدت الاستبدال ثم بعد ذلك الترتيب لبيانات موجودة فى جدول معين ، و لم يتم ترتيبها كما هي

يرجى ارفاق ملف يه مثال مبسط للتطبيق لنجربه حيث يعتمد الجزء الثاني من الكود على بيانات الجدول

شارك هذه المشاركه


رابط المشاركه
شارك

هذا نموذج للقائمة اليمين قبل الترتيب، والأخرى بعد الترتيب، ونلاحظ فيها أن الكلمات المطلوب عدم اعتبارها في الترتيب ملونة باللون الأحمر:

محمد بن علي

أحمد بن محمد

أحمد بن محمد

أبو أسيد

سعيد بن المسيب

داود بن محمد

أبو أسيد

أم رويم

أم رويم

سعيد بن المسيب

ابن عباس

بنو سلمة

ابن شهاب

أم سلمة

بنو سلمة

ابن شهاب

أم هانئ

أبو صالح

بنو ضبة

بنو ضبة

داود بن محمد

ابن عباس

أبو صالح

محمد بن علي

أم سلمة

أم هانئ

شارك هذه المشاركه


رابط المشاركه
شارك

الفكرة ببساطة: - أني حولت كل الكلمات المطلوبة الموجودة في بداية الفقرة إلى اللون الأحمر وجعلت بعدها *

                       - جعلت كل فقرة تلقائي قبلها *

                       - وبهذا أصبحت القائمة عبارة عن مقطعين يصلحان أن يكونا جدولا عند اعتبار علامة الجدولة هي (*)

                       - ظللت النص كله وحولت النص إلى جدول مع علامة الجدولة (*)

                       - فأصبح عندي عمودان أحدهما فيه (أبو، أم، ابن، بنو) والعمود الثاني فيه بقية الاسم الذي أوله هذه الكلمات، مع الكلمات الأخرى التي لا تبدأ بـ(أبو، أم، ابن، بنو)

                       - رتبت الجدول على العمود الثاني، وبهذا لم تدخل الكلمات المطلوبة في الترتيب.

                       - حولت مرة أخرى الجول إلى نص، فتكونت القائمة على الترتيب المطلوب.

ملحوظة: لا بد أن تكون علامة الجدولة المخزنة (*) لأن الورد قد يكون مخزنا فيه علامة أخرى، وهنا الماكرو لن يشتغل على الوجه المطلوب.

             كما يجب أن نجعل في أول الملف (إنتر) حتى تكون علامة فقرة.

تم تعديل بواسطه أبو عاصم المصري

شارك هذه المشاركه


رابط المشاركه
شارك

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 اعضاء متواجدين الان

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

×
×
  • اضف...