تفکیک نفرات بر اساس نام شهر

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • parsaparsnejad
    • 2012/04/17
    • 4

    [حل شده] تفکیک نفرات بر اساس نام شهر

    با سلام
    جدولی شامل لیست اشخاص و شهری که در آن هستند داریم، میخواهم برای هر شهر شیت جداگانه ای بسازم و اسامی مربوط به آن شهر را در آن لیست کنم. چگونه میتوان این کار را انجام داد؟
  • Amir Ghasemiyan

    • 2013/09/20
    • 4600
    • 100.00

    #2
    نوشته اصلی توسط parsaparsnejad
    با سلام
    جدولی شامل لیست اشخاص و شهری که در آن هستند داریم، میخواهم برای هر شهر شیت جداگانه ای بسازم و اسامی مربوط به آن شهر را در آن لیست کنم. چگونه میتوان این کار را انجام داد؟
    سلام دوست عزیز
    دیتابیستون (جدولتون) رو فیلتر کنین. بعد تو هر بار فیلتر کردن یکی از شهر ها رو انتخاب کنین. حالا محدوده فیلتر شده رو انتخاب کنین و کپی کنین ببرین تو شیت دلخواهتون پیست کنین
    اگر بخواین میشه با کدنویسی هم اینکار رو کرد ولی اگه تعداد شهرهاتون زیاد نیست همین روشی که گفتم رو انجام بدین

    کامنت

    • parsaparsnejad
      • 2012/04/17
      • 4

      #3
      مشکل اینجاست که لیست اصلی مدام آپدیت میشه و باید شیتها آپدیت باشه

      کامنت

      • amir_ts

        • 2015/03/17
        • 1247

        #4
        با سلام
        چنانچه نمونه فابل اصلی رو قرار بدید سریعتر به نتیجه میرسید.
        [SIZE=7][B][COLOR=navy][FONT=IranNastaliq]ای برادر تو همه اندیشه ای[/FONT][/COLOR][/B][/SIZE]

        کامنت

        • Amir Ghasemiyan

          • 2013/09/20
          • 4600
          • 100.00

          #5
          نوشته اصلی توسط parsaparsnejad
          مشکل اینجاست که لیست اصلی مدام آپدیت میشه و باید شیتها آپدیت باشه
          لیست چطوری آپدیت میشه؟ ینی از جایی دیتاها فراخوانی میشه؟ مثلا از اینترنت. یا اینکه مثلا داده ها هر روز دستی به لیست اضافه میشن؟

          کامنت

          • iranweld

            • 2015/03/29
            • 3341

            #6
            اولین خواسته شما ایجاد شیت بر اساس نام شهر

            برای مورد دوم نمونه فایل قرار بدید

            کد PHP:
            Private Sub CommandButton1_Click()

            Application.ScreenUpdating = False

            Dim i
            , Z1 As Integer, blnFound As Boolean, xx As String

            Dim list1 
            As New Collection

            Set list1 
            = Nothing

            y 
            = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row

            On Error Resume Next


            For i = 2 To y

            xx 
            = Range("A" & i)

            If 
            Len(xx) > 0 Then

            list1
            .Add xx, CStr(xx)

            End If

            Next
             
                 
                With ThisWorkbook
                
                 
            For j = 1 To list1.Count
                 
                 blnFound 
            = False
                 
                    
            For i = 1 To .Sheets.Count
                  
                        
            If .Sheets(i).Name = list1.Item(j) Then
                        
                            blnFound 
            = True
                           
                        Sheets
            (i).Move Before:=Sheets(j + 1)
                        
            End If
                        
                    
            Next i
                    
                    
                    
            If blnFound = False Then
                    
                        
            .Sheets.Add after:=Sheets(Sheets.Count)
                        
            With ActiveSheet
                            
            .Name = list1.Item(j)
                        
            End With
                        
                            End 
            If
                    
                    
            Next j
                    
                
                End With
                
                
            '===== sheets sort ==========='
                
                 
            With ThisWorkbook
                
                
            For i = 2 To .Sheets.Count
                
                
            For j = 1 To list1.Count
                  
                        
            If .Sheets(i).Name = list1.Item(j) Then
                        
                                           
                        Sheets
            (i).Move Before:=Sheets(j + 1)
                        
                        
            End If
                        
                        
            Next j
                        
                    Next i
                    
                     End With
                     
              
            '===== sheets sort ==========='
              
              
              
            Application.ScreenUpdating = True
                
                Sheet1
            .Select
                
                
                
            End Sub 
            فایل های پیوست شده
            Last edited by iranweld; 2016/07/31, 12:45.

            کامنت

            • parsaparsnejad
              • 2012/04/17
              • 4

              #7
              این فایل نمونه؛ البته اطلاعات نفرات بیشتر هست ولی شهرها ثابت هستند
              لیست نفرات بصورت سی دی به دست ما میرسه
              فایل های پیوست شده

              کامنت

              • iranweld

                • 2015/03/29
                • 3341

                #8
                با سلام

                فایل پیوست را ملاحظه کنید.


                کد PHP:
                Private Sub CommandButton1_Click()

                Application.ScreenUpdating = False

                Dim i
                , Z1 As Integer, blnFound As Boolean, xx As String

                Dim list1 
                As New Collection

                Set list1 
                = Nothing

                y 
                = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row

                On Error Resume Next


                For i = 2 To y

                xx 
                = Range("C" & i)

                If 
                Len(xx) > 0 Then

                list1
                .Add xx, CStr(xx)

                End If

                Next
                 
                     
                    With ThisWorkbook
                    
                     
                For J = 1 To list1.Count
                     
                     blnFound 
                = False
                     
                        
                For i = 1 To .Sheets.Count
                      
                            
                If .Sheets(i).Name = list1.Item(J) Then
                            
                                blnFound 
                = True
                               
                            Sheets
                (i).Move Before:=Sheets(J + 1)
                            
                End If
                            
                        
                Next i
                        
                        
                        
                If blnFound = False Then
                        
                            
                .Sheets.Add after:=Sheets(Sheets.Count)
                            
                With ActiveSheet
                                
                .Name = list1.Item(J)
                                
                               
                ActiveSheet.DisplayRightToLeft = True
                               
                            End With
                            
                                End 
                If
                        
                        
                Next J
                        
                    
                    End With
                    
                    
                '===== sheets sort ==========='
                    
                     
                With ThisWorkbook
                    
                    
                For i = 1 To .Sheets.Count
                    
                    
                For J = 1 To list1.Count
                      
                            
                If .Sheets(i).Name = list1.Item(J) Then
                            
                                blnFound 
                = True
                               
                            Sheets
                (i).Move Before:=Sheets(J + 1)
                            
                            
                End If
                            
                            
                Next J
                            
                        Next i
                        
                         End With
                         
                  
                '===== sheets sort END ==========='
                  
                  
                  '==== DATA COPY TO SHEET ============='
                  
                    
                    
                Dim list2 As New Collection

                y 
                = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row


                For J = 2 To Sheets.Count

                Set list2 
                = Nothing

                For i = 2 To y

                xx 
                = Range("C" & i)

                If 
                xx = Sheets(J).Name Then

                list2
                .Add Range("C" & i).Row

                End 
                If

                Next

                K 
                = 2

                YY 
                = Sheets(J).Name

                Range
                ("A1:C1").Copy Destination:=Sheets(YY).Range("A1")

                For 
                i = 1 To list1.Count

                Range
                ("A" & list2.Item(i) & ":C" & list2.Item(i)).Copy Destination:=Sheets(YY).Range("A" & K)


                K = K + 1

                Next


                Next

                Sheet1
                .Select
                    
                   Application
                .ScreenUpdating = True
                    
                End Sub 
                فایل های پیوست شده

                کامنت

                چند لحظه..