پيدا كردن شماره سطر n امين كد ، از يك ستون كه كدهاي هم شكل داردند !؟

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • misammisam
    مدير تالار حسابداری و اکسل

    • 2014/04/04
    • 892
    • 64.00

    پيدا كردن شماره سطر n امين كد ، از يك ستون كه كدهاي هم شكل داردند !؟

    با سلام
    يه سوال به ظاهر ساده برام پيش اومده كه دو روزه منو درگير خودش كرده !!
    فرض كنيد كه در يه ستون يكسري كد داريم كه اين كدها يونيك نيست و تكراريم توش هست ، حالا من ميخوام شماره رديف كدهاي مثلا 2001 رو پيدا كنم ، با اين فرمول ميشه كد اول رو پيدا كرد
    کد PHP:
    code Columns("D:D").Find(What:="2001").Row 
    كه شماره رديف اولين كد 2001 رو ميريزه در متقير code ، حالا اگه بخوام شماره رديف كدهاي دوم يا سوم الي آخر رو پيدا كنم بايد چيكار كنم.
    [CENTER][SIGPIC][/SIGPIC]
    [/CENTER]
    [CENTER][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][INDENT]
    [CENTER][SIZE=3][URL="https://affstat.adro.co/click/adf04053-f8a6-439a-9ac4-e6a7e6f4b455"][B]اينجا كليك نكنيا ![/B][/URL][/SIZE]
    [/CENTER]
    [/INDENT]

    [/FONT][/FONT][/FONT][/FONT][/FONT]
    [/CENTER]
  • jmkhah

    • 2014/08/15
    • 30

    #2
    استاد می تونی نمونه فایلتو بزاری ، دو سه روزم ما درگیرش بشیم

    کامنت

    • Javid Mokhtari
      مدير تالار ويژوال بيسيك

      • 2012/01/16
      • 1212
      • 73.00

      #3
      نوشته اصلی توسط misammisam
      با سلام
      يه سوال به ظاهر ساده برام پيش اومده كه دو روزه منو درگير خودش كرده !!
      فرض كنيد كه در يه ستون يكسري كد داريم كه اين كدها يونيك نيست و تكراريم توش هست ، حالا من ميخوام شماره رديف كدهاي مثلا 2001 رو پيدا كنم ، با اين فرمول ميشه كد اول رو پيدا كرد
      کد PHP:
      code Columns("D:D").Find(What:="2001").Row 
      كه شماره رديف اولين كد 2001 رو ميريزه در متقير code ، حالا اگه بخوام شماره رديف كدهاي دوم يا سوم الي آخر رو پيدا كنم بايد چيكار كنم.
      حاجی فقط به روش فوق باشه ...؟
      حلقه ، آرایه ، شرط و ... قبول نیست...؟
      [FONT=Tahoma][INDENT][CENTER][SIZE=3][FONT=courier new][B][FONT=comic sans ms][SIZE=3][FONT=arial]دوره های آموزش رایگان اکسل از صفر تا پیشرفته بصورت تصویری
      بیش از [COLOR=#008000]60[/COLOR] جلسه آموزش ویدئویی رایگان

      شرکت در دوره:
      [/FONT][/SIZE]
      [SIZE=5] [FONT=Tahoma][FONT=courier new][B][URL]https://javidsoft.ir/courses/[/URL][/B][/FONT][/FONT][/SIZE][/FONT]
      [/B][/FONT][/SIZE]
      [/CENTER]
      [/INDENT]
      [/FONT]

      کامنت

      • misammisam
        مدير تالار حسابداری و اکسل

        • 2014/04/04
        • 892
        • 64.00

        #4
        نوشته اصلی توسط jansiz hayat
        حاجی فقط به روش فوق باشه ...؟
        حلقه ، آرایه ، شرط و ... قبول نیست...؟
        ما مشتيم نيستيم چه برسه به حاجي
        تعداد كدها خيلي زياده ، با حلقه كه ميتونم درستش كنم ، ولي مشكل اينجاست كه فايل كلا كاراييشو از دست ميده .
        حالا هر روشي باشه ايراد نداره فقط اينو در نظر بگيريد كه براي 15000 تا 30000 تا كد ميخوام اعمالش كنم !!!!!!!
        [CENTER][SIGPIC][/SIGPIC]
        [/CENTER]
        [CENTER][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][INDENT]
        [CENTER][SIZE=3][URL="https://affstat.adro.co/click/adf04053-f8a6-439a-9ac4-e6a7e6f4b455"][B]اينجا كليك نكنيا ![/B][/URL][/SIZE]
        [/CENTER]
        [/INDENT]

        [/FONT][/FONT][/FONT][/FONT][/FONT]
        [/CENTER]

        کامنت

        • misammisam
          مدير تالار حسابداری و اکسل

          • 2014/04/04
          • 892
          • 64.00

          #5
          نوشته اصلی توسط jmkhah
          استاد می تونی نمونه فایلتو بزاری ، دو سه روزم ما درگیرش بشیم
          سوالش كه خيلي واضحه ، جوابش ما رو درگير كرده
          [CENTER][SIGPIC][/SIGPIC]
          [/CENTER]
          [CENTER][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][INDENT]
          [CENTER][SIZE=3][URL="https://affstat.adro.co/click/adf04053-f8a6-439a-9ac4-e6a7e6f4b455"][B]اينجا كليك نكنيا ![/B][/URL][/SIZE]
          [/CENTER]
          [/INDENT]

          [/FONT][/FONT][/FONT][/FONT][/FONT]
          [/CENTER]

          کامنت

          • Javid Mokhtari
            مدير تالار ويژوال بيسيك

            • 2012/01/16
            • 1212
            • 73.00

            #6
            نوشته اصلی توسط misammisam
            ما مشتيم نيستيم چه برسه به حاجي
            تعداد كدها خيلي زياده ، با حلقه كه ميتونم درستش كنم ، ولي مشكل اينجاست كه فايل كلا كاراييشو از دست ميده .
            حالا هر روشي باشه ايراد نداره فقط اينو در نظر بگيريد كه براي 15000 تا 30000 تا كد ميخوام اعمالش كنم !!!!!!!
            برای اون همه داده فعلا این روش به ذهنم رسید:
            کد PHP:
            Application.ScreenUpdating False

            Dim rw
            coun As Integer
            coun 
            1
            rw 
            WorksheetFunction.CountIf(Range("a:a"), 25)
            Range("a1000000").End(xlUp).Activate
            a
            :
            If 
            rw >= coun Then
                Range
            ("a:a").Find(What:="25"After:=ActiveCellLookAt:=xlWholeSearchDirection:=xlNextMatchCase:=True).Activate
                coun 
            coun 1
                
            GoTo a:
            End If

            Application.ScreenUpdating True 
            برا 20000 محدوده تست کردم کمتر از 1 ثانیه بررسی کرد.
            فایل های پیوست شده
            Last edited by Javid Mokhtari; 2014/08/28, 12:14.
            [FONT=Tahoma][INDENT][CENTER][SIZE=3][FONT=courier new][B][FONT=comic sans ms][SIZE=3][FONT=arial]دوره های آموزش رایگان اکسل از صفر تا پیشرفته بصورت تصویری
            بیش از [COLOR=#008000]60[/COLOR] جلسه آموزش ویدئویی رایگان

            شرکت در دوره:
            [/FONT][/SIZE]
            [SIZE=5] [FONT=Tahoma][FONT=courier new][B][URL]https://javidsoft.ir/courses/[/URL][/B][/FONT][/FONT][/SIZE][/FONT]
            [/B][/FONT][/SIZE]
            [/CENTER]
            [/INDENT]
            [/FONT]

            کامنت

            • misammisam
              مدير تالار حسابداری و اکسل

              • 2014/04/04
              • 892
              • 64.00

              #7
              نوشته اصلی توسط jansiz hayat
              برای اون همه داده فعلا این روش به ذهنم رسید:
              کد PHP:
              Application.ScreenUpdating False

              Dim rw
              coun As Integer
              coun 
              1
              rw 
              WorksheetFunction.CountIf(Range("a:a"), 25)
              Range("a1000000").End(xlUp).Activate
              a
              :
              If 
              rw >= coun Then
                  Range
              ("a:a").Find(What:="25"After:=ActiveCellLookAt:=xlWholeSearchDirection:=xlNextMatchCase:=True).Activate
                  coun 
              coun 1
                  
              GoTo a:
              End If

              Application.ScreenUpdating True 
              برا 20000 محدوده تست کردم کمتر از 1 ثانیه بررسی کرد.
              آقا ممنونم ، با يكم تغيير هموني ميشه كه ميخواستم .
              فقط يه 2 تا نكته آموزشيم به ما بده .
              اين ScreenUpdating دقيقا چيكار ميكنه كه اول و آخرش آوردي .

              تو اين قسمت نكتش چي بوده كه اينجوري نوشتي
              کد PHP:
              )
              Range("a1000000").End(xlUp).Activate 
              مثلا ننوشتي
              کد PHP:
              Range("a:a").End(xlUp).Activate 
              تشكر
              [CENTER][SIGPIC][/SIGPIC]
              [/CENTER]
              [CENTER][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][INDENT]
              [CENTER][SIZE=3][URL="https://affstat.adro.co/click/adf04053-f8a6-439a-9ac4-e6a7e6f4b455"][B]اينجا كليك نكنيا ![/B][/URL][/SIZE]
              [/CENTER]
              [/INDENT]

              [/FONT][/FONT][/FONT][/FONT][/FONT]
              [/CENTER]

              کامنت

              • Javid Mokhtari
                مدير تالار ويژوال بيسيك

                • 2012/01/16
                • 1212
                • 73.00

                #8
                نوشته اصلی توسط misammisam
                آقا ممنونم ، با يكم تغيير هموني ميشه كه ميخواستم .
                فقط يه 2 تا نكته آموزشيم به ما بده .
                اين ScreenUpdating دقيقا چيكار ميكنه كه اول و آخرش آوردي .

                تو اين قسمت نكتش چي بوده كه اينجوري نوشتي
                کد PHP:
                )
                Range("a1000000").End(xlUp).Activate 
                مثلا ننوشتي
                کد PHP:
                Range("a:a").End(xlUp).Activate 
                تشكر
                نتیجه کدهای بالا یکی هستش ولی من به خاطر ترتیب انجام عملیات این کد رو نوشتم.
                به فرض اگر محدوده a1:a2 دارای عدد 25 باشه کدی که من نوشتم از همون ردیف اول جست و جو میکنه ولی کدی که شما نوشتین از ردیف دوم شروع به جست و جو میکنه که این بخاطر کد
                کد PHP:
                After:=ActiveCellوSearchDirection:=xlNext 
                هستش

                کدهای بالا که گام به گام اجرا می شود، در هر گام تغییرات بر روی شیت اعمال می شود.کلی بگم ... ScreenUpdating=false میگه که آقای اکسل تک به تک تغییرات انجام شده روی اکسل را نشان نده، نگه دار برای زمانی که کد ها تمام شد تمامی تغییرات را باهم نمایش بده.این کار به خاطر سرعت انجام کد هستش. کد ScreenUpdating رو از اول و اخر کدها پاک کن بعد کدهارو اجرا کن خودت میبینی چه اتفاقی می افته.
                Last edited by Javid Mokhtari; 2014/08/28, 15:26.
                [FONT=Tahoma][INDENT][CENTER][SIZE=3][FONT=courier new][B][FONT=comic sans ms][SIZE=3][FONT=arial]دوره های آموزش رایگان اکسل از صفر تا پیشرفته بصورت تصویری
                بیش از [COLOR=#008000]60[/COLOR] جلسه آموزش ویدئویی رایگان

                شرکت در دوره:
                [/FONT][/SIZE]
                [SIZE=5] [FONT=Tahoma][FONT=courier new][B][URL]https://javidsoft.ir/courses/[/URL][/B][/FONT][/FONT][/SIZE][/FONT]
                [/B][/FONT][/SIZE]
                [/CENTER]
                [/INDENT]
                [/FONT]

                کامنت

                چند لحظه..