2 روش تشخیص صحت کد ملی و شناسه ملی در اکسل
تشخیص صحت کد ملی و شناسه ملی یکی از مواردی است که برای حسابداران اهمیت بالایی دارد چرا که اگر اطلاعات غلط داشته باشند زمان ارسال گزارشات فصلی با خطا مواجه خواهند شد البته ممکنه بجز حسابداران افراد دیگری هم از صحت اطلاعات مشتریان خود مطمئن شوند.
برای این منظور راهکارهای مختلفی وجود دارد، راهکارهایی از قبیل سایت هایی که بصورت آنلاین صحت کد ملی را چک می کنند یا فایل ها و نرم افزارهایی که اینکار را برای شما انجام می دهند.
به عنوان مثال یکی از این نرم افزارها ، نرم افزار نحوه تشخیص صحت کد ملی است که قبلا در این پست معرفی کردیم.
قبل از اینکه به روش های کنترل صحت کد ملی یا شناسه ملی بپردازیم یکی از سایت هایی که در این زمینه می تواند به شما کمک نماید را معرفی خواهم کرد .
سامانه جامع کارگزاران : این سایت در صورتی که یک کد ملی و تاریخ تولد داشته باشید می تواند برای شما اطلاعات نام و نام خانوادگی فرد را نمایش دهد.
اما تاکنون نرم افزاری که بتواند صحت کد ملی و شناسه ملی را بصورت همزمان بررسی کند معرفی نشده است. در این پست میخواهیم دو روش برای اینکار به شما معرفی کنم.
روش اول : کنترل صحت کد ملی یا شناسه ملی با توابع اکسل:
در این مطلب قصد تشریح فرمول نوشته شده رو ندارم و فقط فرمولی که خودم نوشتم رو در اختیارتون قرار میدم و مسلما میشه به روش های دیگه ای هم فرمول نویسی انجام داد اما دو مسأله رو مد نظر قرار دادم، اول اینکه روی همه ورژن های اکسل قابلیت پیاده سازی داشته باشه و دوم اینکه در کوتاه ترین حالت ممکن نوشته بشه.
فرمول تشخیص صحت کد ملی در اکسل
=IF(ISBLANK(A1),"",IF(LEN(A1)=10,IF(OR(AND(MOD(SUMPRODUCT(1*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),{10;9;8;7;6;5;4;3;2;0}),11)<2,--RIGHT(A1,1)=MOD(SUMPRODUCT(1*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),{10;9;8;7;6;5;4;3;2;0}),11)),(11-MOD(SUMPRODUCT(1*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),{10;9;8;7;6;5;4;3;2;0}),11))=--RIGHT(A1,1)),"Correct Meli","Wrong Meli"),IF(LEN(A1)=11,IF(IF(MOD(SUMPRODUCT(1*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),{29;27;23;19;17;29;27;23;19;247;0})+460,11)=10,0,MOD(SUMPRODUCT(1*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),{29;27;23;19;17;29;27;23;19;247;0})+460,11))=--RIGHT(A1,1),"Correct National ID","Wrong National ID"),"Wrong length")))
اما برای اینکه این فرمول طولانی رو راحت تر در اختیار داشته باشید و هرجایی بتونید ازش استفاده کنید اونو به افزونه پروفسور اکسل اضافه کردم که میتونید براحتی با زدن یک گزینه این فرمول رو بنویسید.
برای اینکار کافیه ابتدا افزونه پروفسور اکسل رو از طریق لینک زیر تهیه کنید و پس از نصب اون، ابتدا سلولی که میخواهید نتیجه درون آن قرار بگیرد رد انتخاب کنید و در تب Professor Excel گزینه Function رو بزنید و در انتهای لیست گزینه PROFEXMeliCheck رو بزنید و سلول حاوی کد ملی را انتخاب کنید.
روش دوم : کنترل صحت کد ملی یا شناسه ملی با پاورکوئری:
اما روش دوم استفاده از پاورکوئری هست که برای این منظور نیز تابع اختصاصی به زبان M نوشتم که براحتی می توانید در پاورکوئری ازش استفاده کنید.
در لینک زیر می توانید تابع پاورکوئری مربوطه رو ببینید.
let
fn=(MeliNumber as text)as text=>
let
a=Text.Length(MeliNumber),
b=List.Transform({0..8},each (10-_)*Number.From(Text.At(MeliNumber,_))),
c=Number.Mod(List.Sum(b),11),
d={29,27,23,19,17,29,27,23,19,247},
e=List.Transform({0..9},each d{_}*Number.From(Text.At(MeliNumber,_))),
f=Number.Mod(List.Sum(e)+460,11),
g=if f=10 then 0 else f,
check=Number.From(Text.End(MeliNumber,1)),
h=if MeliNumber="" or MeliNumber=null or Text.Select(MeliNumber,{"0".."9"})<>MeliNumber then ""
else if a=10 then
if c<2 and check=c or check+c=11 then
"Correct Meli" else "Wrong Meli" else if a=11 then
if g=check then "Correct National ID" else "Wrong National ID" else "Wrong length"
in
h,
fnType=type function(
MeliNumber as (type text meta[
Documentation.FieldCaption="کد ملی/شناسه ملی",
Documentation.SampleValues={"0652259460"}
])
) as list
meta
[
Documentation.Name="MeliCheck",
Documentation.Description ="کنترل صحت کد ملی یا شناسه ملی",
Documentation.Category = " Text ",
Documentation.Source = " www.arshad-hesabdar.ir ",
Documentation.Version = " 1.0 ",
Documentation.Author = " Mahmoud Bani Asadi: www.Arshad-Hesabdar.ir . ",
Documentation.Examples=
{[
Description="این تابع می تواند صحت کد ملی یا شناسه ملی وارد شده را چک کند
",
Code="MeliCheck(""0652259460"")",
Result="""Wrong Meli"""
]}
]
in
Value.ReplaceType(fn,fnType)
و یا از طریق لینک زیر فایل اکسل آماده مربوطه رو که حاوی فرمول فوق هست رو دانلود کنید.
درباره محمود بنی اسدی (مدیر سایت)
فارغ التحصیل کارشناسی ارشد حسابداری، ده سال سابقه تدریس اکسل در سطوح مختلف از قبیل فرمول نویسی، ابزارهای هوش تجاری، ترفندها و ... ، نویسنده شش مقاله در سطح ملی و ISI
نوشتههای بیشتر از محمود بنی اسدی (مدیر سایت)1 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام دانشجوی ترم 1 آی تی هستم در واحدی مشغول بکارم کالای ورودی را به تاریخ روز دریافت با بارکد وار شیت اکسل کردم هر روز تعدا دمختلف در روزهای بعد کالای مرجوعی را وارد ستون بعد میکنم میخام بارکد مرجوعی روبروی بارکد ورودی قرار بگیرد میشه کمکم کنید