एक्सेल वर्कशीट की प्रतिलिपि बनाएँ और सूत्रों में सापेक्ष सेल संदर्भ बनाए रखें


40

एक्सेल में एक और कॉपी समस्या:

मैं WorkbookB.xlsx में WorkbookA.xlsx से एक वर्कशीट कैसे कॉपी कर सकते हैं की नकल की वर्कशीट अभी भी संदर्भित WorkbookA.xlsx बिना जैसे सूत्र =B!23बन जाता है =[WorkbookA.xlsx]!B!23जब की प्रतिलिपि बनाई।

मैं "निरपेक्ष" सेल संदर्भों के बजाय "सापेक्ष" सेल संदर्भों को बनाए रखना चाहता हूं (यदि यह मौजूद नहीं है तो मैं एक्सेल की दुनिया में इस शब्दावली का आविष्कार करूंगा)।

एक और संभावित विकल्प जो मुझे काम करने के लिए नहीं मिल सकता है वह है सेल "वैल्यूज़" को चिपकाने का विकल्प। एक्सेल सेल में वास्तविक फ़ार्मुलों के बजाय गणना मूल्यों के रूप में "मूल्यों" को मानता है। यदि मैं पेस्ट फॉर्मूला चुनता हूं, तो यह अभी भी पूर्ण संदर्भ देता है।

मुझे इसकी आवश्यकता क्यों है के बारे में अधिक जानकारी: मेरे पास दैनिक संचालन के लिए उपयोग में उत्पादन xlsx है। हमें लगातार इस xlsx को "अपग्रेड" करने की आवश्यकता है और इसलिए एक व्यक्ति एक ही शीट के लिए एक प्रति और अपने परिवर्तन बना सकता है। समवर्ती रूप से, एक अन्य व्यक्ति भी दूसरी शीट में बदलाव कर सकता है। यह देखते हुए कि इन चादरों के पास अन्य चादरों पर कोई आश्रित कोशिकाएं नहीं हैं , सारांश रिपोर्ट की तरह, हमारे लिए यह आवश्यक है कि हम शीट्स को मूल xlsx में वापस कॉपी करें और मर्ज करें। लेकिन "निरपेक्ष" संदर्भित बहुत परेशानी दे रहा है।


मैं उलझन में हूँ। आप WBA से WBA से शीट 1 को कॉपी करना चाहते हैं और आप चाहते हैं कि यह WBA के बजाय WBB के सापेक्ष फॉर्मूला की नकल करे। यह संभव नहीं है जब तक कि WBB शीट 2 WBA शीट 2 के समान न हो । क्या ऐसा ही है? इसके अलावा, यदि आप केवल मान चाहते हैं तो आप शीट select all - copy - paste special - valuesको केवल मान रखने के लिए कॉपी कर सकते हैं । यदि आप कॉपी के दौरान यह करना चाहते हैं, तो उन चरणों को पूरा करने के लिए अंतिम उपयोगकर्ता पर भरोसा करें, ठीक है, मैं उस पर काम कर रहा हूं। हमें बताएं कि आप वर्कबुक (या 1) और डब्ल्यूबीबी (2) और शीट
#s के

मैंने पहले ही अपने अंतिम पैराग्राफ में समझाने का प्रयास किया था, लेकिन मुझे लगता है कि यह अभी भी स्पष्ट नहीं था। हां, WBA और WBB WBA में एक शीट के लिए समान हैं। डब्ल्यूबीए में उस शीट को डिजाइन करते समय, यह इरादा है कि सभी सेल संदर्भ शीट की कार्यपुस्तिका के सापेक्ष हों। कॉपी वर्कशीट फ़ंक्शन WBA के साथ सभी सेल फ़ार्मुलों को जोड़ देता है, जिससे यह "निरपेक्ष" हो जाता है और मैं ऐसा नहीं चाहता।
जेक

पेस्ट विशेष मान केवल परिकलित मान चिपकाएँ। मुझे WBA.xls को संलग्न किए बिना, सूत्रों को कॉपी करने की आवश्यकता है।
जेक

ठीक है मैं स्पष्ट हूँ। मैं एक उत्तर पोस्ट करूँगा / अगर मैं इसका पता
लगाऊंगा

क्या आप पूरी वर्कबुक की कॉपी नहीं बना सकते हैं और फिर नई कॉपी से आपको क्या चाहिए?
dwolters

जवाबों:


21

सूत्र प्रदर्शित करने के लिए Ctrl+ ~का उपयोग करने का प्रयास करें । फिर सब कुछ चुनने के लिए Ctrl+ Aका उपयोग करें, इसे कॉपी करें और फिर इसे नोटपैड में पेस्ट करें।

अंत में, इसे नोटपैड से बाहर कॉपी करें और अपनी अन्य कार्यपुस्तिका में पेस्ट करें।


1
@ जेक: लेकिन आपने कहा है कि आपकी कार्यपुस्तिका में बटन, ड्रॉपडाउन और ऐसे हैं; और नामित पर्वतमाला। यह तकनीक उन्हें कॉपी नहीं करेगी (या प्रारूपण जैसी सांसारिक चीजें) - आप इसे कैसे स्वीकार्य मानते हैं?
स्कॉट

एक बड़ी वर्कशीट पर, एडिट लिंक / चेंज सोर्स तकनीक काफी धीमी गति से चल रही थी, लेकिन यह तेज थी।
टोनी पुलोकस

23

मैंने निम्न कार्य करना कई मामलों में आसान पाया है:

  • एक नई कार्यपुस्तिका में पत्रक की प्रतिलिपि बनाएँ
  • नई कार्यपुस्तिका में नई शीट को सक्रिय करें
  • सभी का चयन करें ( Ctrl+ A)
  • एक खोज / पर बदलें
    • लगता है: [WorkbookA.xlsx]!
    • बदलें: <खाली छोड़ें>
  • सबको बदली करें

11

इस के ठीक नीचे का अहस्ताक्षरित उत्तर वह है जो मेरे लिए बहुत मामूली बदलाव के साथ काम किया है।

  1. गंतव्य स्प्रेडशीट बनाएं और सहेजें।

  2. "चाल", "कॉपी" का उपयोग करें, या अपने पृष्ठ को नए स्प्रेडशीट में सूत्रों के साथ खींचें। यह पुराने वर्कशीट की ओर इशारा करते हुए नए पेज पर फॉर्मूले छोड़ता है। फिर नई स्प्रेडशीट को पुराने वर्कशीट के समान स्थान पर सहेजें।

  3. फिर डेटा टैब पर जाएं> लिंक संपादित करें पर क्लिक करें। जब तक पृष्ठ में लिंक नहीं होंगे तब तक विकल्प सक्रिय नहीं होगा।

  4. परिणाम के संवाद में, स्रोत फ़ाइल का नाम चुनें और "स्रोत बदलें" पर क्लिक करें।

  5. आगे दिखाई देने वाली ओपन-फाइल डायलॉग से, नई स्प्रेडशीट के नाम का चयन करें।

बंद करें पर क्लिक करें और आप समाप्त कर चुके हैं।


9

या बस निम्नलिखित करें:

इसे रूपांतरित करें:

=database_feed!A1

इसके लिए:

=INDIRECT("database_feed!A1")

और जब आप वर्कशीट के बीच कॉपी करते हैं तो आपके संदर्भों में कोई बदलाव नहीं होता है।

यदि आपके पास कई पत्रक संदर्भित नहीं हैं, तो दूसरा विकल्प उपयोग करना होगा

=INDIRECT("'"&B1&"'!A1")

और सेल B1 में संदर्भ पत्र का नाम दर्ज करें। अब आपके पास नई स्प्रेडशीट में कॉपी करने के लिए केवल एक सेल है।


1
अच्छा विचार, काम करता है यदि आपके पास सूत्र के साथ एक टेम्पलेट शीट है और आप इसे VBA के साथ एक नई कार्यपुस्तिका में कॉपी कर रहे हैं। मैंने पाया कि आपको उद्धरणों के बीच संदर्भ रखने और A1 प्रकार के संदर्भ रखने के लिए TRUE जोड़ने की आवश्यकता है। जैसे। = संकेत ("'शीट 1! ए 1", ट्रू)
रोजर

2
INDIRECTएक वाष्पशील सूत्र है, इसलिए इसे हर बार पुनर्गणना किया जाएगा (केवल इसके विपरीत जब इसे संपादित किया जाता है) जो वास्तव में अधिक जटिल कार्यपुस्तिकाओं को धीमा कर सकता है, इसलिए सावधानी के साथ उपयोग करें
एंडी टेरा

3

नीचे दिए गए कोड को अपनी आवश्यकताओं के लिए अनुकूलित किया जा सकता है। यह शीट से सभी सूत्र लेता है wb1और उन्हें नई कार्यपुस्तिका में शीट पर लागू करता है। सूत्र Stringएस के रूप में लागू होते हैं , इसलिए मूल कार्यपुस्तिका में संदर्भों का कोई सम्मिलन नहीं है। इसके अलावा, यह कोड सुपर फास्ट है क्योंकि यह क्लिपबोर्ड का उपयोग नहीं करता है और कोशिकाओं के माध्यम से किसी भी लूपिंग की आवश्यकता नहीं है।

Sub copyformulas()

Dim wb1 As Workbook, wb2 As Workbook
Dim s1 As Worksheet, s2 As Worksheet
Dim formArr() As Variant

Set wb1 = ThisWorkbook
Set s1 = wb1.Sheets("Sheet1")
Set wb2 = Workbooks.Add
Set s2 = wb2.Sheets("Sheet1")

formArr = s1.UsedRange.Formula
s2.Range("A1").Resize(UBound(formArr, 1), UBound(formArr, 2)).Formula = formArr

End Sub

3

चूंकि 99% प्रतिक्रियाओं ने मूल प्रश्न को संबोधित नहीं किया, इसलिए यहां उचित प्रतिक्रिया है।

  1. मूल फ़ाइल (Original.xlsx) से नई एक्सेल फ़ाइल (New.xlsx) पर शीट कॉपी करें जैसा कि आप सामान्य रूप से करते हैं। आम तौर पर, मैं नाम पर राइट-क्लिक करता हूं और "मूव या कॉपी ..." चुनता हूं।

  2. दूसरी - नई बनाई गई फ़ाइल (New.xlsx) को सहेजें।

  3. नई फ़ाइल में, डेटा के तहत, "लिंक संपादित करें" पर क्लिक करें

  4. पॉप-अप में, "स्रोत बदलें ..." चुनें

  5. फ़ाइल (New.xlsx) का पता लगाएँ और खोलें पर क्लिक करें।

मूल (Original.xlsx) के सभी संदर्भ हटा दिए जाएंगे।

किया हुआ!


उत्तर की सूची में उच्च होना चाहिए
sabre23t

2
  • वर्कशीट की कॉपी 'वर्कबुकबी.एक्सएलएक्स'
  • नई फ़ाइल में वर्कशीट खोलें
  • सभी का चयन करे
  • मेनू डेटा पर जाएं, एडिट लिंक पर क्लिक करें
  • लिंक संपादित करें ताकि पुरानी फ़ाइल का लिंक वर्तमान में खुली फ़ाइल का लिंक हो

यह मेरे लिए काम करता है।


0

इसके लिए दोनों वर्कबुक खुली होनी चाहिए । आप इस मैक्रो को चलाते हैं और यह workbookA!sheet1 से कॉपी करेगा workbookB!sheet1और फिर सभी workbookAसंदर्भों को बदल देगा । यह कच्चा है, लेकिन यह काम करता है । आप स्पष्ट रूप से अपने WorkbookA.xlsx नामों से मिलान करने के लिए कोड बदल सकते हैं, लेकिन सुनिश्चित करें कि उनके पास सही एक्सटेंशन है और उद्धरण चिह्नों में बने रहें।

ओह, मैक्रो बनाने के लिए, यदि आप नहीं जानते हैं, alt + F11तो विज़ुअल बेसिक एडिटर को लाने के लिए हिट करें। फिर WBA पर राइट क्लिक करें insert - moduleऔर मॉड्यूल में नीचे दिए गए कोड को कॉपी और पेस्ट करें। फिर F5मैक्रो चलाने के लिए मारा । यदि मैक्रो नहीं चलेगा, तो शायद यह इसलिए है क्योंकि मैक्रोज़ सक्षम नहीं हैं, इसलिए आगे बढ़ें और इसे सहेजें और पुनः खोलें और जब यह मैक्रोज़ को सक्षम करने का संकेत देता है, तो उन्हें सक्षम करें।

Sub copysheetremoveWBref()

    Application.ScreenUpdating = False

    'activate WBA
    Application.Workbooks("workbooka.xlsx").Activate
    'Select WBA Sheet1
    Application.Workbooks("workbooka.xlsx").Sheets("Sheet1").Select
    'copy WBA!sheet1 to WBB!sheet1
    Sheets("Sheet1").copy Before:=Workbooks("WorkbookB.xlsx").Sheets("sheet2")
    'find WBA references and remove them
    Cells.Replace What:="=[workbookA.xlsx]", Replacement:="=", LookAt:=xlPart _
        , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

    Application.ScreenUpdating = True


End Sub

1
एक नियमित दिनचर्या अच्छी है क्योंकि मैं CTRL+Hअब स्वयं हूं , लेकिन ये सभी नियंत्रण जैसे बटन, ड्रॉपडाउन और इस तरह के रिफंड को ठीक नहीं करते हैं; और नामित पर्वतमाला।
जेक

0

मैंने सामान्य रूप से नए वर्कशीट में कोशिकाओं को कॉपी करके इसे प्राप्त किया, फिर सूत्रों में पुरानी फ़ाइल पथ को हटाने के लिए एक प्रतिस्थापन ढूंढना।

उदाहरण के लिए, यदि पहला फॉर्मूला है =J2और यह बन जाता है =[filepath]J2, तो बस कुछ नया स्प्रेडशीट की खोज [filepath]और प्रतिस्थापन करें और कुछ भी नहीं के साथ बदलें। यह इसे हटाता है और सूत्र को पुनर्स्थापित करता है =J2

कोई VB आवश्यक!


दुख की बात यह है कि यह केवल तभी रुक-रुक कर काम करता है, जब सूत्रों के अंदर सब-स्ट्रिंग्स खोजने की बात आती है: /। यह एकल उद्धरणों के साथ कुछ भी खोजने में सक्षम प्रतीत नहीं होता है।
डगलस गास्केल

0

मुझे इसी तरह की समस्या हो रही थी। WBA के लिंक के साथ फॉर्मूले चिपकाने का कारण यह था कि WBA में जिस टैब (शीट) पर मैं काम कर रहा था, उसका नाम WBB से अलग था। मेरे लिए, यह हमेशा "अंतिम पत्रक" था, लेकिन एक का नाम 'मिनफ्लो' और दूसरे का नाम 'नॉर्मलफ्लो' था। मैंने दोनों का नाम बदलकर 'परिणाम' कर दिया और कॉपी / पेस्ट ने काम किया जैसा कि मैं चाहता था - एक "रिश्तेदार पेस्ट"।


0

उन कोशिकाओं का चयन करें जिन्हें आप स्थानांतरित करना चाहते हैं। अब उन्हें अलग-अलग वर्कशीट (अलग-अलग टैब) में एन ड्रॉप पर ले जाने की कोशिश करें।

मुझे पता है, यह स्क्रॉल करता है। यहाँ मुश्किल हिस्सा है: बस cmd (mac) या alt (जीत) दबाएं और यह आपको कोशिकाओं को दूसरे टैब पर छोड़ने देगा।


क्या आपका जवाब थोड़ा विस्तार कर सकता है? यह स्पष्ट नहीं है कि ड्रैग करते समय किसी अन्य टैब पर कैसे / कहां ड्रॉप करना है। धन्यवाद।
फिक्सर 1234

0

हाय यहाँ इस समस्या का एक सरल समाधान है:

  1. कोशिकाओं पर हमेशा की तरह कॉपी करें।
  2. सूत्र में, उसे पिछली कार्यपुस्तिका [WorkbookA.xlsx] से जोड़ने वाले पाठ का चयन करें और उसकी प्रतिलिपि बनाएँ।
  3. उन सभी कक्षों का चयन करें जिन्हें आप बदलना चाहते हैं और प्रेस CTRL+Fऔर बदलें टैब का चयन करें।
  4. बदलें [WorkbookA.xlsx] खाली जगह के साथ (उर्फ Replace withक्षेत्र में कुछ भी न लिखें , प्रेस करें Replace All

वोइला - यह किया जाता है।


0

एक और 'ट्रिक' - सोर्स वर्कशीट की नकल करने से पहले, सभी फॉर्मूला क्वालीफायर =को अक्षरों के दूसरे सेट (कहना ###=) से बदल दें।

अधिक कार्यपत्रक कॉपी करें, फिर प्रतिलिपि के बाद, सूत्र क्वालीफायर वापस (जगह की जगह ###=के साथ =)।

सुनिश्चित करें कि फॉर्म शीट के भीतर किसी भी शीट संदर्भ को भी संदर्भित शीट से पहले नई शीट पर कॉपी किया गया है।


0
  1. शीट को हमेशा की तरह कॉपी करें। (टैब पर राइट क्लिक करें और 'मूव या कॉपी' पर जाएं) यह फॉर्मेटिंग के लिए है।

  2. मूल पत्रक से सभी कोशिकाओं की प्रतिलिपि बनाएँ ( Ctrl+ Aया शीर्ष-बाएँ त्रिकोण और Ctrl+ C)

  3. नई कार्यपुस्तिका पर मान के रूप में चिपकाएँ ("चरण -1" शीट पर) (चिपकाएँ विकल्प> 123)


0

यदि आपको यह स्वचालित रूप से करने की आवश्यकता है क्योंकि आप VBA कार्यक्रम में शीट में खींच रहे हैं। इसे इस्तेमाल करो:

Public Sub ChangeSource()
'
' ChangeSource Macro
' Edit the links to point to the current workbook.
'
    Dim allLinks As Variant
    allLinks = ThisWorkbook.LinkSources(xlExcelLinks)
    If Not IsEmpty(allLinks) Then
        Dim eachLink As Long
        For eachLink = 1 To UBound(allLinks)
            If InStr(3, "String found in source book name.", allLinks(eachLink)) Then
                ThisWorkbook.ChangeLink Name:=allLinks(eachLink), NewName:=ThisWorkbook.FullName, Type:=xlExcelLinks
            End If
        Next eachLink
    End If
End Sub

बस "स्ट्रिंग को स्रोत पुस्तक नाम में मिला।" पुराने लिंक से मिलान करने के लिए जिन्हें आप बदलना चाहते हैं। यदि आप सभी लिंक को बदलना चाहते हैं तो आप उसे हटा सकते हैं।


-1

दोनों कार्यपुस्तिकाएँ खोलें। स्रोत कार्यपुस्तिका (WorkbookA.xlsx) में, उस शीट का चयन करें जिसे आप कॉपी करना चाहते हैं। शीट टैब पर राइट-क्लिक करें और “मूव या कॉपी…” चुनें। "मूव या कॉपी" डायलॉग बॉक्स में, "बुकबुक" ड्रॉपडाउन में "वर्कबुकB.xlsx" चुनें, उस पुस्तक में चुनें जहां आप इसे रखना चाहते हैं, और "कॉपी बनाएँ" चेक करें। (और "ओके" पर क्लिक करें।)


-1

उस शीट की एक प्रतिलिपि बनाएँ जिसे आप शीट से स्थानांतरित करना चाहते हैं, जिससे यह मामला वर्कबुक ए.एक्सएलएक्स होगा। इसे "WorkbookA.xlsx की कॉपी" नाम दें। अब इस नई कार्यपुस्तिका को खोलें और साथ ही जिस कार्यपुस्तिका को आप इस मामले में पत्रक को स्थानांतरित करना चाहते हैं, वह कार्यपुस्तिका B.xlsx होगा। आपके द्वारा बनाई गई कॉपी वर्कबुक में शीट पर राइट क्लिक करें यानी वर्कबुक की कॉपी। एक्सएलएक्स और 'मूव या कॉपी' चुनें और फिर इन शीट को वर्कबुकबी.एक्सएलएक्स पर ले जाएं। आप कर चुके हैं !


यह स्पष्ट नहीं है कि आपका उत्तर प्रश्न की समस्या को कैसे हल करता है। क्यों कदम अलग तरीके से काम करेंगे तो कॉपी काम करेंगे?
मेत्से जुहेस

मैंने आपके प्रस्तावित समाधान की कोशिश की और यह काम नहीं करता है। संपूर्ण शीट को कॉपी करने और स्थानांतरित करने के बीच कोई अंतर नहीं है।
nixda
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.