سوال درباره اضافه کردن صفر به سمت چپ اعداد

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • amir_ts

    • 2015/03/17
    • 1247

    #16
    با توجه به فایل ارسالی فایل تغیر داده شده رو ارسال کردم.اگر مشکلی نبود تک حل شده رو بزنید.
    [SIZE=7][B][COLOR=navy][FONT=IranNastaliq]ای برادر تو همه اندیشه ای[/FONT][/COLOR][/B][/SIZE]

    کامنت

    • Ali Parsaei
      مدير تالارتوابع اکسل

      • 2013/11/18
      • 1522
      • 71.67

      #17
      البته دو تا فرمول را مي شود يکي کرد، من فقط در دو ستون نوشتم که بهتر متوجه بشيد، ترکيب آنها (براي خانه A1) ميشود اين:
      کد PHP:
      =MID(IF(LEN(A1)<8;REPT(0;8-LEN(A1))&A1;A1);3;4
      تابع LEN تعداد کاراکتر تايپ شده در داخل يک سلول را مي شمارد.
      تابع REPT يک عبارت را به تعداد مورد نظر ما تکرار مي کند.
      تابع MID در يک سلول از کاراکتر N ام شروع به شمردن کرده و به تعداد X کاراکتر را جدا مي کند. (N و X را ما تعيين مي کنيم)
      عبارت & چند عبارت را با هم ترکيب مي کند
      تابع IF هم که يک تابع شرطي است و مي گويد که اگر شرط فلان برقرار بود عمل "فلان" را انجام بده وگرنه فلان کار ديگر را انجام بده.
      بنابراين ما اول طول A1 را به دست مي آوريم:
      کد PHP:
      LEN(A1
      بعد آن را از هشت کم مي کنيم ببينيم چند کاراکتر کم دارد:
      کد PHP:
      8-LEN(A1
      بعد با تابع REPT به اکسل مي گوييم که عدد صفر را تکرار کن، ولي چند بار تکرار کند؟ به تعداد کمبود کاراکتري که در فوق به دست آورديم ( يعني هشت منهاي (LEN(A1 )
      کد PHP:
      REPT(0;8-LEN(A1)) 
      خوب حالا با عبارت "&" تعداد صفرهاي حاصله فوق را با خود عبارت سل A1 ترکيب مي کنيم تا هشت رقم کامل شود:
      کد PHP:
      REPT(0;8-LEN(A1))&A1 
      حالا نوبت تابع IF است، کل فرمول فوق را داخل تابع IF مي گذاريم، و با تابع IF به اکسل مي گوييم که: اگر طول خانه A1 کوچکتر از هشت بود فرمول به دست آمده بالا را عمل کن وگرنه خود عبارت خانه A1 را به ما برگردان:
      کد PHP:
      IF(LEN(A1)<8;REPT(0;8-LEN(A1))&A1;A1
      نتيجه نهايي فرمول فوق يک عبارت هشت رقمي خواهد بود، اگر عبارت سل A1 هشت رقم باشد که خود سل A1 را بر مي گرداند وگرنه به تعداد لازم صفر به سمت چپ آن اضافه مي کند تا هشت رقم گردد، حال کل فرمول فوق را داخل يک تابع MID مي گذاريم و مي گوييم از حرف سوم آن و به تعداد 4 کاراکتر براي ما جداسازي انجام دهد. خلاص!
      کد PHP:
      =MID(IF(LEN(A1)<8;REPT(0;8-LEN(A1))&A1;A1);3;4
      البته فرض بر اين است که شما عدد بالاتر از 8 رقم نداريد وگرنه بايد يک شرط ديگر هم به فرمول اضافه کرد.
      Last edited by Ali Parsaei; 2016/01/18, 20:39.
      [SIGPIC][/SIGPIC]

      کامنت

      • Hardwxcel

        • 2016/01/06
        • 11

        #18
        مگه توضیح از این بهتر میشه؟ خیلی عالی بود خیلی
        فقط یک عملی جا موند اینکه اون سل که این دستورات نوشته میشه یه دستور ضرب داخل بوده بخوام این دستور با اون دستور که شما فرمودید ترکیب کنم چی میشه؟
        برای بدست آوردن باقیمانده هم فکر کنم یادتون رفت پست شماره 7

        کامنت

        • amir_ts

          • 2015/03/17
          • 1247

          #19
          توضیحات مفصل جناب علي پارسا گرامی جایی برای بحث نزاشته فقط بابت سوال تون ، تو فایل ارسالی به این صورت میشه.

          کد PHP:
          =IF(LEN(K6*K6)<8;0&MID(K6*K6;1;3);MID(K6*K6;1;4)) 
          به جای a1 عملیات ضرب رو قرار بدید که همون a1 حساب میشه.
          [SIZE=7][B][COLOR=navy][FONT=IranNastaliq]ای برادر تو همه اندیشه ای[/FONT][/COLOR][/B][/SIZE]

          کامنت

          • Hardwxcel

            • 2016/01/06
            • 11

            #20
            نوشته اصلی توسط amir_ts
            توضیحات مفصل جناب علي پارسا گرامی جایی برای بحث نزاشته فقط بابت سوال تون ، تو فایل ارسالی به این صورت میشه.

            کد PHP:
            =IF(LEN(K6*K6)<8;0&MID(K6*K6;1;3);MID(K6*K6;1;4)) 
            به جای a1 عملیات ضرب رو قرار بدید که همون a1 حساب میشه.
            100% توضیح جناب پارسا عالی و فوق العاده و ازشون تشکر میکنم
            متوجه نشدین اون 8 عدد از حاصل ضرب 2 عدد بدست میاد یعنی قبلش باید ضرب رو انجام بدم بعدش عمل اضافه کردن صفر رو انجام بدم و جدا کردن عدد داخل یه سل دیگه انجام میشه

            کامنت

            • Ali Parsaei
              مدير تالارتوابع اکسل

              • 2013/11/18
              • 1522
              • 71.67

              #21
              در مورد پست هفت بايد اينطوري فرمول بنويسيد:
              کد PHP:
              =mod((7*3);15
              [SIGPIC][/SIGPIC]

              کامنت

              • Hardwxcel

                • 2016/01/06
                • 11

                #22
                دوستان من تنها یک مشکل دارما الان سه روزه منتظر جواب هستم همه رو یاد گرفتم فقط میخوام تمامش کنم درگیرش هستم فقط میخوام بدونم چطوری دستوری که جناب پارسا گفتن با دستور ضرب در داخل یک سل ترکیب کنم مثلا داخل یک سل دستور a1*b1= رو انجام دادم میخوام همراه همین دستور ضرب، دستور علی پارسا رو ترکیب کنم که جواب بدست آمده از حاصل ضرب با دستور علی پارسا ترکیب کنم که اگه جواب ضرب از 8 رقم کمتر بود بهش به اندازه که حاصل ضرب عدد کم داره صفر اضافه بشم برای این عمل یعنی اضافه کردن صفر که علی پارسا گفت برا ضرب هم دستورشو دارم فقط چطوری داخل یک سل این دو دستور رو ترکیب کنم؟

                کامنت

                • amir_ts

                  • 2015/03/17
                  • 1247

                  #23
                  با سلام
                  این فرمول رو تست کنید .ضرب a1 در b1 که اگر تعداد ارقام حاصل کمتر از 8 بود به تعداد نیاز تا عدد 8 ،صفر اضافه میشود.
                  کد PHP:
                  =IF(LEN(A1*B1)<8;REPT(0;8-LEN(A1*B1))&A1*B1;A1*B1
                  [SIZE=7][B][COLOR=navy][FONT=IranNastaliq]ای برادر تو همه اندیشه ای[/FONT][/COLOR][/B][/SIZE]

                  کامنت

                  • Ali Parsaei
                    مدير تالارتوابع اکسل

                    • 2013/11/18
                    • 1522
                    • 71.67

                    #24
                    البته آقاي امير خان دو بار برايتان توضيح داده اند، ولي فکر کنم خيلي توجيه نشده ايد، با اجازه ايشان من هم يک کم بيشتر توضيح مي دهم،
                    ببينيد اصول کلي اش اين است:
                    فرض کنيد يک فرمول داريم که عملياتي روي محتواي سل a1 انجام مي دهد مثل فرمول زير:
                    کد PHP:
                    =mid(if(len(a1)<8;rept(0;8-len(a1))&a1;a1);3;4
                    حالا فرض کنيم که داخل سل a1 يک فرمول نوشته شده، به عبارتي محتواي خود سل a1 از محاسبات روي چند سل ديگر به دست مي آيد.
                    فرضا" فرمول زير:
                    کد PHP:
                    =mod(b1*c1;d1
                    يعني مقدار سلول a1 طبق فرمول فوق اينگونه به دست آمده: اول سل b1 در c1 ضرب شده و سپس نتيجه تقسيم بر سل d1 شده بعد باقيمانده اين تقسيم در سل a1 درج شده است.
                    حالا مشکل شما اين است که مي خواهيد اين دو تا را با هم ترکيب کنيد، در چنين حالتي بايد هرجا که در فرمول اول به سل a1 اشاره شده به جايش عينا" فرمول نوشته شده در خانه a1 را بنويسيد (البته بدون علامت مساوي) مي شود اينطور:
                    کد PHP:
                    =mid(if(len(mod(b1*c1;d1))<8;rept(0;8-len(mod(b1*c1;d1)))&mod(b1*c1;d1);mod(b1*c1;d1));3;4
                    وقتي اين دو تا را با هم ترکيب مي کنيد ديگر محاسبات ربطي به سلول A1 پيدا نخواهد کرد، آن سلول فقط يک سلول کمکي بوده و حالا مي توانيد پاکش کنيد.
                    [SIGPIC][/SIGPIC]

                    کامنت

                    • Hardwxcel

                      • 2016/01/06
                      • 11

                      #25
                      نوشته اصلی توسط amir_ts
                      با سلام
                      این فرمول رو تست کنید .ضرب a1 در b1 که اگر تعداد ارقام حاصل کمتر از 8 بود به تعداد نیاز تا عدد 8 ،صفر اضافه میشود.
                      کد PHP:
                      =if(len(a1*b1)<8;rept(0;8-len(a1*b1))&a1*b1;a1*b1
                      اون مشکلم حل شد ولی الان میخوام 2 سل متفاوت با دو مقدار متفاوت انجام بدم مقدار صفر رو برمیگردونه از این دستور برا این کار استفاده میکنم :



                      کد PHP:
                      =if(len(b2*c2)<8;rept(0;8-len(b2*c2));b2*c2

                      کامنت

                      • amir_ts

                        • 2015/03/17
                        • 1247

                        #26
                        ولی الان میخوام 2 سل متفاوت با دو مقدار متفاوت انجام بدم مقدار صفر رو برمیگردونه از این دستور برا این کار استفاده میکنم :
                        کد PHP:
                        =if(len(b2*c2)<8;rept(0;8-len(b2*c2));b2*c2
                        با سلام
                        فرمول رو به این صورت بنویسید:
                        کد PHP:
                        =IF(LEN(B2*C2)<8;REPT(0;8-LEN(B2*C2))&B2*C2;B2*C2
                        [SIZE=7][B][COLOR=navy][FONT=IranNastaliq]ای برادر تو همه اندیشه ای[/FONT][/COLOR][/B][/SIZE]

                        کامنت

                        چند لحظه..