مرتب شدن اعداد بعد از Sort کردن ستون دیگری

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

    • 2011/04/29
    • 384
    • 67.00

    [حل شده] مرتب شدن اعداد بعد از Sort کردن ستون دیگری

    با سلام خدمت دوستان

    من یه جدول دارم حاوی 2 ستون .

    ستون اول ردیف هستش که از شماره 1 تا n....(که هر روز سطر جدید به جدول اضافه میشه)
    ستون دوم تاریخ هستش .

    من توسط یه ماکرو، وقتی ستون تاریخ رو بر اساس تاریخ از کوچیک به بزرگ Sort میکنم اعداد ستون ردیف بهم میریزه .
    میخوام توی همون ماکرو کدی اضافه کنم که شماره ردیف ستون اول رو بعد از sort تاریخ ، مجدد از 1 مرتب کنه .
    فایل های پیوست شده
  • Amir Ghasemiyan

    • 2013/09/20
    • 4598
    • 100.00

    #2
    سلام دوست عزيز
    شما در ستون رديف از اين فرمول استفاده كنيد. نيازي نيست كدنويسي vba انجام بشه

    کد:
    =IF([@تاريخ]<>"",COUNTA(Table2[[#Headers],[تاريخ]]:[@تاريخ])-1,"")

    کامنت

    • a.dal65

      • 2011/04/29
      • 384
      • 67.00

      #3
      امیر جان ممنون ولی

      من یه یوزر فرم دارم که کاربر توسط اون تاریخ رودر شیت ثبت میکنه و از طریق همون یوزر فرم عدد میده به ستون اول .
      و وقتی کاربر تاریخ قبل تری رو وارد میکنه میخوام بتونه sort کنه و اعداد هم مجدد از 1 مرتب بشه .
      برای همین نمیتونم از کدی که زحمتشو کشیدی استفاده کنم .

      کامنت

      • Amir Ghasemiyan

        • 2013/09/20
        • 4598
        • 100.00

        #4
        نوشته اصلی توسط a.dal65
        امیر جان ممنون ولی

        من یه یوزر فرم دارم که کاربر توسط اون تاریخ رودر شیت ثبت میکنه و از طریق همون یوزر فرم عدد میده به ستون اول .
        و وقتی کاربر تاریخ قبل تری رو وارد میکنه میخوام بتونه sort کنه و اعداد هم مجدد از 1 مرتب بشه .
        برای همین نمیتونم از کدی که زحمتشو کشیدی استفاده کنم .
        اينطور كه من فهميدم شمار رديف هيچ كاربردي براتون نداره. چرا شماره رديف رو كاربر وارد كنه؟ اگر تكراري وارد كرد چي؟ اصلا وقتي شما سورت رو تغيير ميديد و ميخواهيد شماره رديف معادل اون اطلاعات رو تغيير بديد وجودش بي معنيه

        چيزي كه شما ميخوايد امكانپذيره اما الان بحث منطقي بودن اين كار هست.

        کامنت

        • iranweld

          • 2015/03/29
          • 3341

          #5
          با سلام

          کدهای ذیل را تست کنید

          کد PHP:
          Sub Macro4()

              
          ActiveWorkbook.Worksheets("Sheet1").ListObjects("Table2").Sort.SortFields.Clear
              ActiveWorkbook
          .Worksheets("Sheet1").ListObjects("Table2").Sort.SortFields.Add _
                  Key
          :=Range("Table2[[#All],[ÊÇÑíÎ]]"), SortOn:=xlSortOnValuesOrder:= _
                  xlAscending
          DataOption:=xlSortNormal
              With ActiveWorkbook
          .Worksheets("Sheet1").ListObjects("Table2").Sort
                  
          .Header xlYes
                  
          .MatchCase False
                  
          .Orientation xlTopToBottom
                  
          .SortMethod xlPinYin
                  
          .Apply
              End With
              
             nextrow 
          Cells(Rows.Count"b").End(xlUp).Row

          For 2 To nextrow

              Range
          ("A" I) = 1
              
              Next
              
          End Sub 
          فایل های پیوست شده

          کامنت

          • a.dal65

            • 2011/04/29
            • 384
            • 67.00

            #6
            ممنون

            امیر جان کاربر وارد نمیکنه . یوزر فرم خودش عدد میده.

            من میخوام وقتی کاربر تاریخی وارد کرد که قدیمی تر بود مثلا سال 1365 یوزر فرم میاد اونو تو آخرین سطر جدول وارد میکنه.

            حالا کاربر میخواد اون بره اولین سطر
            میاد بر اساس تاریخ sort میکنه بلطبع شماره ردیف هم بهم میریزه
            خودم یه چیزی کپی شده ای پیدا کردم گذاشتم الان اونم کار کرد (البته تو userform گذاشتم)

            کد:
            For B = 1 To 11
            Controls("textbox" & B) = ""
            Next
            For i = 2 To Range("a65536").End(3).Row
            Cells(i, 1).Value = i - 1
            Next
            فقط کار میکنه

            باز هم ممنون از شما و جناب iranweld

            کامنت

            چند لحظه..