اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

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

مرفق ملف أكسل يمكن استخدامه لإضافة الاسماء مع رقم الهوية الوطنية وأي بيانات أخرى

ويمكنه التحقق من صحة الرقم عن طريق معادلة تم إضافتها بالتنسيق الشرطي

ملاحظة : عملية التحقق بالكود اسهل بكثير ولكن حبيت استخدام بالتنسيق الشرطي كنوع من التحدي ولتوضيخ امكانيات الأكسل

2018-01-11_225037.jpg

s.rar

قام بنشر
9 دقائق مضت, سليم حاصبيا said:

الأقضل هذه المعادلة للتنسيق الشرطي التي تقوم بنفس العمل


=LEN(C2)*ISNUMBER(C2)=10

 

شكرا اخي سليم على هذه الاضافة

ولكن الخوارزمية ليست فقط التحقق من طول رقم السجل المدني 

قام بنشر
1 دقيقه مضت, أبوأحـمـد said:

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

اعرف ذلك و لكن ما هو الشرط (او الشروط ) لتلوين الخلية 

اذ ممكن ان اجد لك معادلة اقصر و بالتالي اخف ثقلاً على الذاكرة

قام بنشر

هذه بالكود 

    Private Function ID_Val(ByVal SEGEL_NO As String) As Boolean
        On Error Resume Next
        Dim i, TOT, ten As Integer
        Dim TEMP, FIN As String
        TOT = 0
        For i = 1 To 9
            If i Mod 2 <> 0 Then
                TEMP = (CInt(Mid(SEGEL_NO, i, 1)) * 2)
                If Len(TEMP) = 1 Then
                    TEMP = "0" & (CInt(Mid(SEGEL_NO, i, 1)) * 2)
                Else
                    TEMP = (CInt(Mid(SEGEL_NO, i, 1)) * 2)
                End If
                TOT = TOT + CInt(Mid(TEMP, 1, 1)) + CInt(Mid(TEMP, 2, 1))
            Else
                TOT = TOT + CInt(Mid(SEGEL_NO, i, 1))
            End If
        Next
        FIN = Format(TOT, "00")
        ten = CInt(Mid(SEGEL_NO, 10, 1))
        ID_Val = (CInt(Mid(FIN, 2, 1)) = ten) Or (ten = 10 - CInt(Mid(FIN, 2, 1)))

    End Function

 

الخوارزمية باختصار 

 نضرب الأعداد الفردية من رقم السجل المدني بـ 2

ثم نجمع الآحاد مع العشرات ونضيف معهم مجموع الأعداد الزوجية

وفي النهاية يكون معنا عدد مكون من آحاد وعشرات

فإذا تشابه الآحاد مع آخر رقم من السجل المدني فهو صحيح

أو ننقص 10 من آحاد الناتج فإذا تشابه مع آخر رقم من السجل المدني فهو صحيح

  • Like 2
قام بنشر

قمت بتقسيم الصيغة الطويلة لتكون اوضح

=OR(
VALUE(MID(
MID(TEXT(MID(C2;1;1)*2;"00");1;1)+MID(TEXT(MID(C2;1;1)*2;"00");2;1)+
MID(TEXT(MID(C2;3;1)*2;"00");1;1)+MID(TEXT(MID(C2;3;1)*2;"00");2;1)+
MID(TEXT(MID(C2;5;1)*2;"00");1;1)+MID(TEXT(MID(C2;5;1)*2;"00");2;1)+
MID(TEXT(MID(C2;7;1)*2;"00");1;1)+MID(TEXT(MID(C2;7;1)*2;"00");2;1)+
MID(TEXT(MID(C2;9;1)*2;"00");1;1)+MID(TEXT(MID(C2;9;1)*2;"00");2;1)+
MID(C2;2;1)+MID(C2;4;1)+MID(C2;6;1)+MID(C2;8;1);2;1))
=
VALUE(MID(C2;10;1))
;
VALUE(MID(C2;10;1))
=
10-VALUE(MID(
MID(TEXT(MID(C2;1;1)*2;"00");1;1)+MID(TEXT(MID(C2;1;1)*2;"00");2;1)+
MID(TEXT(MID(C2;3;1)*2;"00");1;1)+MID(TEXT(MID(C2;3;1)*2;"00");2;1)+
MID(TEXT(MID(C2;5;1)*2;"00");1;1)+MID(TEXT(MID(C2;5;1)*2;"00");2;1)+
MID(TEXT(MID(C2;7;1)*2;"00");1;1)+MID(TEXT(MID(C2;7;1)*2;"00");2;1)+
MID(TEXT(MID(C2;9;1)*2;"00");1;1)+MID(TEXT(MID(C2;9;1)*2;"00");2;1)+
MID(C2;2;1)+MID(C2;4;1)+MID(C2;6;1)+MID(C2;8;1);2;1))
)

 

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

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

Important Information