سورت کردن بخشی از داد ه ها

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

    • 2012/05/03
    • 142
    • 35.00

    [حل شده] سورت کردن بخشی از داد ه ها

    با سلام به دوستان و اساتید گرامی .فایلی داریم که تعداد زیادی اطلاعات بصورت روزانه وارد میشه . شماره فیشها متغیر و تاریخ ثابت است . چیزی که احتیاج داریم اینه که در این شیت شماره فیشها از کمتر به بیشتر و بر اساس تاریخ همانروز سورت بشن.مشکل من اینه که اگه از سورت دیتای خود اکسل استفاده کنم ترتیب تاریخ به هم میریزه و فیشها را بدون در نظر گرفتن تاریخی که من میخوام کلی سورت میکنه . اگه اساتید بزرگوار راهنماپی بفرماین ممنون میشم
    فایل های پیوست شده
    [b][color=#6B8E23]تو خشنود باشی و ما رستگار[/color][/b]
  • iranweld

    • 2015/03/29
    • 3341

    #2
    با سلام

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

    کد PHP:
    Sub test()

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

    For 2 To y

    1

    If Range("b" i).Value <> Range("b" j).Value Then

    t

    Rows
    (":" i).Select

        ActiveWorkbook
    .Worksheets("Sheet1").Sort.SortFields.Clear
        ActiveWorkbook
    .Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A" i), _
            SortOn
    :=xlSortOnValuesOrder:=xlAscendingDataOption:=xlSortNormal
        With ActiveWorkbook
    .Worksheets("Sheet1").Sort
            
    .SetRange Range(":" i)
            .
    Header xlNo
            
    .MatchCase False
            
    .Orientation xlTopToBottom
            
    .SortMethod xlPinYin
            
    .Apply
        End With
        
        Range
    ("A2").Select

    End 
    If

    1

    If Range("b" i).Value <> Range("b" j).Value Then

    0

    End 
    If

    Next i


    End Sub 
    فایل های پیوست شده
    Last edited by iranweld; 2015/08/24, 11:49.

    کامنت

    • khakzad

      • 2010/03/17
      • 2034
      • 85.00

      #3
      دوست عزیز
      نیاز به کد ندارید
      سورت خود اکسل درسته
      شما اول که بر اساس تاریخ سورت کردید. بعد روی گزینه sort کلیک کنید، یک جدول باز میشه.add level رو بزنید و حالا سطح بعدی رو شماره فیش انتخاب کنید.
      اینطوری اول تاریخ ها مرتب میشن. و به ازای تاریخ های یکسان، کد فیش ها مرتب میشن.
      موفق باشید
      [CENTER][B][COLOR=#008000][SIZE=3]محصولات و جزوات آموزش تخصصی [URL="https://excelpedia.net/"]اکسل[/URL] در:

      [URL="https://excelpedia.net/category/excel-functions/"]برترین مرجع تخصصی پارسی اکسل[/URL]
      [URL="http://www.exceliran.com/shop/"]جامعه اكسل ايرانيان: فروشگاه[/URL][/SIZE][/COLOR][/B]
      :wcom:

      [B][URL="https://excelpedia.net/"]آموزش اکسل تخصصی[/URL] و [URL="https://excelpedia.net/excel-ninja/"]پیشرفته[/URL] - [URL="https://excelpedia.net/"]تهران[/URL][/B]
      [EMAIL="h.khakzad@yahoo.com"]h.khakzad@yahoo.com[/EMAIL]
      [/CENTER]

      کامنت

      • sohrabahmadi

        • 2012/05/03
        • 142
        • 35.00

        #4
        با تشکر از دوستان عزیز بخاطر راهنمائیشون .مواردی که دوستان بزگوار راهنمایی فرمودن رو تا حدودی آشنایی دارم ولی فکر کنم واضح عرض نکردم.مسئله من اینه که مثلاً از سلو a1 تا a13 مختص فیشهایی هست که به تاریخ 94/05/25 ثبت شده اند.یعنی همه فیشهایی که تاریخ مشترک دارند پشت سر هم ثبت شده اند ولی خود تاریخ پشت سر هم نیست.مثلاً فیشهای تاریخ 94/05/28 ممکنه قبل از 94/05/27 ثبت بشن که با راهکار پیشنهادی عزیزان کل این تاریخها جابجا میشن.یعنی شماره ستون برام مهمه که فیشهای یک تاریخ معین در ستونهای معینی باقی بمونند و بقیه ستونها بر اساس شماره فیش سورت بشن.
        فایل های پیوست شده
        [b][color=#6B8E23]تو خشنود باشی و ما رستگار[/color][/b]

        کامنت

        • iranweld

          • 2015/03/29
          • 3341

          #5
          با سلام
          فایل پیوست را ملاحظه بفرمایید بدین صورت مد نظر شماست
          فایل های پیوست شده

          کامنت

          • sohrabahmadi

            • 2012/05/03
            • 142
            • 35.00

            #6
            مثلاً من اطلاعات 50 تا فیش رو به تاریخ امروز وارد کردم تو شیتی که اطلاعات زیادی از قبل وجود داشت و من فقط میخوام اطلاعات امروز سورت بشن و کاری به بقیه اطلاعات نداشته باشه.امیدوارم منظورمو رسونده باشم.با تشکر از لطف دوستان
            [b][color=#6B8E23]تو خشنود باشی و ما رستگار[/color][/b]

            کامنت

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

              • 2013/11/18
              • 1522
              • 71.67

              #7
              سلام،
              اگر يک ستون کمکي ايجاد کنيد اشکالي ندارد؟
              چيزي که به ذهنم مي رسد يک ستون کمکي است که مثلا" مي شود اسمش را گذاشت ستون شماره ترتيب ثبت، مثلا" اولين روزي که اطلاعات را وارد مي کنيد در ستون کمکي جلوي تمام سطرهاي وارده عدد يک را بنويسيد، روز دوم عدد دو را جلو تمام سطرها بنويسيد و .... همين طور روز به روز يک رقم اضافه کنيد، بعد همانطور که خانم خاکزاد فرمودند در چند مرحله سورت را انجام دهيد، اول همين ستون کمکي سورت مي شود و بعد بقيه ....
              البته شايد روش تر و تميز تري هم باشد، اين روش همين جوري عجله اي به فکرم رسيد.
              [SIGPIC][/SIGPIC]

              کامنت

              • sohrabahmadi

                • 2012/05/03
                • 142
                • 35.00

                #8
                با سلام و تشکر از دوستان و جناب پارسا اتفاقاً مسئله همان ستون کمکی است که کار رو یه کم سخت میکنه .ولی به این ترتیب که مثلاً ستون 25 تا 75 صرفاً مختص قبض هایی است که در تاریخ 94/05/25 ثبت شده اند. واگه بخوام کل شیت رو سرت کنم این نظم به هم میریزه.
                [b][color=#6B8E23]تو خشنود باشی و ما رستگار[/color][/b]

                کامنت

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

                  • 2014/06/22
                  • 1496

                  #9
                  با سلام
                  من که تست کردم مشکلی بوجود نیومد
                  طبق عکس زیر اینکار رو انجام دادید؟

                  Click image for larger version

Name:	Sort.png
Views:	1
Size:	100.0 کیلو بایت
ID:	126933
                  [CENTER]
                  [SIGPIC][/SIGPIC]
                  [/CENTER]

                  کامنت

                  • mohammad_ashooryan

                    • 2014/08/13
                    • 480
                    • 80.00

                    #10
                    نوشته اصلی توسط sohrabahmadi
                    مثلاً من اطلاعات 50 تا فیش رو به تاریخ امروز وارد کردم تو شیتی که اطلاعات زیادی از قبل وجود داشت و من فقط میخوام اطلاعات امروز سورت بشن و کاری به بقیه اطلاعات نداشته باشه.امیدوارم منظورمو رسونده باشم.با تشکر از لطف دوستان
                    سلام
                    من براي اينكار ابتدا يه ستون به اسم فيش هاي مرتب شده كنار داده هاتون ايجاد كردم و سپس داده هاي شما رو به جدول تبديل كردم. (با ctrl+T).
                    سپس براي محدوده هاي شماره فيش و تاريخ يه محدوده ديناميكي(پويا) با استفاده از offset توي name manager نوشتم.
                    و با استفاده از توابع small , countif در كنار توابع rept و if و rows به صورت آرايه اي فرمولي نوشتم كه اينكار رو انجام بده.

                    کد PHP:
                    =REPT(0;6-LEN(SMALL((IF(tarikh=B2;fish*1;""));COUNTIF($B$2:B2;B2))))&SMALL((IF(tarikh=B2;fish*1;""));COUNTIF($B$2:B2;B2)) 
                    با اضافه كردن شماره فيش و تاريخ جديد فرمول به صورت اتوماتيك به سلول پاييني كپي ميشه و عمل سورت انجام ميشه.
                    من براي نمونه دو تا داده جديد اضافه كردم.

                    ببينيد همين منظورتونه؟
                    سوالي بود در خدمتم.
                    Book1 (45).xlsx

                    کامنت

                    • sohrabahmadi

                      • 2012/05/03
                      • 142
                      • 35.00

                      #11
                      با تشکر از جناب محمد عزیز.بله دقیقا منظور من همین بود.منتها امکانش هست که اینکارو با حلقه و بدون اضافه کردن ستون انجام داد؟ .با در نظر گرفتن اینکه اطلاعات فیش بیشتر از اونی باشه که توی فایل گذاشتم.مثل شماره فیش تاریخ مبلغ گیرنده کد و ... که بر اساس همون شرایطی که عرض کردم سورت بشن؟
                      [b][color=#6B8E23]تو خشنود باشی و ما رستگار[/color][/b]

                      کامنت

                      • sohrabahmadi

                        • 2012/05/03
                        • 142
                        • 35.00

                        #12
                        مثلا توی یه تکست باکس تاریخ رو بدیم و فیشهای اون تاریخ رو بر اساس شماره فیش مرتب کنه؟
                        [b][color=#6B8E23]تو خشنود باشی و ما رستگار[/color][/b]

                        کامنت

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

                          • 2013/11/18
                          • 1522
                          • 71.67

                          #13
                          نوشته اصلی توسط sohrabahmadi
                          با سلام و تشکر از دوستان و جناب پارسا اتفاقاً مسئله همان ستون کمکی است که کار رو یه کم سخت میکنه .ولی به این ترتیب که مثلاً ستون 25 تا 75 صرفاً مختص قبض هایی است که در تاریخ 94/05/25 ثبت شده اند. واگه بخوام کل شیت رو سرت کنم این نظم به هم میریزه.
                          منظورتان سطر 25 تا 75 است؟
                          فکر کنم يا من درست متوجه منظور شما نشده ام يا شما متوجه منظور من نشده ايد! قاعدتا" نبايد مشکلي پيش بيايد
                          در اصل شما اصلا" به ستون تاريخ ها کاري نداريد، فقط شماره ها مي خواهيد سورت شود آن هم تکه به تکه يعني مطابق فايلتان هر رنگ شماره هايش در همان محدوده رنگ سورت شود و به بقيه کاري نداشته باشد.
                          يک فايل ضميمه مي کنم، طبق عکسهاي داخل فايل اول ستون "ترتيب ثبت" را سورت مي کنيد و بعد از همان کليد سورت روي ترتيب ثبت دوباره custom sort را انتخاب مي کنيد و طبق عکس يک مورد جديد جهت ستون شماره فيش ها بهش add مي کنيد.
                          اگر با ستون کمکي مشکل داريد يک کار ديگر هم مي شود انجام دهيد، البته انجام روزانه آن شايد اعصاب خورد کن باشد و آن اينکه در پايان هر روز سطر پاياني اطلاعات روز قبل را انتخاب و فيلتر را اعمال و سپس سورت را براي رديفهاي زيري انجام دهيد و بعد دوباره فيلتر را برداريد، البته اگر از قبل اطلاعات در فايل داشته باشيد امکان اين کار نيست! (ببخشيد، اين روش خيلي غير حرفه اي بود، ولي بالاخره اين هم روشي است!)

                          [ATTACH=CONFIG]8230[/ATTACH]
                          فایل های پیوست شده
                          [SIGPIC][/SIGPIC]

                          کامنت

                          • sohrabahmadi

                            • 2012/05/03
                            • 142
                            • 35.00

                            #14
                            ممنون از لطفتون جناب پارسا البته جوابی که اقا محمد فرمودن منظور من همون بود منتها عرض کردم روش ایشون را آیا میشه با استفاده از حلقه انجام داد؟مثلاً توی یه تکست باکس تاریخ نوشته بشه و بر اساس همون تاریخ ، ستون ها به ترتیب شماره فیش سورت بشن.
                            [b][color=#6B8E23]تو خشنود باشی و ما رستگار[/color][/b]

                            کامنت

                            • sohrabahmadi

                              • 2012/05/03
                              • 142
                              • 35.00

                              #15
                              مثل فایل زیر
                              فایل های پیوست شده
                              [b][color=#6B8E23]تو خشنود باشی و ما رستگار[/color][/b]

                              کامنت

                              چند لحظه..