کد گذاری خود کار

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • mohammadreza.h

    • 2015/05/28
    • 9

    کد گذاری خود کار

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

    ممنون میشم اگه زود تر پاسخ داده بشه
    فایل های پیوست شده
  • generalsamad
    مدير تالار توابع

    • 2014/06/22
    • 1496

    #2
    با سلام
    میشه ستون r رو دستی قرار بدید که فرمولش رو بنویسیم؟
    [CENTER]
    [SIGPIC][/SIGPIC]
    [/CENTER]

    کامنت

    • generalsamad
      مدير تالار توابع

      • 2014/06/22
      • 1496

      #3
      واسه تولید کد از این دستور میشه استفاده کرد
      کد PHP:
      =IF(Q2<>Q1;MAX(R$1:R1)+1;R1
      البته همونطور که گفتم دستی ستون R رو وارد کنید که فرمول صحیحش رو وارد کنیم
      واسه تولید صفرهای قبلش هم میتونید از فرمت سل ستون R رو به این صورت تغییر بدید
      Ctrl+1 رو زده از سربرگ Number گزینه Custom رو انتخاب کنید
      و توی فیلد مربوطه اینو وارد کنید
      کد PHP:
      00000 
      [CENTER]
      [SIGPIC][/SIGPIC]
      [/CENTER]

      کامنت

      • generalsamad
        مدير تالار توابع

        • 2014/06/22
        • 1496

        #4
        احتمالا اینطور میخواهید
        کد PHP:
        =if(countif(q$2:q$16;q2)=1;max(r$1:r1)+1;r1
        فرمول باید ویرایش بشه (جواب اشتباهه)
        فایل ضمیمه گردید
        فایل های پیوست شده
        Last edited by generalsamad; 2015/05/28, 13:49.
        [CENTER]
        [SIGPIC][/SIGPIC]
        [/CENTER]

        کامنت

        • generalsamad
          مدير تالار توابع

          • 2014/06/22
          • 1496

          #5
          با سلام
          فرمول دوم قرار داده شد
          ببینید منظورتون همین بوده؟
          جواب سلولهای سبز رنگ میباشد
          کد PHP:
          =if(countif(q$2:q$16;q2)=1;max(s$1:s1)+1;if(countif(q$1:q1;q2)=0;s1+1;s1)) 
          فایل ضمیمه گردید
          توجه: باتوجه به اینکه میشه روی ستونهای Q عملیات ریاضی انجام داد با Countif میشه حل کرد
          اگه سلولها متنی بودند باید از Counta به همراه IF استفاده کنید
          فایل های پیوست شده
          Last edited by generalsamad; 2015/05/28, 14:27.
          [CENTER]
          [SIGPIC][/SIGPIC]
          [/CENTER]

          کامنت

          • mohammadreza.h

            • 2015/05/28
            • 9

            #6
            نوشته اصلی توسط generalsamad
            با سلام
            فرمول دوم قرار داده شد
            ببینید منظورتون همین بوده؟
            جواب سلولهای سبز رنگ میباشد
            کد PHP:
            =if(countif(q$2:q$16;q2)=1;max(s$1:s1)+1;if(countif(q$1:q1;q2)=0;s1+1;s1)) 
            فایل ضمیمه گردید
            توجه: باتوجه به اینکه میشه روی ستونهای Q عملیات ریاضی انجام داد با Countif میشه حل کرد
            اگه سلولها متنی بودند باید از Counta به همراه IF استفاده کنید
            با سلام و عذرخواهی از اینکه نت م قطع شده بود
            با نهایت سپاس از شما
            فایل رو نگاه کردم این آخری تقریبا کامل بود ولی ایرادی که داره اینه
            ببینید روند اجرای برنامه ای که شما نوشتید داره از ابتدا به ترتیب یکی یکی کد گذاری میکنه و وقتی که به یه رکورد تکراری میرسه فقط کد آخر تولید شده (5 کاراکتری)رو تکرار میکنه
            شما فرض کنید ما یه رکوردی داریم در سطر 20 وارد میکنیم که با رکورد مثلا سوم یکی هستش - ما میخواییم کد همون رو (کد 5 رقمی ساخته شده در سطر سوم)تو این سطر هم ثبت کنه و دوباره در رکورد بعدی روند اجرای برنامه از نو گرفته بشه و از آخرین و بزرگترین رکورد تولید شده به بعد یک یکی اضافه کنه
            ممنون میشم اگه پاسخ بدید

            کامنت

            • generalsamad
              مدير تالار توابع

              • 2014/06/22
              • 1496

              #7
              اگه میشه همین فرآیند رو به صورتی دستی روی فایلتون اعمال کنید تا منظورتون رو بهتر متوجه بشیم
              [CENTER]
              [SIGPIC][/SIGPIC]
              [/CENTER]

              کامنت

              • mohammadreza.h

                • 2015/05/28
                • 9

                #8
                نوشته اصلی توسط generalsamad
                اگه میشه همین فرآیند رو به صورتی دستی روی فایلتون اعمال کنید تا منظورتون رو بهتر متوجه بشیم
                در فایل پیوست و در ستون t قرار دادم براتون
                ستون r روند اجرای برنامه خودتونه
                فایل های پیوست شده

                کامنت

                • iranweld

                  • 2015/03/29
                  • 3341

                  #9
                  با سلام
                  فایل پیوست را بررسی بفرمایید ببینید همین مد نظر شماست؟
                  فایل های پیوست شده

                  کامنت

                  • generalsamad
                    مدير تالار توابع

                    • 2014/06/22
                    • 1496

                    #10
                    با سلام و تشکر
                    این خواستشون نیست
                    [CENTER]
                    [SIGPIC][/SIGPIC]
                    [/CENTER]

                    کامنت

                    • mohammadreza.h

                      • 2015/05/28
                      • 9

                      #11
                      نوشته اصلی توسط iranweld
                      با سلام
                      فایل پیوست را بررسی بفرمایید ببینید همین مد نظر شماست؟
                      با تشکر از شما
                      نه متاسفانه

                      کامنت

                      • generalsamad
                        مدير تالار توابع

                        • 2014/06/22
                        • 1496

                        #12
                        با سلام
                        این فرمول رو قرار بدید مشکلتون حل میشه
                        کد PHP:
                        =if(countif(q$2:q$16;q2)=1;max(r$1:r1)+1;if(countif(q$1:q1;q2)=0;r1+1;vlookup(q2;q$2:r$16;2;0))) 
                        فایل ضمیمه گردید
                        فایل های پیوست شده
                        [CENTER]
                        [SIGPIC][/SIGPIC]
                        [/CENTER]

                        کامنت

                        • mohammadreza.h

                          • 2015/05/28
                          • 9

                          #13
                          نوشته اصلی توسط generalsamad
                          با سلام
                          این فرمول رو قرار بدید مشکلتون حل میشه
                          کد PHP:
                          =if(countif(q$2:q$16;q2)=1;max(r$1:r1)+1;if(countif(q$1:q1;q2)=0;r1+1;vlookup(q2;q$2:r$16;2;0))) 

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

                          کامنت

                          • generalsamad
                            مدير تالار توابع

                            • 2014/06/22
                            • 1496

                            #14
                            این کد کوتاهتره که زحمتش رو استاد بحرانی کشیده
                            دستش درد نکنه
                            کد PHP:
                            =if(countif($q$2:q2;q2)>1;vlookup(q2;q:r;2;0);max($r$1:r1)+1

                            فایل ضمیمه گردید
                            فایل های پیوست شده
                            [CENTER]
                            [SIGPIC][/SIGPIC]
                            [/CENTER]

                            کامنت

                            چند لحظه..