سوال پیچیده اکسل! کمک فوری لطف!!

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • khoshpayam

    • 2016/09/24
    • 15

    [حل شده] سوال پیچیده اکسل! کمک فوری لطف!!

    سلام،
    دوستان ی سوال فنی و بسیار مهم داشتم.
    من ی جدول دارم که مقادیرش متغیره و هر بار تغییر می کنه. می خواستم بدونم آیا دستور یا تابعی وجود داره که دو یا چند سطر رو بررسی کنه و در صورت تشابه چند آرایه ی اون با هم، سطر های تکراری رو حذف کنه و اون پارامتر تعداد رو با هم جمع کنه.
    مثل شکل زیر:
    تو این شکل می خوام اگر دو تا سطر (یا بیشتر) آرایه های ستون a1 و a2 برابری داشتند رو تبدیل به یک سطر کنه و تعداد a3 اون ها رو با هم جمع کنه.
    ممنون از همتون.

    Click image for larger version

Name:	Untitled-1.jpg
Views:	1
Size:	117.0 کیلو بایت
ID:	145205
    فقط خواهش می کنم راه حلتون رو زودتر بهم بگید.
  • Ali Parsaei
    مدير تالارتوابع اکسل

    • 2013/11/18
    • 1522
    • 71.67

    #2
    سلام،
    با توابع نمي شود سطر يا ستون را حذف کرد، فقط با تابع sumifs مي توانيد در صورتي که مثلا" شرطي در ستون يک و شرط ديگري در ستون دو بر قرار بود جمع مقادير هم ارز آنها در ستون سوم را به دست بياوريد.
    [SIGPIC][/SIGPIC]

    کامنت

    • khoshpayam

      • 2016/09/24
      • 15

      #3
      ممنون مهندس، خوب پس اگه نمیشه با ماکرو یا وی بی یا چیز دیگه ای راه نداره؟

      کامنت

      • khoshpayam

        • 2016/09/24
        • 15

        #4
        دوستان و اساتید من همچنان گیرم! کسی راه حلی نداره؟!

        کامنت

        • rasools13

          • 2017/01/20
          • 360
          • 80.00

          #5
          نوشته اصلی توسط khoshpayam
          سلام،
          دوستان ی سوال فنی و بسیار مهم داشتم.
          من ی جدول دارم که مقادیرش متغیره و هر بار تغییر می کنه. می خواستم بدونم آیا دستور یا تابعی وجود داره که دو یا چند سطر رو بررسی کنه و در صورت تشابه چند آرایه ی اون با هم، سطر های تکراری رو حذف کنه و اون پارامتر تعداد رو با هم جمع کنه.
          مثل شکل زیر:
          تو این شکل می خوام اگر دو تا سطر (یا بیشتر) آرایه های ستون a1 و a2 برابری داشتند رو تبدیل به یک سطر کنه و تعداد a3 اون ها رو با هم جمع کنه.
          ممنون از همتون.

          [ATTACH=CONFIG]13972[/ATTACH]
          فقط خواهش می کنم راه حلتون رو زودتر بهم بگید.
          .
          سلام از ماکروی ذیل میتوانید استفاده کنید... فقط کافیه جدول داده هاتون به فرمت Table به نحوی که در فایل پیوست هست باشه.. موفق باشین
          .
          Click image for larger version

Name:	S7.png
Views:	1
Size:	12.8 کیلو بایت
ID:	131631
          .
          کد PHP:
          Sub Macro1()
          '
          Macro1 Macro
          '

          '
              
          Dim wsh As Worksheet
              Dim col1
          col3iAs Integer
              Set wsh 
          ActiveSheet
              With wsh
          .ListObjects("Table1")
                  For 
          2 To .ListRows.Count Step 1
                      col1 
          = .Range(i2)
                      
          col3 = .Range(i4)
                      For 
          i To .ListRows.Count Step 1
                          
          If col1 = .Range(12Then
                              
          If .Range(i3) = .Range(13Then
                                  
          .Range(i4) = col3 + .Range(14)
                                  
          col3 = .Range(i4)
                                  .
          ListRows(j).Delete
                                  j 
          1
                              End 
          If
                          
          End If
                      
          Next
                  Next
                  
          .Range(21).Select
                  ActiveCell
          .FormulaR1C1 "B1"
                  
          If (.ListRows.Count 1Then
                       Selection
          .AutoFill Destination:=Range("Table1[1]"), Type:=xlFillDefault
                  End 
          If
              
          End With
          End Sub 
          فایل های پیوست شده
          [CENTER][B]بهترین راه ذخیره زمان(یادگیری)،،حل مشکلات دیگران است
          [COLOR=#0000ff]مشکلات دیگران، روزی مشکلات ما هم خواهد شد[/COLOR][/B][COLOR=#ff0000][B][FONT=arial][/FONT][/B][/COLOR]
          [/CENTER]

          کامنت

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

            • 2013/11/18
            • 1522
            • 71.67

            #6
            مقادير جدولتون چطور هر بار تغيير مي کنه؟
            يعني دستي موارد جديد را جايگزين يا پيست مي کنيد؟
            يا اتوماتيک از جايي آپديت مي شه؟
            استفاده از ماکروها معمولا" براي موارد ساده معمول نيست! چون محدوديتهايي ايجاد مي کند، مثلا" بايد فايتان را بافرمتهاي قديمي يا فرمت xlsm ذخيره کنيد و ماکروهاي اکسلتون هم غير فعال نباشد.
            در مورد شما خيلي مشخص نيست که ساختار کارتون چطور است تا بشود يک راه حل ساده پيشنهاد کرد. ولي به نظرم اگر بيشتر توضيح بدهيد خيلي راه حل هاي ساده تري مي توان برايتان يافت.

            [SIGPIC][/SIGPIC]

            کامنت

            • khoshpayam

              • 2016/09/24
              • 15

              #7
              نوشته اصلی توسط علي پارسا
              مقادير جدولتون چطور هر بار تغيير مي کنه؟
              يعني دستي موارد جديد را جايگزين يا پيست مي کنيد؟
              يا اتوماتيک از جايي آپديت مي شه؟
              استفاده از ماکروها معمولا" براي موارد ساده معمول نيست! چون محدوديتهايي ايجاد مي کند، مثلا" بايد فايتان را بافرمتهاي قديمي يا فرمت xlsm ذخيره کنيد و ماکروهاي اکسلتون هم غير فعال نباشد.
              در مورد شما خيلي مشخص نيست که ساختار کارتون چطور است تا بشود يک راه حل ساده پيشنهاد کرد. ولي به نظرم اگر بيشتر توضيح بدهيد خيلي راه حل هاي ساده تري مي توان برايتان يافت.

              اعداد به صورت دستی اضافه میشه. ی جدوله که ی سری اعداد رو داخلش وارد می کنیم.
              ممنون.
              البته راه حل آقا رسول خیلی خوب بود. یک کم با هاش کلنجار برم ببینم دقیقا همونه که می خوام یا نه. ممنون.

              کامنت

              • khoshpayam

                • 2016/09/24
                • 15

                #8
                نوشته اصلی توسط rasools13
                .
                سلام از ماکروی ذیل میتوانید استفاده کنید... فقط کافیه جدول داده هاتون به فرمت Table به نحوی که در فایل پیوست هست باشه.. موفق باشین
                .
                [ATTACH=CONFIG]13977[/ATTACH]
                .
                کد PHP:
                Sub Macro1()
                '
                Macro1 Macro
                '

                '
                    
                Dim wsh As Worksheet
                    Dim col1
                col3iAs Integer
                    Set wsh 
                ActiveSheet
                    With wsh
                .ListObjects("Table1")
                        For 
                2 To .ListRows.Count Step 1
                            col1 
                = .Range(i2)
                            
                col3 = .Range(i4)
                            For 
                i To .ListRows.Count Step 1
                                
                If col1 = .Range(12Then
                                    
                If .Range(i3) = .Range(13Then
                                        
                .Range(i4) = col3 + .Range(14)
                                        
                col3 = .Range(i4)
                                        .
                ListRows(j).Delete
                                        j 
                1
                                    End 
                If
                                
                End If
                            
                Next
                        Next
                        
                .Range(21).Select
                        ActiveCell
                .FormulaR1C1 "B1"
                        
                If (.ListRows.Count 1Then
                             Selection
                .AutoFill Destination:=Range("Table1[1]"), Type:=xlFillDefault
                        End 
                If
                    
                End With
                End Sub 
                آقا رسول ممنون بابت راه حلتون، ولی مشکلی که دارم اینه که وقتی تعداد سطر ها رو زیاد می کنم و ماکرو رو اجرا می کنم هنگ می کنه. ماکرو رو نمیشه برای تعداد بیشتر سطر استفاده کرد؟

                کامنت

                • rasools13

                  • 2017/01/20
                  • 360
                  • 80.00

                  #9
                  نوشته اصلی توسط khoshpayam
                  آقا رسول ممنون بابت راه حلتون، ولی مشکلی که دارم اینه که وقتی تعداد سطر ها رو زیاد می کنم و ماکرو رو اجرا می کنم هنگ می کنه. ماکرو رو نمیشه برای تعداد بیشتر سطر استفاده کرد؟
                  سلام بله میشه خودم تا 2500 سطر استفاده کردم و بدون هیچ مشکلی کار میکنه و حدود 1 دقیقه طول کشید البته سیستم من زیاد قوی نیست وگرنه کمتر طول میکشه
                  در ضمن یک چیزی همانند Prograss Bar درست کردم (تصویر پیوست)که میتونید پیشرفت کار رو در حین اجرا به صورت در صد ببینید.
                  Click image for larger version

Name:	S7.png
Views:	1
Size:	30.8 کیلو بایت
ID:	131635
                  .
                  لطفا ماکروی ذیل رو چایگزین ماکروی قبلی کنید و از فایل پیوست استفاده نمایید.
                  کد PHP:
                  Sub Macro1()
                  '
                  Macro1 Macro
                  '

                  '
                      
                  Dim wsh As Worksheet
                      Dim col1
                  col3ijfAs Integer
                      f 
                  1
                      Set wsh 
                  ActiveSheet
                      With wsh
                  .ListObjects("Table1")
                          For 
                  2 To .ListRows.Count Step 1
                              col1 
                  = .Range(i2)
                              
                  col3 = .Range(i4)
                              For 
                  i To .ListRows.Count Step 1
                                  
                  If col1 = .Range(12Then
                                      
                  If .Range(i3) = .Range(13Then
                                          
                  .Range(i4) = col3 + .Range(14)
                                          
                  col3 = .Range(i4)
                                          .
                  ListRows(j).Delete
                                          j 
                  1
                                          g 
                  1
                                      End 
                  If
                                  
                  End If
                              
                  Next
                              f 
                  1
                              Range
                  ("B3") = (/ (.ListRows.Count g))
                          
                  Next
                          
                  .Range(21).Select
                          ActiveCell
                  .FormulaR1C1 "B1"
                          
                  If (.ListRows.Count 1Then
                               Selection
                  .AutoFill Destination:=Range("Table1[1]"), Type:=xlFillDefault
                          End 
                  If
                      
                  End With
                  End Sub 
                  فایل های پیوست شده
                  [CENTER][B]بهترین راه ذخیره زمان(یادگیری)،،حل مشکلات دیگران است
                  [COLOR=#0000ff]مشکلات دیگران، روزی مشکلات ما هم خواهد شد[/COLOR][/B][COLOR=#ff0000][B][FONT=arial][/FONT][/B][/COLOR]
                  [/CENTER]

                  کامنت

                  چند لحظه..