ماکرو یا کد copy&paste

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

    • 2014/02/28
    • 88

    [حل شده] ماکرو یا کد copy&paste

    سلام
    دوستان من 4 عدد worksheet دارم (sheet1,sheet2,sheet3,sheet4)که بایداز بین داده های ان در worksheet جدید (کاربرگ 1 ) بعضی از داد ه ها مجددجمع اوری بشه (در واقع یک نوع نمونه برداری ).مثلا
    در فایل اکسل که نمونه گذاشتم
    بایددر کاربرگ 1 از تاریخ فرضا
    01/01/2011 تا 14/01/2011
    و
    20/02/2011
    تا 30/02/2011
    و از تاریخ XX/XX/XX
    تا تاریخ XX/XX/XX
    از sheet1 دادها در هر ردیف کپی در کاربرگ 1بشوند و مثلا از تاریخ
    15/01/2011
    تا
    18/01/2011
    از sheet2 داده ها مقابل هر ردیف در کاربرگ 1 کپی بشود و الی اخر .......

    در واقع چون حجم داد ها زیاد هست نمیخواهم با کپی و paste کردن از هر sheet در کاربرگ1 استفاده کنم .
    دوستان ایا ماکرو اماده ای هست که بر اساس تاریخ داد ها را کپی کنه لطفا زحمت بکشند کد را بزارند یا
    اگر دوستان میتونند یک ماکر ساده بر اساس جستجو تاریخ و کپی کردن داد ها در مقابل ان بنویسند
    ممنون میشوم

    Last edited by ed2008; 2016/03/26, 22:57.
  • Amir Ghasemiyan

    • 2013/09/20
    • 4598
    • 100.00

    #2
    سلام دوست عزیز
    متوجه سوالتون نشدم. شما چهار تا شیت دارین. همشون هم تاریخهای یکسان دارن. بعد چطوری میخواین همشون رو داخل یک شیت قرار بدین؟
    مثلا تاریخ اول:
    01/01/2011
    در هر شیت این تاریخ وجود داره و در شیت کاربرگ 1 فقط یکبار این تاریخ تکرار شده. به عبارتی چهار داده داریم و یک سلول

    کامنت

    • ed2008

      • 2014/02/28
      • 88

      #3
      نوشته اصلی توسط amir ghasemiyan
      سلام دوست عزیز
      متوجه سوالتون نشدم. شما چهار تا شیت دارین. همشون هم تاریخهای یکسان دارن. بعد چطوری میخواین همشون رو داخل یک شیت قرار بدین؟
      مثلا تاریخ اول:
      01/01/2011
      در هر شیت این تاریخ وجود داره و در شیت کاربرگ 1 فقط یکبار این تاریخ تکرار شده. به عبارتی چهار داده داریم و یک سلول
      سلام امیر جان سال نو شما مبارک
      من فکر کردم سئوالم کامل بود و منظورم را درست رساندم شرمنده
      بله در واقع پایه اصلی همین تاریخ هست که مبنای جمع اوری داده ها هست در همه شیت ها یکسان هست اما باید در کاربرگ 1 طوری ماکرو بنویسیم که فقط از یک شیت اطلاعات را کپی کنه .(از یک شیت که ادرس برای ان روز میدهیم کپی میکنه مثلااز تاریخ فرضا 01/01/2011 تا 14/01/2011 فقط از sheet1 داده ها را کپی کن و سه شیت دیگه را میزاریم برای ان تاریخ ها و روز کنار منظور تاریخ و روز ها 01/01/2011 تا 14/01/2011)
      پس در واقع تاریخ یک روز در همه شیت ها یکسان اما با داد های متفاوت در هر ردیف .
      پس ماکرو ما که باید کدش نوشته بشه باید در تاریخ مشخص یا روز مشخص بهش بگیم کدام ردیف جلوی این تاریخ را از کدام شیت کپی کنه

      ممنون بخاطر اینکه وقت گذاشتید

      کامنت

      • Amir Ghasemiyan

        • 2013/09/20
        • 4598
        • 100.00

        #4
        قبل از اینکه من کدش رو براتون بنویسم یه سوال:
        دلیل خاصی داشته که ساختار اکسل رو از مطلق به نسبی تغییر دادین؟ یعنی ستون ها بجای اینکه حروف انگلیسی باشن عدد هستند. عمدا این کار رو کردین یا دلیل خاصی نداشته؟

        کامنت

        • ed2008

          • 2014/02/28
          • 88

          #5
          نوشته اصلی توسط amir ghasemiyan
          قبل از اینکه من کدش رو براتون بنویسم یه سوال:
          دلیل خاصی داشته که ساختار اکسل رو از مطلق به نسبی تغییر دادین؟ یعنی ستون ها بجای اینکه حروف انگلیسی باشن عدد هستند. عمدا این کار رو کردین یا دلیل خاصی نداشته؟
          سلام امیر جان
          دلیل خاصی ندارد فقط خواستم منظورم را برساند و طرح سوال برای خود من هم راحتر باشه اگر هم ساختار اکسل مطلق بوده و نسبی شده من هیچ اطلاعی ازش ندارم برای من جالب هست که کجا این اطلاعات وجود داره ؟

          در واقع میخواهم به این تنیجه برسم چطوری باید بر اساس تاریخ مشخص داد ها از شیت مشخص توی سلو ل ها کپی ( انتقال ) داده بشه.

          کامنت

          • Amir Ghasemiyan

            • 2013/09/20
            • 4598
            • 100.00

            #6
            نوشته اصلی توسط ed2008
            سلام امیر جان
            دلیل خاصی ندارد فقط خواستم منظورم را برساند و طرح سوال برای خود من هم راحتر باشه اگر هم ساختار اکسل مطلق بوده و نسبی شده من هیچ اطلاعی ازش ندارم برای من جالب هست که کجا این اطلاعات وجود داره ؟

            در واقع میخواهم به این تنیجه برسم چطوری باید بر اساس تاریخ مشخص داد ها از شیت مشخص توی سلو ل ها کپی ( انتقال ) داده بشه.

            بسیار خوب
            کلا سعی کنید هر وقت دیدید ساختار نسبی هست به مطلق تغییر بدین چون کار کردن با حالت مطلق خیلی راحت تره
            در هر صورت من بر اساس همین ساختار نسبی براتون کد vba رو نوشتم. فایل رو هم ضمیمه میکنم.
            کد:
            Sub copypaste()
            FromRange = Cells(2, 13)
            ToRange = Cells(2, 14)
            SheetRange = Cells(2, 15)
            If FromRange <> "" And ToRange <> "" And SheetRange <> "" And FromRange < ToRange Then
                FindFrom = Range("A1:A2000").Find(FromRange).Row
                FindTo = Range("A1:A2000").Find(ToRange).Row
                For i = FindFrom To FindTo Step 1
                    Range("B" & i).FormulaR1C1 = "=VLOOKUP(RC[-1]," & SheetRange & "!C[-1]:C[10],COLUMN(),FALSE)"
                    Range("C" & i).FormulaR1C1 = "=VLOOKUP(RC[-2]," & SheetRange & "!C[-2]:C[9],COLUMN(),FALSE)"
                    Range("D" & i).FormulaR1C1 = "=VLOOKUP(RC[-3]," & SheetRange & "!C[-3]:C[8],COLUMN(),FALSE)"
                    Range("E" & i).FormulaR1C1 = "=VLOOKUP(RC[-4]," & SheetRange & "!C[-4]:C[7],COLUMN(),FALSE)"
                    Range("F" & i).FormulaR1C1 = "=VLOOKUP(RC[-5]," & SheetRange & "!C[-5]:C[6],COLUMN(),FALSE)"
                    Range("G" & i).FormulaR1C1 = "=VLOOKUP(RC[-6]," & SheetRange & "!C[-6]:C[5],COLUMN(),FALSE)"
                    Range("H" & i).FormulaR1C1 = "=VLOOKUP(RC[-7]," & SheetRange & "!C[-7]:C[4],COLUMN(),FALSE)"
                    Range("I" & i).FormulaR1C1 = "=VLOOKUP(RC[-8]," & SheetRange & "!C[-8]:C[3],COLUMN(),FALSE)"
                    Range("J" & i).FormulaR1C1 = "=VLOOKUP(RC[-9]," & SheetRange & "!C[-9]:C[2],COLUMN(),FALSE)"
                    Range("K" & i).FormulaR1C1 = "=VLOOKUP(RC[-10]," & SheetRange & "!C[-10]:C[1],COLUMN(),FALSE)"
                    Range("L" & i).FormulaR1C1 = "=VLOOKUP(RC[-11]," & SheetRange & "!C[-11]:C,COLUMN(),FALSE)"
                Next i
            End If
            
            
            End Sub
            فایل های پیوست شده
            Last edited by Amir Ghasemiyan; 2016/03/21, 22:20.

            کامنت

            • ed2008

              • 2014/02/28
              • 88

              #7
              نوشته اصلی توسط amir ghasemiyan

              بسیار خوب
              کلا سعی کنید هر وقت دیدید ساختار نسبی هست به مطلق تغییر بدین چون کار کردن با حالت مطلق خیلی راحت تره
              در هر صورت من بر اساس همین ساختار نسبی براتون کد vba رو نوشتم. فایل رو هم ضمیمه میکنم.
              کد:
              Sub copypaste()
              FromRange = Cells(2, 13)
              ToRange = Cells(2, 14)
              SheetRange = Cells(2, 15)
              If FromRange <> "" And ToRange <> "" And SheetRange <> "" And FromRange < ToRange Then
                  FindFrom = Range("A1:A2000").Find(FromRange).Row
                  FindTo = Range("A1:A2000").Find(ToRange).Row
                  For i = FindFrom To FindTo Step 1
                      Range("B" & i).FormulaR1C1 = "=VLOOKUP(RC[-1]," & SheetRange & "!C[-1]:C[10],COLUMN(),FALSE)"
                      Range("C" & i).FormulaR1C1 = "=VLOOKUP(RC[-2]," & SheetRange & "!C[-2]:C[9],COLUMN(),FALSE)"
                      Range("D" & i).FormulaR1C1 = "=VLOOKUP(RC[-3]," & SheetRange & "!C[-3]:C[8],COLUMN(),FALSE)"
                      Range("E" & i).FormulaR1C1 = "=VLOOKUP(RC[-4]," & SheetRange & "!C[-4]:C[7],COLUMN(),FALSE)"
                      Range("F" & i).FormulaR1C1 = "=VLOOKUP(RC[-5]," & SheetRange & "!C[-5]:C[6],COLUMN(),FALSE)"
                      Range("G" & i).FormulaR1C1 = "=VLOOKUP(RC[-6]," & SheetRange & "!C[-6]:C[5],COLUMN(),FALSE)"
                      Range("H" & i).FormulaR1C1 = "=VLOOKUP(RC[-7]," & SheetRange & "!C[-7]:C[4],COLUMN(),FALSE)"
                      Range("I" & i).FormulaR1C1 = "=VLOOKUP(RC[-8]," & SheetRange & "!C[-8]:C[3],COLUMN(),FALSE)"
                      Range("J" & i).FormulaR1C1 = "=VLOOKUP(RC[-9]," & SheetRange & "!C[-9]:C[2],COLUMN(),FALSE)"
                      Range("K" & i).FormulaR1C1 = "=VLOOKUP(RC[-10]," & SheetRange & "!C[-10]:C[1],COLUMN(),FALSE)"
                      Range("L" & i).FormulaR1C1 = "=VLOOKUP(RC[-11]," & SheetRange & "!C[-11]:C,COLUMN(),FALSE)"
                  Next i
              End If
              
              
              End Sub

              سلام
              امیر جان من این کد را نفهمیدم فقط دو خط اول که میگید رانگ از ستون 2 و سطر 13 تا سطر 2 و ستون 14 انتخاب کن (از کدام شیت ؟؟) اصلا من نفهمیدم کجا باید بهش تاریخ های مشخص را که باید از شیت مخصوص که ادرس داره را کپی کنه (از تاریخ فرضا 01/01/2011 تا 14/01/2011 فقط از sheet1 داده ها را کپی کن) در واقع ادرس سلو لها و شیت مورد نظر کجاست ؟
              در واقع احتیاج به کدی هست که رانگ تاریخ مشخص از شیت شماره مشخص داشته باشه برای نمونه برداشتن امیدوارم منظورم را درست رسانده باشم.

              لطف میکنید یک توضیحی در مورد کد بفرمایید تا بعد ها هم دوستان در اینده این کد را بفهمند

              این فایل را هم که ضمیمه کردید برای من مشکل داره
              فایل های پیوست شده
              Last edited by ed2008; 2016/03/21, 23:10.

              کامنت

              • Amir Ghasemiyan

                • 2013/09/20
                • 4598
                • 100.00

                #8
                نوشته اصلی توسط ed2008
                سلام
                امیر جان من این کد را نفهمیدم فقط دو خط اول که میگید رانگ از ستون 2 و سطر 13 تا سطر 2 و ستون 14 انتخاب کن (از کدام شیت ؟؟) اصلا من نفهمیدم کجا باید بهش تاریخ های مشخص را که باید از شیت مخصوص که ادرس داره را کپی کنه (از تاریخ فرضا 01/01/2011 تا 14/01/2011 فقط از sheet1 داده ها را کپی کن) در واقع ادرس سلو لها و شیت مورد نظر کجاست ؟
                لطف میکنید یک توضیحی در مورد کد بفرمایید تا بعد ها هم دوستان در اینده این کد را بفهمند

                این فایل را هم که ضمیمه کردید برای من مشکل داره
                در شیت کاربرگ1 سه تا قسمت کنار جدول اضافه کردم. از، تا و شیت. در سلول زیر از تاریخ ابتدا و در سلول زیر تا تاریخ انتها رو وارد میکنید. و نام شیت رو هم از لیست زیر سلول شیت انتخاب میکنید و بعد دکمه کپی که آبی رنگ هست رو میزنین و اطلاعات کپی میشه. در واقع اطلاعات کپی نمیشه. فرمول vlookup نوشته میشه و اطلاعات در جای مناسب قرار میگیره
                متوجه شدین؟

                کامنت

                • ed2008

                  • 2014/02/28
                  • 88

                  #9
                  در واقع منظور من خیلی ساده است
                  در کاربرگ 1 من میخواهم از تاریخ x تا تاریخ y داد ها از شیت فرضا 1 وارد بشه باز از تاریخ تاریخ x تا تاریخ y داد ها از شیت فرضا 2 باز از تاریخ x تا تاریخ y داد ها از شیت فرضا دوباره 1 وارد بشه و الی اخر

                  کامنت

                  • ed2008

                    • 2014/02/28
                    • 88

                    #10
                    نوشته اصلی توسط amir ghasemiyan
                    در شیت کاربرگ1 سه تا قسمت کنار جدول اضافه کردم. از، تا و شیت. در سلول زیر از تاریخ ابتدا و در سلول زیر تا تاریخ انتها رو وارد میکنید. و نام شیت رو هم از لیست زیر سلول شیت انتخاب میکنید و بعد دکمه کپی که آبی رنگ هست رو میزنین و اطلاعات کپی میشه. در واقع اطلاعات کپی نمیشه. فرمول vlookup نوشته میشه و اطلاعات در جای مناسب قرار میگیره
                    متوجه شدین؟
                    سلام امیرجان

                    ممنون از شما که زحمت کشید بله العان متوجه شدم دست شما درد نکنه بابت کد و زحمتی که کشیدید
                    با استفاده از vlookup مسئله حل شد.

                    مرسی

                    کامنت

                    • ed2008

                      • 2014/02/28
                      • 88

                      #11
                      مدیران محترم
                      لطفا موضوع را مناسب با حل مسئله تغییر دهید

                      کامنت

                      چند لحظه..