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

دالة جديدة لاستخراج اسم المحافظة وتاريخ الميلاد والنوع من الرقم القومي المصري


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

image013.gif

image012.gif

اخواني الكرام:

عندما قمت بالاعداد لشرح موضوع Select Case توصلت الى عمل دالة جديدة تقوم باستخراج اسم المحافظة وتاريخ الميلاد والنوع من الرقم القومي المصري قد لا تكون هذه الدالة جديدة عليكم فقد قام عدد من الاساتذة واذكر منهم الاستاذ خبور بعمل دوال احترافية بهذا الخصوص ولكني احببت ان اضعها هنا للاستفادة منها

الدالة تحوي على بارو مترين هما

1. A_Rng ويمثل خلية الرقم القومي

2. T ويمثل الخيار الخاص بالعنصر المراد استخراجه

===============================

وهنا المتغير T ينقسم الى التالي اي عندما

T = 1 يتم استخراج اسم المحافظة

T = 2 يتم استخراج تاريخ الميلاد

T = 3 يتم استخراج النوع سوء ذكر او انثى

====

ويصبح الشكل النهائي للدالة



=A_ID(A_Rng;T)

ارجو منكم التجربة وابداء الراي

اليكم المرفق 2003

دالة معرفة.rar

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

نرجو اضافة هذه الاكواد للمحافظات حتى يكتمل الجمال

***

القول الفصل فى اكواد المحافظات

1 القاهرة 2 الاسكندرية 3 بورسعيد 4 السويس 11 دمياط

12 الدقهلية 13 الشرقية 14 القليوبية 15 كفر الشيخ

16 الغربية 17 المنوفية 18 البحيرة 19 الاسماعيلية

21 الجيزة 22 بنى سويف 23 الفيوم 24 المنيا

25 اسيوط 26 سوهاج 27 قنا 28 أسوان 31 البحر الأحمر

32 الوادى الجديد 33 مطروح 34 شمال سيناء

35 جنوب سيناء 36 الأقصر 37 اخرى

***

ولك خالص تقديري

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

اخى الرائع المبدع

المايسترو /عبدالله المجرب

دائما لا تاتى الا بالاجمل والافضل

بارك الله لنا فيك

واطال عمرك وامتعنا بوجودك

:signthankspin: :signthankspin: :fff: :fff: :signthankspin: :signthankspin:

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

السلام عليكم

في مملكة البحرين يتكون الرقم الشخصي من 9 ارقام وفي الغالب يعتمد على اخر رقمين لتحديد العمر ومن هذا المنطلق قمت بعمل هذه الدالة المعرفة لحساب العمر

وتندرج طريقة الحساب الى الاتي

1. اذا كان اخر رقمين اقل من 12 (اخر رقمين في السنة الحالية) يتم حساب سنة الميلاد بذلك الرقمين على اساس انها بعد 2000

مثال

011234567 يعتبر هذا من مواليد 2001

051234567 يعتبر هذا من مواليد 2005

2. اذا كان اخر رقمين اكبرمن 12 (اخر رقمين في السنة الحالية) يتم حساب سنة الميلاد بذلك الرقمين على اساس انها بعد قبل 2000

مثال

841234567 يعتبر من موليد 1984

331234567 يعتبر من موليد 1933

991234567 يعتبر من موليد 1999

وهكذا

تتكون الدالة من متغير واحد هو خانة الرقم الشخصي


Function Age(T As Variant) As String

If T = "" Or Len(T) <> 9 Then Exit Function

Select Case Mid(T, 1, 2)

Case Is > Mid(Year(Now()), 3, 2):

Abdulla = Int((Date - DateSerial("19" & Mid(T, 1, 2), Month(Now()), Day(Now()))) / 365)

Age = Abdulla

Case Is <= Mid(Year(Now()), 3, 2):

Abdulla1 = Int((Date - DateSerial("20" & Mid(T, 1, 2), Month(Now()), Day(Now()))) / 365)

Age = Abdulla1

Case Else: Age = ""

End Select

End Function

شكل الدالة سيكون هكذا

=Age(A1)

بفرض ان A1 هي خلية الرقم الشخصي

ارجو ان تكون الدالة فيها الفائدة لمن يستخدمها

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

عمل ممتاز استاذ عبدالله

بس ممكن تعديل بسيط للدالة

اذا كتبت الرقم القومى مثلا 22905111111210 فيكون تاريخ الميلاد 11/ 05 / 2029

ولكن صحته 11 / 05 / 1929 لان اذا كان الرقم الاخير 2 فبالتالى يكون مواليد 1900 اذا كان 3 فيكون مواليد 2000

شكرا على سعة صدرك

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

السلام عليكم

اخي باسم

شكراً على هذه الملاحظة

لتعديل الدالة

عدل هذا السطر


A_ID = Format(DateSerial(Mid(A_Rng, 2, 2), Mid(A_Rng, 4, 2), Mid(A_Rng, 6, 2)), "yyyy/mm/dd")

ليصبح

A_ID = Format(DateSerial("19" & Mid(A_Rng, 2, 2), Mid(A_Rng, 4, 2), Mid(A_Rng, 6, 2)), "yyyy/mm/dd")

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

زائر
هذا الموضوع مغلق.
×
×
  • اضف...

Important Information