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

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

قام بنشر

السلام عليكم ورحمة الله

عندي قائمة اسماء في اكسل تقريبا 6 الاف اسم رباعية

يعني اسم واسم الاب والجد والعائلة ولكن فيه اسماء نقص يعني بدون اسم العائلة او بدون اسم الجد تكون اسم ثلاثي مش رباعي

سؤالي هو :

كيف افرز الاسماء الناقصة سواء في كود اكسس او بطريقة اخرى

وشكرا

قام بنشر
32 دقائق مضت, نيموز said:

السلام عليكم ورحمة الله

عندي قائمة اسماء في اكسل تقريبا 6 الاف اسم رباعية

يعني اسم واسم الاب والجد والعائلة ولكن فيه اسماء نقص يعني بدون اسم العائلة او بدون اسم الجد تكون اسم ثلاثي مش رباعي

سؤالي هو :

كيف افرز الاسماء الناقصة سواء في كود اكسس او بطريقة اخرى

وشكرا

وعليكم السلام

هل الاسم في حقل واحد ام الاسم نجزأ بمعنى اسم الابن في حقل والاب في حقل وهكذا....

  • Like 1
قام بنشر
22 دقائق مضت, نيموز said:

الاسماء في حقل واحد وليست مجزئة

اذا كانت الاسماء مكتبوبة باللغة العربية هذه مشكلة ... لاننا حتى لو حاولنا تجزأة هذه الاسماء سوف نواجه الاسماء المركبة واسماء عبد وغيرها .. الا اذا كان للخبراء رأي اخر ننتظر الحلول

  • Like 1
قام بنشر
26 دقائق مضت, نيموز said:

لا الاسماء في حقل واحد وليست مجزئة

إذا كنت ستعتمد على عد المسافات بين الأسماء .. فيمكنك استخدام الدالة التالية لعد المسافات الفاصلة بين الأسماء بغض النظر عن الأسماء ذوات الضروف الخاصة كالأسماء المركبة وغيرها ..

1- أضف حقل محسوب في الاستعلام وهذه قيمته ( تستبدل Text باسم حقل الأسم )  :

Len(Text) - Len(Replace(Text; " "; ""))

2- في المعيار أسفل هذا الحقل تكتب الرقم   3   وذلك ليحضر لك الأسماء الرباعية ..

    أو تكتب الرقم    2    ليحضر لك الأسماء الثلاثية

  • Like 1
  • أفضل إجابة
قام بنشر (معدل)

بالاستفادة من فكرة الأستاذ موسى،
دالة لتعطيك مخرج نعم/لا للاسم الذي يحتوي على عدد الأجزاء المطلوبة، ولا داعي لطرح واحد من عدد الأجزاء:
 

Option Explicit

Function NamePartsCounter(ByVal sName As String, ByVal Parts As Byte) As Boolean
    Parts = Parts - 1
    sName = Trim(sName)
    
    Do While InStr(1, sName, "  ") > 0
        sName = Replace(sName, "  ", " ")
    Loop
    
    NamePartsCounter = Parts = (Len(sName) - Len(Replace(sName, " ", "")))
    
    'If NamePartsCounter Then Debug.Print sName
End Function



'إجراء لفحص الدالة
Sub test()
    Debug.Print NamePartsCounter("عبدالله     أحمد  علي", 3)
End Sub

وأنصح في تخزين الأسماء باستخدام الـ "أندرسكور" بدلا من المسافة ، وعند العرض يتم معالجة الأسماء بتديل الأندرسكور بالمسافة باستخدام دالة Replace

تم تعديل بواسطه AbuuAhmed
  • Like 1
قام بنشر

شكرا استاذي العزيز  Moosak

ساجرب هذه الطريقة

وشكرا للمساعدة استاذ AbuuAhmed

ان شالله ساجرب هذا الكود واعتقد تنجح هذه الفكرة وبمساعدة طريقة الاستاذ Moosak

شكرا للمساعدة

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