مشکل با دستور شرطی تو در تو

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

    • 2016/10/23
    • 7

    مشکل با دستور شرطی تو در تو

    سلام.
    من دارم یک فایل درست میکنم که محتوی بیش از 50 جدوله که برای وارد کردن اطلاعات فرش و عدل بندیه. تا الان خیلی از دستوراتشو نوشتم و کار خوب پیش رفته. اما الان رسیدم به قسمتی که مجبورم برای تعدادی از سلولهام که خلاصه عدل بندی هستن، شرط هایی بذارم که تا 150 تا IF داره و چون IFهای تو در تو زیاد شده، بهم ارور Nesting میده و کد رو قبول نمیکنه. توی نت که تحقیق کردم نوشته بود توی آخرین آپدیت آفیس 2016 تابعی اضافه شده بنام IFS که مشکل IF تو در تو رو حل کرده. من رفتم آخرین آپدیتشو گرفتم اما این تابعو نداره. از طرفی نسخه ای از آفیسم هست بنام Insider که میگن این تابعو داره اما نمیدونم چجوری تهیه ش کنم. چاره من چیه؟ چجوری باید این تابع رو به اکسل اضافه کنم؟ آیا شما راهی میدونید که جایگزین این دستور کنم که این همه IF نوشته نشه؟
    این کد محتوای یکی از سلولای جدول خلاصه عدل بندیمه که توی شرطش میگه اگه توی جدول اول-خونه A8 عدد 1 بود، از خونه دومش یه کاراکتر رو بنداز روی این خونه
    کد:
    =IF(A8=1,LEFT(B8,1),IF(A9=1,LEFT(B9,1),IF(A10=1,LEFT(B10,1),IF(A11=1,LEFT(B11,1),IF(A12=1,LEFT(B12,1),IF(A13=1,LEFT(B13,1),IF(A14=1,LEFT(B14,1),IF(A15=1,LEFT(B15,1),IF(A16=1,LEFT(B16,1),IF(A17=1,LEFT(B17,1),IF(A18=1,LEFT(B18,1),IF(A19=1,LEFT(B19,1),IF(A20=1,LEFT(B20,1),IF(A21=1,LEFT(B21,1),IF(A22=1,LEFT(B22,1),IF(A23=1,LEFT(B23,1),IF(A24=1,LEFT(B24,1),IF(A25=1,LEFT(B25,1),IF(A26=1,LEFT(B26,1),IF(A27=1,LEFT(B27,1),IF(A28=1,LEFT(B28,1),IF(A29=1,LEFT(B29,1),IF(A30=1,LEFT(B30,1),IF(A39=1,LEFT(B39,1),IF(A40=1,LEFT(B40,1),IF(A41=1,LEFT(B41,1),IF(A42=1,LEFT(B42,1),IF(A43=1,LEFT(B43,1),IF(A44=1,LEFT(B44,1),IF(A45=1,LEFT(B45,1),IF(A46=1,LEFT(B46,1),IF(A47=1,LEFT(B47,1),IF(A48=1,LEFT(B48,1),IF(A49=1,LEFT(B49,1),IF(A50=1,LEFT(B50,1),IF(A51=1,LEFT(B51,1),IF(A52=1,LEFT(B52,1),IF(A53=1,LEFT(B53,1),IF(A54=1,LEFT(B54,1),IF(A55=1,LEFT(B55,1),IF(A56=1,LEFT(B56,1),IF(A57=1,LEFT(B57,1),IF(A58=1,LEFT(B58,1),IF(A59=1,LEFT(B59,1),IF(A60=1,LEFT(B60,1),IF(A61=1,LEFT(B61,1),IF(A62=1,LEFT(B62,1),IF(A71=1,LEFT(B71,1),IF(A72=1,LEFT(B72,1),IF(A73=1,LEFT(B73,1)))))))))))))))))))))))))))))))))))))))))))))))))))
  • iranweld

    • 2015/03/29
    • 3341

    #2
    فایل پیوست را بررسی کنید ببنید بدین صورت مد نظر شماست


    کد PHP:
    Sub Worksheet_Change(ByVal Target As Range)

    If 
    Not Intersect(TargetMe.Range("A8:A160,B8:B160")) Is Nothing Then
       
     On Error Resume Next
     
    Z1 
    Sheet1.Cells(Sheet1.Rows.Count"A").End(xlUp).Row

    Range
    ("E3") = ""

    For 8 To 160

     
    If Range("A" I) = 1 Then
     
     Range
    ("E3") = Range("E3") & Left(Range("A" I).Offset(, 1), 1)
     
     
     
    End If
     
     
    Next


    End 
    If

    End Sub 
    فایل های پیوست شده
    Last edited by iranweld; 2016/10/23, 11:18.

    کامنت

    • SSaeed

      • 2016/10/23
      • 7

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

      کامنت

      • SSaeed

        • 2016/10/23
        • 7

        #4
        نوشته اصلی توسط iranweld
        فایل پیوست را بررسی کنید ببنید بدین صورت مد نظر شماست
        کد PHP:
        Sub Worksheet_Change(ByVal Target As Range)
        ... 
        ممنون از شما.
        من این کد رو داخل یک فایل خام اکسل دیگه کپی میکنم و حتی محتوای جدول رو هم کپی میکنم و عددها سر جای خودشون قرار میگیرن اما کار نمیکنه(کلید Alt+F11 میزنم و وارد بخش کد میشم)؛ چه تنظیمی رو باید انجام بدم؟ فایلمو با فرمت xlsm ذخیره میکنم.

        کامنت

        • iranweld

          • 2015/03/29
          • 3341

          #5
          نمونه فایل خود را بصورت زیپ شده ضمیمه سایت کنید.

          کامنت

          • SSaeed

            • 2016/10/23
            • 7

            #6
            نوشته اصلی توسط iranweld
            نمونه فایل خود را بصورت زیپ شده ضمیمه سایت کنید.
            بفرمایید
            فایل های پیوست شده

            کامنت

            • iranweld

              • 2015/03/29
              • 3341

              #7
              کد های موجود در this workbook را به شیت اول منتقل کنید

              Click image for larger version

Name:	Untitled.png
Views:	1
Size:	118.0 کیلو بایت
ID:	130999

              کامنت

              • SSaeed

                • 2016/10/23
                • 7

                #8
                نوشته اصلی توسط iranweld
                کد های موجود در this workbook را به شیت اول منتقل کنید
                ممنون. من برای اینکه عدد عدل هامو از هم جدا کنم ElseIf گذاشتم که بگم اگه توی ستون A ، هر کدوم از اعداد عدل گذاشته شد، عدد ستون Bشو بنویسه توی خونه متناظرش از جدول خلاصه ها. اما بخاطر استفاده زیاد از ElseIf ارور کامپایل میده. برای این چه راه حلی هست؟ فایل پروژه مو پیوست کردم. هنوز کدهاشو کامل نکردم بعضی جاهاش نقص داره.
                یه سؤال دیگم اینه که چرا بعضی از خونه های ستون O از جدول اول FALSE میزنه و ارزش شهری که در ستون G وارد کردمو نمیزنه؟من که یک کد رو برای همشون کپی کردم.
                با تشکر از شما.
                فایل های پیوست شده

                کامنت

                • iranweld

                  • 2015/03/29
                  • 3341

                  #9
                  فعلا بدون در نظر گرفتن دستورات vb ، استفاده از دستور vlookup را ببنید مشکل شما رو حل میکنه؟

                  فرمول در دو جدول اول و دوم اعمال شد.
                  فایل های پیوست شده

                  کامنت

                  • SSaeed

                    • 2016/10/23
                    • 7

                    #10
                    نوشته اصلی توسط iranweld
                    فعلا بدون در نظر گرفتن دستورات vb ، استفاده از دستور vlookup را ببنید مشکل شما رو حل میکنه؟
                    فرمول در دو جدول اول و دوم اعمال شد.
                    بله خیلی عالی. در مورد جدول خلاصه ها هم ممنون میشم کمکم کنید که بجای ElseIfهای زیاد از چه دستوری استفاده کنم.

                    کامنت

                    • iranweld

                      • 2015/03/29
                      • 3341

                      #11
                      جداول اولیه شما بصورت یکپارچه شد از قسمتprint preview ساختار را در پرینیت مشاهده کنید و دیتای فرش به شیت دوم منتقل شد

                      ElseIfها کجا بکار رفته است؟
                      فایل های پیوست شده

                      کامنت

                      • SSaeed

                        • 2016/10/23
                        • 7

                        #12
                        نوشته اصلی توسط iranweld
                        جداول اولیه شما بصورت یکپارچه شد از قسمتprint preview ساختار را در پرینیت مشاهده کنید و دیتای فرش به شیت دوم منتقل شد

                        ElseIfها کجا بکار رفته است؟
                        ElseIfها توی VBA شیت 1 هستند توی فایلی که پیوست کردم
                        جدول خلاصه ها رو باید از نو بسازم که حذف شده؟(با توجه به این که بعد از یکپارچه سازی،آدرس خونه ها تغییر کرده)
                        یه مسئله ای هم که هست اینه که باید جداول همشون با یک اندازه چاپ بشن؛ اما وقتی بصورت یکپارچه هست، آخرین جدول اندازش تغییر میکنه.باید چکار کرد که آخریشون هم اندازه بقیه چاپ بشه حتی اگه نصفش بدون مقدار و خالی بمونه

                        کامنت

                        • iranweld

                          • 2015/03/29
                          • 3341

                          #13
                          برای آخرین جدول چندین ردیف خالی دیگر ایجاد کنید تا یک صفحه آخر در پرینت کامل شود.

                          کامنت

                          چند لحظه..