exceliran-logoexceliran-logoexceliran-logoexceliran-logo
  • صفحه اصلی
    • اخبار
      • تازه‌ها
      • سمینار
      • کلاس
    • پایگاه آموزشی
      • توابع
      • نمودارها
      • ابزارها و تنظیمات
      • برنامه‌نویسی VBA
      • داشبورد و هوش تجاری
      • اکسل و حسابداری
      • معرفی کتاب
      • افزونه‌ها
  • انجمن
    • پرسش و پاسخ
      • سوالات اکسل
      • سوالات اکسس
      • سوالات VBA
    • مطالب آموزشی
      • آموزش اکسل
      • آموزش VBA
    • اکسل در رشته‌های مختلف
      • حسابداری
      • مهندسی صنایع
      • سایر رشته‌ها
    • برنامه‌های کاربردی
      • Add-ins
  • خدمات ما
    • کلاس‌های آموزشی
    • سمینار، همایش و کنفرانس
    • مسابقات مهارت
    • تعیین سطح اکسل
    • انجام پروژه
  • درباره ما
  • تماس با ما

تشخیص صحت کد ملی

  • صفحه نخست
  • وبلاگ
  • پایگاه آموزشی برنامه‌نویسی VBA
  • تشخیص صحت کد ملی
dependent-dropdown-list
ایجاد لیست کشویی وابسته
2018/04/20
مالیات حقوق - tax
محاسبات مالیات حقوق
2018/05/01

تشخیص صحت کد ملی

2018/04/30 60419 Visit
موضوعات
  • برنامه‌نویسی VBA
  • تازه‌ها
  • توابع
برچسب ها
  • استعلام صحت کد ملی
  • استعلام کد ملی
  • اعتبار سنجی کد ملی در اکسل
  • اعتبارسنجی
  • اعتبارسنجی کد ملی
  • الگوریتم
  • الگوریتم صحت کد ملی
  • الگوریتم کد
  • الگوریتم کد ملی
  • تشخیص کد ملی
  • تشخیص کد ملی در اکسل
  • ثبت احوال
  • شماره ملی
  • شهر مربوط به کد ملی
  • صحت سنجی کد ملی
  • صحت سنجی کد ملی در اکسل
  • فرمول محاسبه کد ملی
  • کارت شناسایی ملی
  • کارت ملی
  • کد VBA تشخیص کد ملی
  • کد ملی
  • کد ملی شهرستان ها
  • کد ویژوال بیسیک
کد ملی

کد ملی

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

تشخیص صحت شماره ملی

کارت شناسایی ملی یا کارت ملی در ایران یک کارت هویتی است که به همه ایرانیان بالای ۱۵ سال اختصاص داده می‌شود.

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

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

ساختار:

کد ملی شماره‌ای است ۱۰ رقمی که از سمت چپ سه رقم کد شهرستان محل صدور شناسنامه، شش رقم بعدی کد منحصربه‌فرد برای فرد دارنده شناسنامه در شهرستان محل صدور و رقم آخر آن هم یک رقم کنترل است که از روی ۹ رقم سمت چپ به‌دست می‌آید. برای راستی‌آزمایی کد کافی است از روی ۹ رقم سمت چپ رقم کنترل را محاسبه کرده و برابر بودن آن با آخرین رقم از سمت راست را بررسی کنیم.

اعتبار سنجی:

ثبت احوال کشور در راستای ارائه کارت ملی روشی را برای تولید کدهای ملی استفاده نموده و رابطه‌ای بین رقم‌های شماره ملی برقرار کرده است که برای بررسی کنترل این کد کافی است چند محاسبه ساده عملیاتی و منطقی را انجام دهید.

به منظور بررسی صحت کد ملی، هر یک از ارقام این شماره دارای موقعیت یا ضریب خاص خود بوده که با اعداد ۲ تا ۱۰ نمایش داده می‌شود و به شرح زیر می‌باشد (به عنوان مثال برای کد ملی ۰۹۳۹۶۸۵۷۳۶):

 

برای بررسی این رابطه مراحل زیر را به ترتیب می‌توانید انجام دهید:

۱. در مرحله اول باید بررسی بر روی تعداد کاراکترها را انجام دهید، از آنجایی که در سیستم کد ملی معمولاً قبل از کد تعدادی صفر وجود دارد (رقم اول و رقم دوم از سمت چپ کد ملی ممکن است صفر باشد) و در بسیاری از موارد ممکن است کاربر این صفرها را وارد نکرده باشد و یا نرم افزار این صفرها را ذخیره نکرده باشد بهتر است قبل از هر کاری در صورتی که طول کد بزرگ‌تر مساوی ۸ و کمتر از ۱۰ بود به تعداد لازم (یک تا دو تا صفر) به سمت چپ عدد اضافه کنید.

۲. در مرحله دوم بعد از اطمینان از ۱۰ رقم بودن شماره ملی، ضرایب ۲ الی ۱۰ را در ۹ رقم سمت چپ شماره ملی نظیر به نظیر ضرب کرده و سپس تمامی اعداد را جمع می‌کنیم.

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

مجموع بدست آمده از مرحله دو را بر عدد ۱۱ تقسیم می‌کنیم و باقیمانده آن را محاسبه می‌کنیم. (۵ = ۱۱ / ۲۹۱)

باقیمانده تقسیم برابر ۵ می‌باشد.

حالت اول:

اگر باقیمانده کمتر از ۲ باشد، رقم کنترل ( رقم سمت راست شماره ملی) باید برابر باقیمانده این تقسیم باشد. یعنی یا صفر و یا یک، که در این مثال ۵ می‌باشد و شامل حالت اول نمی‌گردد پس باید حالت دوم را مد نظر قرار داد.

حالت دوم:

اگر عدد باقیمانده تقسیم بزرگتر مساوی ۲ باشد عدد ۱۱ را منهای باقیمانده تقسیم مرحله قبل می‌کنیم، حال باید عدد حاصل شده برابر رقم کنترل(رقم سمت راست کد ملی) باشد.

برای این مثال: ۶ = ۵ – ۱۱ بوده پس باید رقم کنترلی کد ملی برابر ۶ باشد که نتیجه می‌گیریم شماره ملی صحیح است.

در صورتی که یکی از این دو حالت را نداشته باشیم شماره ملی صحیح نمی‌باشد.

نکته: لازم به ذکر است کدهای ملی که همه ارقام آنها مثل هم باشند معتبر نیستند.

بررسی اعتبار‌سنجی شماره ملی در اکسل:

جهت بررسی اینکه آیا شماره ملی وارد شده معتبر است یا خیر از الگوریتم صحت شماره ملی بهره می‌بریم. در اینجا با دو روش این بررسی را انجام می‌دهیم.

۱. روش اول: فرمول‌نویسی با استفاده از توابع در اکسل:

در روش اول می‌توان برای تک‌تک مراحل فوق جهت پیاده‌سازی و بررسی اعتبار سنجی کد ملی در نرم‌افزار اکسل تابع تعریف نمود تا صحت کد ملی بررسی گردد. جهت این کار برای مراحل زیر می‌توانید از فرمول‌های پیش‌فرض اکسل استفاده نمایید:

۱. شمارش تعداد کاراکترها یک سلول تابع LEN

۲. جدا کردن کاراکترها از یک رشته MID

۳. بررسی شرطی حالت‌های مختلف IF

۴. باقیمانده یک تقسیم MOD

نمونه محاسبات با کمک توابع در اکسل:

=IFERROR(IF(AND(LEN($G$7)=10,AND(LEFT($G$7,10)<>REPT(ROW(1:9),10)),OR(AND(MOD(SUM(MID($G$7,ROW(1:9),1)*(11-ROW(1:9))),11)<2,--RIGHT($G$7)=MOD(SUM(MID($G$7,ROW(1:9),1)*(11-ROW(1:9))),11)),--RIGHT($G$7)=(11-MOD(SUM(MID($G$7,ROW(1:9),1)*(11-ROW(1:9))),11)))),TRUE,FALSE),FALSE)

۲. روش دوم: کدنویسی در ویژوال بیسیک (VBA):

در روش دوم شما می‌توانید مراحل بالا را در قالب کدنویسی ویژوال بیسیک در محیط اکسل نیز انجام دهید.

نمونه محاسبات با کمک VBA:

Function ISMELLICODE(CodeMelli As String) As Boolean
' Code written by: Excel Iran Team - Amir Ghasemiyan
Dim first_number As Integer, num As Integer, counter As Integer, s As Integer, r As Integer, i As Integer
If IsNumeric(CodeMelli) And Len(CodeMelli) = 10 Then
   first_number = Left(CodeMelli, 1)
   For i = 1 To 9 
      num = Mid(CodeMelli, i, 1)
      If num = first_number Then counter = counter + 1 
      s = s + num * (11 - i)
   Next i
   r = s Mod 11
   If r > 1 Then r = 11 - r
   If r = Val(Right(CodeMelli, 1)) And counter < 9 Then ISMELLICODE = True
End If
End Function

در فایل پیوست در دو شیت جداگانه با دو روش فرمول نویسی در خود محیط اکسل و کدنویسی در VBA قادر خواهید بود صحت کد ملی وارد شده را بررسی کرده و نیز با توجه به بانک اطلاعاتی کد ملی شهرهای مختلف ایران، مشخص کنید کد ملی وارد شده مربوط به کدام شهر از کدام استان کشور عزیزمان ایران می‌باشد.

لینک‌های مرتبط

تولید کد ملی با ساختار صحیح

Download “تشخیص صحت کد ملی” Melli-Code-Checker.xlsm – 15289 بار دانلود شده است – 169,55 کیلوبایت

منابع:

[1] wikipedia

سعید علی‌محمدی
سعید علی‌محمدی
از سال ۱۳۸۵ اکسل را به صورت حرفه‌ای شروع کردم. تالیف اولین کتاب اکسل پیشرفته، مبدع برگزاری مسابقات مهارت در اکسل در کشور ، تنها برگزار کننده سمینارهای تخصصی نرم‌افزار اکسل در ایران، قسمتی از فعالیت‌های من در طی این سال‌ها می‌باشد. همیشه معتقدم یاد داشتن یک تخصص کوچک به صورت حرفه‌ای خیلی بهتر از یاد داشتن ۱۰ تخصص به صورت عمومی می‌باشد.

مطالب مرتبط

ترکیب سلول‌ها در اکسل
30144 Visit
2021/01/09

ترکیب سلول‌ها در اکسل


نوشتن ارقام به میلیون
249185 Visit
2020/12/21

نوشتن ارقام به میلیون ریال


time without colon
7760 Visit

درج زمان بدون نوشتن علامت دو نقطه

2020/11/17

درج زمان بدون دو نقطه


rounding_functoins - توابع روند کردن
124154 Visit
2018/10/25

روش‌های گرد کردن در اکسل


دیدگاهتان را بنویسید لغو پاسخ

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

25 دیدگاه ها

  1. بخشی گفت:
    2018/09/05 در 08:47

    سلام دوست عزیز این فایلی که ارسال کردید با کد وی بی خطا می ده
    کد ملی زیر رو در برنامه تون چک کنید:
    ۲۵۹۵۳۰۷۸۱۹
    با وی بی میگه اشتباهه در صورتی که با فرمول نویسی میگه درسته

    پاسخ
    • امیر قاسمیان گفت:
      2018/09/05 در 09:04

      سلام دوست عزیز
      سپاس از توجه شما. بله متاسفانه در کد اشتباهی رخ داده بود. به کمک شما مشکل رفع شد. مشکل در خط ۱۲ بود.

      پاسخ
      • آرش گفت:
        2022/12/21 در 11:51

        سلام مهندس ممکنه لطف کنی بفرمایید کجای خط 12 را اطلاح کینم ؟

        پاسخ
        • امیر قاسمیان گفت:
          2024/03/10 در 14:39

          کل خط ۱۲ دوست عزیز

          پاسخ
  2. محمد زرین گفت:
    2018/12/14 در 22:48

    سلام
    ممنون خیلی عالی بود
    فعلا که درست کار می کند

    پاسخ
  3. vahid3822 گفت:
    2019/01/08 در 12:54

    با سلام خدمت حضار و اساتید محترم
    این کد که محبت کردین فقط در برنامه شارسالی شما کار میکنه وقتی به جای دیگه کپی و با اصلاح جایگذاری میشه جواب نمیده مثلا میخوام در شیت personels سل B5 جایگذاری کنم. لطفا راهنمائی بفرمائید

    پاسخ
    • امیر قاسمیان گفت:
      2019/06/22 در 09:43

      سلام دوست عزیز
      شما باید کدهای مربوطه را در فایل مقصد کپی بفرمایید. برای اینکار با کلید ترکیبی Alt+ F11 وارد محیط ویژوال بیسیک شوید. در پنجره project explorer در پوشه modules این فایل یک ماژول وجود دارد. آن را با درگ کردن به فایل مقصد خود انتقال دهید.

      پاسخ
  4. محمد گفت:
    2019/05/27 در 10:13

    درود بر شما
    لطفا اگر فایل کد های ملی که با۲۷۴و ۲۷۵ شروع می شود را دارید ارسال بفرمایید با تقدیر از زحمات شما

    پاسخ
  5. ali گفت:
    2019/06/06 در 09:02

    با سلام و روز بخیر

    اموزش و توضیحات شما بسیار کامل و خوب و دقیق بود.

    با تشکر فراواااااااان.

    پاسخ
  6. پریسا گفت:
    2019/09/11 در 08:44

    با سلام و وقت بخیر من اگر در اکسل بخوام صحت سنجی شماره موبایل رو انجام دهم امکان پذیر هست؟ یه ستون دارم که شماره موبایل داره میخام اگه فرمت صحیحی نداره و اشتباهه برای من مشخص کنه …شما میتونین کمکم کنید

    پاسخ
    • امیر قاسمیان گفت:
      2019/09/14 در 15:57

      سلام دوست عزیز
      فقط میتوان مشخص کرد آیا تعداد ارقام صحیح هست یا نه و آیا شماره با ۰۹ شروع شده یا نه

      برای دریافت پاسخ بهتر و کاملتر لطفا به انجمن مراجعه بفرمایید
      https://forum.exceliran.com/forumdisplay.php/125-%D9%BE%D8%B1%D8%B3%D8%B4-%D9%88-%D9%BE%D8%A7%D8%B3%D8%AE-Questions-and-Answers

      پاسخ
  7. ناسا گفت:
    2020/04/07 در 22:21

    برای کد ملی تهران خطا میده. اونایی که اولش دوتا صفر دارن.

    پاسخ
    • امیر قاسمیان گفت:
      2020/04/25 در 08:12

      برای همه کدهای ملی با دو صفر خطا میده؟

      پاسخ
      • شریف گفت:
        2020/08/24 در 14:41

        فرمت سلول مربوطه باید به صورت TEXT باشد تا صفر اول کد ملی را حذف نکند

        پاسخ
  8. نوید گفت:
    2020/12/08 در 20:28

    =IFERROR(IF(AND(LEN($G$7)=10,AND(LEFT($G$7,10)REPT(ROW(1:9),10)),OR(AND(MOD(SUM(MID($G$7,ROW(1:9),1)*(11-ROW(1:9))),11)<2,–RIGHT($G$7)=MOD(SUM(MID($G$7,ROW(1:9),1)*(11-ROW(1:9))),11)),–RIGHT($G$7)=(11-MOD(SUM(MID($G$7,ROW(1:9),1)*(11-ROW(1:9))),11)))),TRUE,FALSE),FALSE)
    این کد رو کجای اکسل باید وارد کنیم؟ تو ولیدیشن نمیشه

    پاسخ
    • امیر قاسمیان گفت:
      2020/12/08 در 22:56

      سلام دوست عزیز
      داخل یک سلول
      به فایل پیوست مراجعه بفرمایید

      پاسخ
  9. صادق علینیا گفت:
    2021/01/15 در 22:38

    سلام عرض ادب. تشکر از اینکه بدون منت و هزینه به همه کمک کردید . جسارتا چون
    تو نرم افزار تحت اکسلی که دارم ازش استفاده کردم . آیا کاملا درست کار میکنه و هیچ خطایی نمیده؟

    پاسخ
    • امیر قاسمیان گفت:
      2021/01/16 در 21:17

      سلام دوست عزیز
      تا اینجا که موردی نبوده. ان شالله که در آینده هم خطایی نخواهد داشت

      پاسخ
  10. عرفان پهلوان زاده گفت:
    2021/02/06 در 16:43

    با سلام، ممنون از سایت خوبتون.
    فرض کنیم که من 50 تا پرسنلی دارم که کد ملی هاشون در اکسل و در ردیف هایی نوشته شده است. میخواهم این کد را جلوی هر سلولی کپی کنم و نتیجه رو برای همه ببینم.
    آیا امکانش هست فرمول رو تغییر بدهید که مثل فرمول های ساده تر به ازای هر ردیف نتیجه بر گرداند؟

    پاسخ
    • امیر قاسمیان گفت:
      2021/02/08 در 08:19

      سلام دوست عزیز
      شما کافیه کدهای ویژوال بیسیکی که ارائه شده را داخل یک ماژول کپی کنید و در سلول مورد نظرتون (در محیط اکسل) از فرمول زیر استفاده کنید:
      =ISMELLICODE(A1)

      پاسخ
  11. شمشیری گفت:
    2021/09/29 در 21:37

    ذکات علم نشر آن است
    دمت گرم آقای قاسمیان عزیز

    پاسخ
  12. مداحی گفت:
    2021/10/25 در 13:29

    سلام
    بسیار عالی بود
    ممنونم

    پاسخ
  13. حمید نصری گفت:
    2023/02/27 در 11:32

    سلام مهندس عزیز
    از راهنمائی ارزشمندتون خیلی استفاده کردم ممنون

    پاسخ
  14. امین گفت:
    2024/08/06 در 15:40

    سلام. ممنون استاد. در مورد شناسه ملی شرکت ها چطور؟

    پاسخ
    • امیر قاسمیان گفت:
      2024/08/21 در 13:55

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

      پاسخ

جستجو

اکسل را از اینجا شروع کنید كلاس هاي آموزشي سمينارهاي اكسل ايران
تمامی حقوق مادی و معنوی سایت برای جامعه اکسل ایرانیان محفوظ می باشد.