أبوأحـمـد قام بنشر يناير 11, 2018 قام بنشر يناير 11, 2018 السلام عليكم ورحمة الله وبركاته مرفق ملف أكسل يمكن استخدامه لإضافة الاسماء مع رقم الهوية الوطنية وأي بيانات أخرى ويمكنه التحقق من صحة الرقم عن طريق معادلة تم إضافتها بالتنسيق الشرطي ملاحظة : عملية التحقق بالكود اسهل بكثير ولكن حبيت استخدام بالتنسيق الشرطي كنوع من التحدي ولتوضيخ امكانيات الأكسل s.rar
سليم حاصبيا قام بنشر يناير 11, 2018 قام بنشر يناير 11, 2018 الأقضل هذه المعادلة للتنسيق الشرطي التي تقوم بنفس العمل =LEN(C2)*ISNUMBER(C2)=10
أبوأحـمـد قام بنشر يناير 11, 2018 الكاتب قام بنشر يناير 11, 2018 9 دقائق مضت, سليم حاصبيا said: الأقضل هذه المعادلة للتنسيق الشرطي التي تقوم بنفس العمل =LEN(C2)*ISNUMBER(C2)=10 شكرا اخي سليم على هذه الاضافة ولكن الخوارزمية ليست فقط التحقق من طول رقم السجل المدني
سليم حاصبيا قام بنشر يناير 11, 2018 قام بنشر يناير 11, 2018 2 دقائق مضت, أبوأحـمـد said: شكرا اخي سليم على هذه الاضافة ولكن الخوارزمية ليست فقط التحقق من طول رقم السجل المدني ارجو شرح الخوارزمية التي تريد ها
أبوأحـمـد قام بنشر يناير 11, 2018 الكاتب قام بنشر يناير 11, 2018 الخوارزية موجودة لدي وقمت بأضفتها إلى الملف المرفق وهي تعمل بشكل سليم
سليم حاصبيا قام بنشر يناير 11, 2018 قام بنشر يناير 11, 2018 1 دقيقه مضت, أبوأحـمـد said: الخوارزية موجودة لدي وقمت بأضفتها إلى الملف المرفق وهي تعمل بشكل سليم لم افهم شروطها
أبوأحـمـد قام بنشر يناير 11, 2018 الكاتب قام بنشر يناير 11, 2018 1 دقيقه مضت, سليم حاصبيا said: لم افهم شروطها معك حق فهي طويلة وغير مفهومة عندما نستخدمها كصيغة
سليم حاصبيا قام بنشر يناير 11, 2018 قام بنشر يناير 11, 2018 1 دقيقه مضت, أبوأحـمـد said: معك حق فهي طويلة وغير مفهومة عندما نستخدمها كصيغة اعرف ذلك و لكن ما هو الشرط (او الشروط ) لتلوين الخلية اذ ممكن ان اجد لك معادلة اقصر و بالتالي اخف ثقلاً على الذاكرة
أبوأحـمـد قام بنشر يناير 11, 2018 الكاتب قام بنشر يناير 11, 2018 هذه بالكود 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 من آحاد الناتج فإذا تشابه مع آخر رقم من السجل المدني فهو صحيح 2
أبوأحـمـد قام بنشر يناير 12, 2018 الكاتب قام بنشر يناير 12, 2018 قمت بتقسيم الصيغة الطويلة لتكون اوضح =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)) )
الردود الموصى بها