کپی کردن اطلاعات از یک فایل به فایل دیگر

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • jjsafa2020

    • 2021/02/16
    • 33
    • 45.00

    پرسش کپی کردن اطلاعات از یک فایل به فایل دیگر

    با سلام و درود

    یک فایلی دارم که توش حدود 8000 تا قطعه با موجودی و کد کالا هستش و این فایل رو برنامه حسابداری بهم میده. می میخواستم یک محدوده از یک شیت این فایل رو مثلاً a1 تا d10000 از شیت 1 فایل anbar رو با زدن دکمه update به شیت 1 فایل search بیارم تا بتونم روش فرمول نویسی کنم.

    ممنون میشم راهنماییم کنین
  • jjsafa2020

    • 2021/02/16
    • 33
    • 45.00

    #2
    نوشته اصلی توسط jjsafa2020
    با سلام و درود

    یک فایلی دارم که توش حدود 8000 تا قطعه با موجودی و کد کالا هستش و این فایل رو برنامه حسابداری بهم میده. می میخواستم یک محدوده از یک شیت این فایل رو مثلاً a1 تا d10000 از شیت 1 فایل anbar رو با زدن دکمه update به شیت 1 فایل search بیارم تا بتونم روش فرمول نویسی کنم.

    ممنون میشم راهنماییم کنین


    دوستان لطفاً راهنمایی کنین.

    کامنت

    • kazamie

      • 2021/12/14
      • 249
      • 87.00

      #3
      هر دو فایل را باز کنید بعد با فرمول index داده های فایل اول را به فایل دوم بیاورید بعد با ماکرونویسی این داده ها که فرمول هستند را کپی و به شیت دیگر به صورت داده پیست کنید بعد آن را به صورت دکمه درست کنید
      دکتر کاظمی

      کامنت

      • jjsafa2020

        • 2021/02/16
        • 33
        • 45.00

        #4
        نوشته اصلی توسط kazamie
        هر دو فایل را باز کنید بعد با فرمول index داده های فایل اول را به فایل دوم بیاورید بعد با ماکرونویسی این داده ها که فرمول هستند را کپی و به شیت دیگر به صورت داده پیست کنید بعد آن را به صورت دکمه درست کنید
        میشه لطفاً بیشتر راهنمایی کنین. اگه کد باشه که خیلی بهتره. ممنون

        کامنت

        • kazamie

          • 2021/12/14
          • 249
          • 87.00

          #5
          این هم یک ماژول برای شما نوشتم فقط مسیر فایل و رنج ها را ویرایش کنید
          کد:
          Sub Macro1()    
              Workbooks.Open ("D:\Book1.xlsx")
              Workbooks("Book2.xlsx").Activate
              Range("A1").Formula = "=INDEX([Book1.xlsx]Sheet1!E:E,ROW())"
              Range("A1").Select
              Dim i As Integer
              i = WorksheetFunction.CountA(Workbooks("Book1.xlsx").Sheets("Sheet1").Range("E:E"))
             Selection.AutoFill Destination:=Range("A1:A" & i), Type:=xlFillDefault
             Range("A1:A" & i).Copy
             Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                  :=False, Transpose:=False
          End Sub
          - - - Updated - - -

          نوشته اصلی توسط kazamie
          این هم یک ماژول برای شما نوشتم فقط مسیر فایل و رنج ها را ویرایش کنید
          کد:
          Sub Macro1()    
              Workbooks.Open ("D:\Book1.xlsx")
              Workbooks("Book2.xlsx").Activate
              Range("A1").Formula = "=INDEX([Book1.xlsx]Sheet1!E:E,ROW())"
              Range("A1").Select
              Dim i As Integer
              i = WorksheetFunction.CountA(Workbooks("Book1.xlsx").Sheets("Sheet1").Range("E:E"))
             Selection.AutoFill Destination:=Range("A1:A" & i), Type:=xlFillDefault
             Range("A1:A" & i).Copy
             Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                  :=False, Transpose:=False
          End Sub
          در این ماژول book1 فایل مبدا است و book2 فایل مقصد است و اطلاعات از ستون E به ستون A فایل مقصد کپی می شوند
          دکتر کاظمی

          کامنت

          • jjsafa2020

            • 2021/02/16
            • 33
            • 45.00

            #6
            نوشته اصلی توسط kazamie
            این هم یک ماژول برای شما نوشتم فقط مسیر فایل و رنج ها را ویرایش کنید
            کد:
            sub macro1()    
                workbooks.open ("d:\book1.xlsx")
                workbooks("book2.xlsx").activate
                range("a1").formula = "=index([book1.xlsx]sheet1!e:e,row())"
                range("a1").select
                dim i as integer
                i = worksheetfunction.counta(workbooks("book1.xlsx").sheets("sheet1").range("e:e"))
               selection.autofill destination:=range("a1:a" & i), type:=xlfilldefault
               range("a1:a" & i).copy
               range("a1").pastespecial paste:=xlpastevalues, operation:=xlnone, skipblanks _
                    :=false, transpose:=false
            end sub
            - - - updated - - -



            در این ماژول book1 فایل مبدا است و book2 فایل مقصد است و اطلاعات از ستون e به ستون a فایل مقصد کپی می شوند
            واقعاً ممنون
            خیلی خوب و عالی
            فقط ییه سوال میشه به جای یک ستون یک محدوده را انتقال داد. مثلاً از a1:e100 شیت1 فایل مبداً به همون مختصات در فایل مقصد
            متشکر
            ,

            کامنت

            • kazamie

              • 2021/12/14
              • 249
              • 87.00

              #7
              نوشته اصلی توسط jjsafa2020
              واقعاً ممنون
              خیلی خوب و عالی
              فقط ییه سوال میشه به جای یک ستون یک محدوده را انتقال داد. مثلاً از a1:e100 شیت1 فایل مبداً به همون مختصات در فایل مقصد
              متشکر
              ,
              این فرمول برای هر ستون جداگانه باید تکرار شود و یا کلا از فرمول دیگری استفاده شود
              شما می توانید با تابع index و match همیشه در فایل مقصد و در یک شیت اطلاعات فایل مبدأ را به صورت داینامیک داشته باشید و بعد از آن شیت به شیت های دلخواه کپی پیست کنید که این کپی پیست کردن هم با ضبط ماکرو می توانید آسان تر کنید
              دکتر کاظمی

              کامنت

              • kazamie

                • 2021/12/14
                • 249
                • 87.00

                #8
                کد:
                .index([book1.xlsx]sheet1!A:A,row())
                این فرمول را در سلول A1 فایل مقصد بنویسید و از با لا به پایین درگ کنید و از چپ به راست هم درگ کنید تا اطلاعات فایل مبدأ را همیشه داشته باشید
                دکتر کاظمی

                کامنت

                • jjsafa2020

                  • 2021/02/16
                  • 33
                  • 45.00

                  #9
                  نوشته اصلی توسط kazamie
                  کد:
                  .index([book1.xlsx]sheet1!A:A,row())
                  این فرمول را در سلول A1 فایل مقصد بنویسید و از با لا به پایین درگ کنید و از چپ به راست هم درگ کنید تا اطلاعات فایل مبدأ را همیشه داشته باشید
                  واقعا دم هموتن گرم عالی بود
                  یه سوال این کدی که نوشتین موقعی که فایل مبدأ بسته است داده ها نمی یاد و باید فایل باز بشه. راهی هست که بدون نیاز به باز کردن فایل مبدأ داده ها رو انتقال بوده. تو خود این کد باشه بهتره و نیاز به ماکرو نباشه

                  با تشکر

                  کامنت

                  • kazamie

                    • 2021/12/14
                    • 249
                    • 87.00

                    #10
                    نوشته اصلی توسط jjsafa2020
                    واقعا دم هموتن گرم عالی بود
                    یه سوال این کدی که نوشتین موقعی که فایل مبدأ بسته است داده ها نمی یاد و باید فایل باز بشه. راهی هست که بدون نیاز به باز کردن فایل مبدأ داده ها رو انتقال بوده. تو خود این کد باشه بهتره و نیاز به ماکرو نباشه

                    با تشکر
                    این کد بدون باز کردن فایل مبدأ اطلاعات را در فایل مقصد نشان می دهد اگر فایل مبدأ پسورد داشته باشد پسورد را می‌پرسد، نمیدانم چرا این مشکل را دارید

                    - - - Updated - - -

                    فهمیدم شما برای نوشتن این تابع ابتدا هر دو فایل را باز کنید و بعد بنویسید سری های بعد این تابع مسیر کامل را در فرمول ذخیره می کنند و نیازی به باز کردن فایل مبدأ نیست
                    دکتر کاظمی

                    کامنت

                    • jjsafa2020

                      • 2021/02/16
                      • 33
                      • 45.00

                      #11
                      نوشته اصلی توسط kazamie
                      این کد بدون باز کردن فایل مبدأ اطلاعات را در فایل مقصد نشان می دهد اگر فایل مبدأ پسورد داشته باشد پسورد را می‌پرسد، نمیدانم چرا این مشکل را دارید

                      - - - Updated - - -

                      فهمیدم شما برای نوشتن این تابع ابتدا هر دو فایل را باز کنید و بعد بنویسید سری های بعد این تابع مسیر کامل را در فرمول ذخیره می کنند و نیازی به باز کردن فایل مبدأ نیست
                      در صورتی می یاره که تو هر خانه قسمت فرمول رو انتخاب کنین و enter بزنین.

                      کامنت

                      • jjsafa2020

                        • 2021/02/16
                        • 33
                        • 45.00

                        #12
                        نوشته اصلی توسط jjsafa2020
                        در صورتی می یاره که تو هر خانه قسمت فرمول رو انتخاب کنین و enter بزنین.
                        درست شد ممنونم.
                        automatic update رو از تنظیمات فعال کردم درست شد
                        واقعا درستت درد نکنه.
                        پرروییه ها ولی یه سوال دیگه داشتم. میشه نام شیت بصورت متغییر باشه و از محتویات یکی از خونه های اکسل برداره. مثلا تو خونه i1 اگه sheet1 باشه بره از شیت1 برداره و اگه sheet2 باشه بره شیت2

                        کامنت

                        • kazamie

                          • 2021/12/14
                          • 249
                          • 87.00

                          #13
                          نوشته اصلی توسط jjsafa2020
                          درست شد ممنونم.
                          automatic update رو از تنظیمات فعال کردم درست شد
                          واقعا درستت درد نکنه.
                          پرروییه ها ولی یه سوال دیگه داشتم. میشه نام شیت بصورت متغییر باشه و از محتویات یکی از خونه های اکسل برداره. مثلا تو خونه i1 اگه sheet1 باشه بره از شیت1 برداره و اگه sheet2 باشه بره شیت2
                          بله چون فرمول را دستی در شیت یک وارد می کنید و آدرس فایل مبدأ هم به صورت دستی در فرمول وارد می کنید، شما می توانید فرمول ها را در هر صفحه ای که خواستید بنویسید و آدرس فایل مبدأ را در فرمول اصلاح کنید

                          - - - Updated - - -

                          تازه متوجه شدم باید از تابع indirect همراه با شرط استفاده کنید
                          دکتر کاظمی

                          کامنت

                          • jjsafa2020

                            • 2021/02/16
                            • 33
                            • 45.00

                            #14
                            نوشته اصلی توسط kazamie
                            بله چون فرمول را دستی در شیت یک وارد می کنید و آدرس فایل مبدأ هم به صورت دستی در فرمول وارد می کنید، شما می توانید فرمول ها را در هر صفحه ای که خواستید بنویسید و آدرس فایل مبدأ را در فرمول اصلاح کنید

                            - - - updated - - -

                            تازه متوجه شدم باید از تابع indirect همراه با شرط استفاده کنید
                            من قبلا از این فرمول برای یه برنامه دیگه استفاده کردم استفاده کردم indirect($i$1&"!$x23") . ولی اینجا نشد. میشه راهنمایی کنین

                            کامنت

                            • kazamie

                              • 2021/12/14
                              • 249
                              • 87.00

                              #15
                              نوشته اصلی توسط jjsafa2020
                              من قبلا از این فرمول برای یه برنامه دیگه استفاده کردم استفاده کردم indirect($i$1&"!$x23") . ولی اینجا نشد. میشه راهنمایی کنین
                              چون تابع ایندایرکت کمی پیچیده است باید درباره آن مطالعه کنی و بعد هم روی فایل نمونه آن را ببینی ولی من کد آن را اینجا قرار می دهم اگر متوجه نشدی برو مطالعه کن
                              کد:
                              =INDEX(INDIRECT("'[book1.xlsx]"&$I$1&"'!"&$I$2), row())
                              در سلول I1 باید نام شیت را بنویسید در سلول I2 باید یک نام دلخواه بنویسی مثلا abc بعد در name manager این نام را تعریف کنید و مثلا ستون A:A را به آن بدهید به این صورت =sheet1!$A:$A
                              Last edited by kazamie; 2021/12/20, 20:01.
                              دکتر کاظمی

                              کامنت

                              چند لحظه..