فایل تشخیص صحت کد ملی در اکسل

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • ~M*E*H*D*I~
    • 2011/10/19
    • 4377
    • 70.00

    فایل تشخیص صحت کد ملی در اکسل

    درود

    با توجه به اینکه از کد ملی در دیتابیس ها به عنوان کد منحصر به فرد جهت شناسایی افراد استفاده می شه لذا صحت آن از اهمیت بالایی برخورداره ، بنا به نیازی که وجود داشت فایل زیر رو آماده کردم امیدوارم مورد استفاده دوستان قرار بگیره، اگر موردی بود که درست عمل نکرد لطفا اطلاع رسانی بشه تا تصحیح کنم
    فایل های پیوست شده
    [CENTER]
    [SIGPIC][/SIGPIC]
    [/CENTER]
  • Alireza
    مدير تالار تنظيمات اكسل

    • 2011/03/01
    • 648
    • 80.00

    #2
    سلام
    مهدی جان ممنون
    این هم یک روش دیگه که حاصل زحمت استاد شمس العلماء است.
    کد PHP:
    Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    If 
    Len(TextBox3) <> 10 Then
    MsgBox 
    ("کد ملی نامعتبر")
    Exit 
    Sub
    End 
    If

    Dim i
    Dim z
    For 1 To 9
    + (Mid(TextBox3.Texti1) * (11 i))
    'MsgBox 10 - i
    Next i
    '
    MsgBox z
    Dim c

    z Mod 11
    MsgBox c
    If And Mid(TextBox3.Text101Then
    MsgBox 
    ("کد ملی معتبر")
    ElseIf 
    Val(11 c) = Val(Mid(TextBox3.Text101)) Then
    MsgBox 
    ("کد ملی معتبر")

    Else
     
    MsgBox ("کد ملی نامعتبر")
    End If


    End Sub 
    [CENTER][COLOR=#ffd700]​[/COLOR]تنها راهي که به شکست مي انجامد، تلاش نکردن است
    [IMG]http://www.graphics18.com/wp-content/uploads/2010/12/yellow-flower23.gif[/IMG]
    [/CENTER]

    کامنت

    • mokaram
      مدير تالار اکسل و بانک اطلاعاتی

      • 2011/02/06
      • 1805
      • 74.00

      #3
      تشخیص صحت کد ملی
      امروزه در اکثر نرم افزارهای تولیدی نیاز به استفاده از کد ملی به عنوان یک مشخصه منحصر به فرد برای اطلاعات فردی می باشد.
      اخیرا با توجه به نیاز خودم به کنترل صحت کد ورودی الگوریتم مربوط به کنترل صحت کد ملی را بدست آوردم و چون مطمئن هستم افراد زیادی هم همین نیاز را دارند روال انجام کار را در این مقال توضیح می دهم
      کد ملی شماره ای است 10 رقمی که از سمت چپ سه رقم کد شهرستان ، شش رقم بعدی کد منحصر به فرد برای فرد دارنده و رقم آخر آن هم یک رقم کنترل است که از روی 9 رقم سمت چپ بدست می آید. برای بررسی کنترل کد کافی است مجدد از روی 9 رقم سمت چپ رقم کنترل را محاسبه کنیم
      از آنجایی که درسیستم کد ملی معمولا قبل از کد تعدادی صفر وجود دارد.(رقم اول و رقم دوم از سمت چپ کد ملی ممکن است صفر باشد) و در بسیاری از موارد ممکن است کاربر این صفرها را وارد نکرده باشد و یا نرم افزار این صفرها را ذخیره نکرده باشد بهتر است قبل از هر کاری در صورتی که طول کد بزرگتر مساوی 8 و کمتر از 10 باشد به تعداد لازم (یک تا دو تا صفر) به سمت چپ عدد اضافه کنید.

      1- برای محاسبه رقم کنترل از روی سایر ارقام ، هر رقم را در موقعیت آن ضرب کرده و حاصل را با هم جمع می کنیم.
      2- مجموع بدست آمده از مرحله یک را بر 11 تقسیم می کنیم
      3- اگر باقیمانده کمتر از 2 باشد ، رقم کنترل باید برابر باقیمانده باشد در غیر اینصورت رقم کنترل باید برابر یازده منهای باقیمانده باشد

      به عنوان مثال 4709450553 کد ملی معتبری است؟
      باید از سمت چپ یکی یکی اعداد را از 10 به پایین ضرب کنیم البته تا 9 تا عدد یعنی 470945055
      40=10*4
      63=9*7
      0=8*0
      63=7*9
      24=6*4
      25=5*5
      0=4*0
      15=3*5
      10=2*5

      خوب حالا باید تمام این حاصلضرب ها رو با هم جمع کنیم
      که میشه 240
      حالا باید این عدد رو تقسیم بر 11 کنیم البته ما با باقیمانده تقسیم کار داریم
      اگر باقیمانده از 2 کوچکتر بود همون عدد میشه رقم آخر کد ملی
      اما اگر از 2 بیشتر بود 11 رو منهای باقیمانده میکنیم
      در این مثال باقیمانده عدد 9 میشه
      2=11-9
      با توجه به اینکه عدد کنترلی 3 مرقوم شده و عدد بدست آمده در تفریق بالا 2 شده است پس با توجه به نابرابر بودن دو عدد ، کد ملی معتبر نمی باشد
      حال عملیات بالا توسط توابع اکسل انجام شده که در فایل پیوست تقدیم می گردد
      فایل های پیوست شده
      Last edited by mokaram; 2014/12/27, 13:37.
      [CENTER][IMG]http://forum.exceliran.com/signaturepics/sigpic909_10.gif[/IMG]
      [/CENTER]

      کامنت

      • ندا یارمحمدی

        • 2014/11/26
        • 5

        #4
        بنظرم یه جای کار اشتباهه من با همین روش کد ملی خودم رو تست کردم به شماره آخرش نرسیدم
        همین مثال شما نمیدونم من چرا هر چی 240 رو بر 11 تقسیم میکنم جوابش 9 نمیشه!
        چقد خوب میشه که آدم همه چی رو مو به مو و صحیح توضیح بده

        کامنت

        • mokaram
          مدير تالار اکسل و بانک اطلاعاتی

          • 2011/02/06
          • 1805
          • 74.00

          #5
          دوست عزیز اگه جمع اعداد شما 240 شده باقیمانده این عدد بر 11 عدد 9 میشه و چون از 2 بزرگتر هست باید از عدد 11 کم کنید که حاصل عدد 2 میشه
          در ضمن این ساختار هم حاصل کار بنده نبوده و تا اونجایی که شده سعی شده روان و سلیس توضیح داده بشه اگه قصور بوده بنده عذر خواهی میکنم
          اگه میشه یک بار دیگه سعی کنید شاید تو جمع زدن مشکلی پیش اومده
          در صورت نیاز کد ملیتون را پ . خ کنید تا بررسی بشه
          [CENTER][IMG]http://forum.exceliran.com/signaturepics/sigpic909_10.gif[/IMG]
          [/CENTER]

          کامنت

          • ندا یارمحمدی

            • 2014/11/26
            • 5

            #6
            مرسی از شما الان که فایل تست رو با فرمولهاش دیدم متوجه شدم اشتباهم چی بوده . ممنون که دوباره توضیح دادید

            کامنت

            • alisabet

              • 2011/09/08
              • 159
              • 45.00

              #7
              با این حساب در یک شهر حداکثر به 999999 نفر میتوان کد ملی اختصاص داد درست میگم؟
              Last edited by alisabet; 2014/12/22, 22:55.

              کامنت

              • mokaram
                مدير تالار اکسل و بانک اطلاعاتی

                • 2011/02/06
                • 1805
                • 74.00

                #8
                نوشته اصلی توسط alisabet
                با این حساب در یک شهر حداکثر به 999999 نفر میتوان کد ملی اختصاص داد درست میگم؟
                میشه توضیح بدید چه جوری؟
                [CENTER][IMG]http://forum.exceliran.com/signaturepics/sigpic909_10.gif[/IMG]
                [/CENTER]

                کامنت

                • alisabet

                  • 2011/09/08
                  • 159
                  • 45.00

                  #9
                  نوشته اصلی توسط M_R_M
                  میشه توضیح بدید چه جوری؟
                  مگه شما نفرمودين كه از ده رقم كد ملي 3 رقم اول كد شهر هست و رقم آخر نيز كنترلر است پس با اين حساب ميمونه اون شش رقمي كه كد منحصر بفر د رو تشكيل ميده پس يا يك عدد شش رقمي حداكثر ميشه 999999 كد توليد كرد البته در يك شهر، اگه اينجوري باشه كه خيلي كمه مخصوصا براي شهرهائي كه بالاي يك ميليون جمعيت دارند و تازه زاد و ولد هم ميشه اگه من اشتباه ميگم شما راهنمائي بفرمائيد

                  کامنت

                  • mokaram
                    مدير تالار اکسل و بانک اطلاعاتی

                    • 2011/02/06
                    • 1805
                    • 74.00

                    #10
                    ببینید بسته به شهر مورد نظر تعداد کد ها ی سه رقمی متفاوته
                    مثلا برای تهران مرکز ( شمال و جنوب و شرق و غرب بماند ) فقط 8 تا کد سه رقمی موجوده (001-002-003-004-005-006-007-008) یا برای مشهد 6 تا کد موجوده
                    مطمئناً فکر همه جاشا کردن که به این مرحله از کد دهی رسیدن
                    [CENTER][IMG]http://forum.exceliran.com/signaturepics/sigpic909_10.gif[/IMG]
                    [/CENTER]

                    کامنت

                    • majid_mx4

                      • 2012/06/25
                      • 699

                      #11
                      با سلام

                      ضمن تشکر از زحمات شما و فایل بسیار مفیدتان
                      احتراما در مورد ردیف b15 بنظر میرسد محاسبات تشخیص اشتباه است و یا بنده اشتباه میکنم (البته طبق فرمایشات شما و شاید هم نکته ای هست که متوجه آن نشدم ) چون جواب 7 است و لی رقم آخر آن 4 است و تایید شده ولی طبق محاسبات انجام شده باید خطا بگیرد.
                      شاید بهتر باشد که در ستون g فرمول فعلی به
                      کد:
                      if(value(right(b7,1))=e7,1,0)
                      تغییر کند در صورت اشتباه بودن بنده را اصلاح بفرمایید.
                      با تشکر میر

                      کامنت

                      • mokaram
                        مدير تالار اکسل و بانک اطلاعاتی

                        • 2011/02/06
                        • 1805
                        • 74.00

                        #12
                        بله حق با شماست استاد ممنون از حسن توجه شما
                        از استادی چون شما بیشتر از اینم انتظار میره
                        ( فایل صحیح جایگزین شد)
                        [CENTER][IMG]http://forum.exceliran.com/signaturepics/sigpic909_10.gif[/IMG]
                        [/CENTER]

                        کامنت

                        • majid_mx4

                          • 2012/06/25
                          • 699

                          #13
                          از زحمات و توجه جنابعالی سپاسگزارم

                          کامنت

                          • ~M*E*H*D*I~
                            • 2011/10/19
                            • 4377
                            • 70.00

                            #14
                            فایل پیوست هم فایل جالبیه در این زمینه
                            فایل های پیوست شده
                            [CENTER]
                            [SIGPIC][/SIGPIC]
                            [/CENTER]

                            کامنت

                            • alisabet

                              • 2011/09/08
                              • 159
                              • 45.00

                              #15
                              سلام :

                              من میخواهم رمز ورود به یک شیت protect شده هر کد ملی صحیح باشد چگونه ؟

                              کامنت

                              چند لحظه..