صحت سنجی کد ملی در اکسل

9,041
2 دیدگاه
صحت سنجی کد ملی در اکسل

امروزه اکثر افراد و کسب و کارها به واسطه کار و فعالیت شغلی شان نیاز به جمع آوری و اخذ اطلاعات از مشتریان و مراجعه کنندگان دارند. یکی از مهمترین این اطلاعات، کدملی افراد است که اطمینان از صحت و درستی آن اهمیت زیادی دارد. در این مطلب قصد داریم نحوه صحت سنجی کد ملی را در اکسل به دو روش بیان کنیم.

ساختار کلی صحت سنجی کد ملی

ساختار کلی صحت سنجی کد ملی به صورت ذیل است برای مثال کد ملی 3245950231 را در نظر بگیرید:

عدد اول از سمت راست (در این مثال عدد 1)، رقم کنترلی است و به صورت ذیل کنترل می گردد

1- اعداد 2 تا 10 را نظیر به نظیر در 9 رقم دیگر کد ملی (از سمت راست شروع کنید) ضرب کرده و با هم جمع نمایید

 (3*10)+(2*9)+(4*8)+(5*7)+(9*6)+(5*5)+(0*4)+(2*3)+(1*2)=206

2- نتیجه مرحله قبل را بر عدد 11 تقسم کنید.

206/11 => R = 8

3- اگر باقیمانده تقسیم کمتر از 2 است، رقم کنترلی باید برابر باقیمانده تقسیم باشد

4 – اگر باقیمانده تقسیم بزرگتر مساوی 2 است، رقم کنترلی باید برابر حاصل 11 منهای باقیمانده تقسیم باشد.

چون باقیمانده تقسیم برابر 8 است باید رقم کنترلی برابر 3 = 8 – 11 باشد. بنابراین فرمت کد ملی در این مثال صحیح نیست.

در ادامه نحوه صحت سنجی کد ملی در اکسل به دو روش استفاده از توابع و کدنویسی بیان می شود

صحت سنجی کد ملی با استفاده از توابع در اکسل

فرمول ذیل را در یک سلول کپی کرده و بجای کلمه Meli، آدرس سلول حاوی کد ملی را وارد کنید.

=(IF(MOD(SUMPRODUCT(VALUE(MID(Meli,{1,2,3,4,5,6,7,8,9},1)),{10,9,8,7,6,5,4,3,2}),11)>=2,

        11-MOD(SUMPRODUCT(VALUE(MID(Meli,{1,2,3,4,5,6,7,8,9},1)),{10,9,8,7,6,5,4,3,2}),11),

        MOD(SUMPRODUCT(VALUE(MID(Meli,{1,2,3,4,5,6,7,8,9},1)),{10,9,8,7,6,5,4,3,2}),11)

         )=VALUE(RIGHT(Meli,1))


در صورتی که فرمت کد ملی صحیح باشد خروجی فرمول مقدار TRUE و در غیر این صورت FALSE خواهد بود

صحت سنجی کد ملی با استفاده از کد نویسی در اکسل

با استفاده از کلید های Alt + F11 وارد محیط VBA شده و یک ماژول Module جدید ایجاد کرده و کدهای ذیل را در آن کپی نمایید. یک تابع جدید به نام CodeMeli به توابع اکسل اضافه می شود که ورودی این تابع کد ملی یا آدرس سلول حاوی کد ملی است (برای آشنایی با نحوه اضافه کردن توابع جدید به اکسل اینجا را ببینید)

Sheet1.ir

Option Explicit
Function CodeMeli(ByVal ID As Double) As Boolean
    '============ S h e e t 1 . i r ========================
    CodeMeli = False
    If Len(Trim(ID)) = 10 Then
        Dim Ctrl_Num, ChkStr, Chk_Num, i As Integer
        Ctrl_Num = CInt(Right(ID, 1))
        For i = 1 To 9
            ChkStr = ChkStr + (CInt(Mid(ID, i, 1)) * (11 - i))
        Next i
        '
        Chk_Num = ChkStr Mod 11
        '
        If Chk_Num > 1 Then Chk_Num = 11 - Chk_Num
        '
        If Chk_Num = Ctrl_Num Then CodeMeli = True
    End If
End Function

Sheet1.ir

 

در صورت صحت فرمت کد ملی خروجی تابع مقدار TRUE و در غیر این صورت FALSE خواهد بود. در ادامه می توانید فایل اکسل مثال مورد بررسی در این مطلب را دریافت نمایید

تعداد دانلود : 2428

مطالب مرتبط :

2 دیدگاه. پیغام بگذارید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این قسمت نباید خالی باشد
این قسمت نباید خالی باشد
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

حداکثر حجم مجاز فایل : 5 مگابایت فرمت های مجاز : jpeg - jpg - png - pdf- xls - xlsx - xlsb - xlsm - txt - csv - zip - rar فایل ها را اینجا بکشید

keyboard_arrow_up