PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کد گذاری خود کار



mohammadreza.h
2015/05/28, 12:18
با سلام به همه دوستان و مهندسان محترم سایت
یه سوالی داشتم راجع به سیستم کد گذاری خود کار
در توضیح خدمتتون عرض کنم که فرض کنید یک ستون داریم که با یک مکانیزم خاصی توش اعداد و کدهایی داره تولید میشه(مثلا ستون Q)
ما با این ستون کاری نداریم
ما میخواییم در کنار این ستون ستون دیگه ای رو قرار بدیم(مثلا ستون R) که قراره کدهایی از 00001 تا 99999 به ترتیب یکی یکی ایجاد کنه
یعنی اولیش 00001 دومیش 00002 و ...
تولید کنه و تو هر مرحله که میاد پایین یکی بهش اضافه بشه ولی با بررسی یک شرط
شرط هم اینه که قبل از اینکه کد رو به اون رکورد تخصیص بده بیاد و اون ستونی که بهتون گفتم که کد داره توش تولید میشه و ما باهاش کاری نداریم(همون ستون Q) بررسی کنه که با قبلیاش یکی نباشه(compare کنه)
حالا اگه با یکی از قبلیاش برابر بود کد 5 رقمی رو که ما جلوی اون براش تولید کردیم رو جلوش قرار بده
اگه برابر نبود از آخرین کد 5 رقمی که زدیم تولید شده دوباره شروع کنه یکی یکی اضافه کنه بیاد پایین(مثلا آخریش 10024 بوده و به دلیل تکرار دچار تاخیر در کانتر انداختن شده حالا بعدیش رو در صورت غیر تکراری بودن با رکوردای قبلی از 10025 شروع کنه)
جهت آسان شدن و درک مسئله من فایل شبیه سازی شده رو براتون پیوست میکنم

ممنون میشم اگه زود تر پاسخ داده بشه

generalsamad
2015/05/28, 12:24
با سلام
میشه ستون r رو دستی قرار بدید که فرمولش رو بنویسیم؟

generalsamad
2015/05/28, 12:32
واسه تولید کد از این دستور میشه استفاده کرد


=IF(Q2<>Q1;MAX(R$1:R1)+1;R1)


البته همونطور که گفتم دستی ستون R رو وارد کنید که فرمول صحیحش رو وارد کنیم
واسه تولید صفرهای قبلش هم میتونید از فرمت سل ستون R رو به این صورت تغییر بدید
Ctrl+1 رو زده از سربرگ Number گزینه Custom رو انتخاب کنید
و توی فیلد مربوطه اینو وارد کنید


00000

generalsamad
2015/05/28, 12:44
احتمالا اینطور میخواهید


=if(countif(q$2:q$16;q2)=1;max(r$1:r1)+1;r1)


فرمول باید ویرایش بشه (جواب اشتباهه)
فایل ضمیمه گردید

generalsamad
2015/05/28, 13:17
با سلام
فرمول دوم قرار داده شد
ببینید منظورتون همین بوده؟
جواب سلولهای سبز رنگ میباشد


=if(countif(q$2:q$16;q2)=1;max(s$1:s1)+1;if(counti f(q$1:q1;q2)=0;s1+1;s1))


فایل ضمیمه گردید
توجه: باتوجه به اینکه میشه روی ستونهای Q عملیات ریاضی انجام داد با Countif میشه حل کرد
اگه سلولها متنی بودند باید از Counta به همراه IF استفاده کنید

mohammadreza.h
2015/05/28, 21:43
با سلام
فرمول دوم قرار داده شد
ببینید منظورتون همین بوده؟
جواب سلولهای سبز رنگ میباشد


=if(countif(q$2:q$16;q2)=1;max(s$1:s1)+1;if(counti f(q$1:q1;q2)=0;s1+1;s1))


فایل ضمیمه گردید
توجه: باتوجه به اینکه میشه روی ستونهای Q عملیات ریاضی انجام داد با Countif میشه حل کرد
اگه سلولها متنی بودند باید از Counta به همراه IF استفاده کنید

با سلام و عذرخواهی از اینکه نت م قطع شده بود
با نهایت سپاس از شما
فایل رو نگاه کردم این آخری تقریبا کامل بود ولی ایرادی که داره اینه
ببینید روند اجرای برنامه ای که شما نوشتید داره از ابتدا به ترتیب یکی یکی کد گذاری میکنه و وقتی که به یه رکورد تکراری میرسه فقط کد آخر تولید شده (5 کاراکتری)رو تکرار میکنه
شما فرض کنید ما یه رکوردی داریم در سطر 20 وارد میکنیم که با رکورد مثلا سوم یکی هستش - ما میخواییم کد همون رو (کد 5 رقمی ساخته شده در سطر سوم)تو این سطر هم ثبت کنه و دوباره در رکورد بعدی روند اجرای برنامه از نو گرفته بشه و از آخرین و بزرگترین رکورد تولید شده به بعد یک یکی اضافه کنه
ممنون میشم اگه پاسخ بدید

generalsamad
2015/05/28, 21:45
اگه میشه همین فرآیند رو به صورتی دستی روی فایلتون اعمال کنید تا منظورتون رو بهتر متوجه بشیم

mohammadreza.h
2015/05/28, 22:12
اگه میشه همین فرآیند رو به صورتی دستی روی فایلتون اعمال کنید تا منظورتون رو بهتر متوجه بشیم

در فایل پیوست و در ستون t قرار دادم براتون
ستون r روند اجرای برنامه خودتونه

iranweld
2015/05/28, 22:30
با سلام
فایل پیوست را بررسی بفرمایید ببینید همین مد نظر شماست؟

generalsamad
2015/05/28, 22:33
با سلام و تشکر
این خواستشون نیست

mohammadreza.h
2015/05/28, 23:04
با سلام
فایل پیوست را بررسی بفرمایید ببینید همین مد نظر شماست؟
با تشکر از شما
نه متاسفانه

generalsamad
2015/05/28, 23:40
با سلام
این فرمول رو قرار بدید مشکلتون حل میشه


=if(countif(q$2:q$16;q2)=1;max(r$1:r1)+1;if(counti f(q$1:q1;q2)=0;r1+1;vlookup(q2;q$2:r$16;2;0)))


فایل ضمیمه گردید

mohammadreza.h
2015/05/29, 00:29
با سلام
این فرمول رو قرار بدید مشکلتون حل میشه


=if(countif(q$2:q$16;q2)=1;max(r$1:r1)+1;if(counti f(q$1:q1;q2)=0;r1+1;vlookup(q2;q$2:r$16;2;0)))



فایل ضمیمه گردید
بسیار بسیار ممنونم ازتون
بله حل شد
خیلی لطف کردید

generalsamad
2015/05/29, 00:46
این کد کوتاهتره که زحمتش رو استاد بحرانی کشیده
دستش درد نکنه


=if(countif($q$2:q2;q2)>1;vlookup(q2;q:r;2;0);max($r$1:r1)+1)



فایل ضمیمه گردید