गुम हुई प्रविष्टियों को एक शीट से दूसरी में पॉप्युलेट करें


0

मेरे पास एक्सेल में दो शीट्स हैं। इस उदाहरण के लिए, शीट 1 और शीट 2।

शीट 1 : नाम , स्थान , लिंग के साथ 100 रिकॉर्ड

शीट 2 : नाम , स्थान , आयु के साथ 100 रिकॉर्ड

डेटा के स्रोत सिंक्रनाइज़ नहीं हैं, इसलिए, मेरे पास शीट 1 में मौजूद डेटा है जो शीट 2 में मौजूद नहीं है, मेरे पास शीट 2 में भी डेटा है जो शीट 1 में मौजूद नहीं है और मेरे पास मौजूद डेटा है दोनों चादरें। तो, शीट 1 में ऐसे नाम हो सकते हैं जो शीट 2 में नहीं हैं और इसके विपरीत।

मैं दोनों शीटों को एक तीसरी शीट में समेकित करने के लिए एक स्वचालित तरीके की तलाश कर रहा हूं और नाम और स्थान और जहां उपलब्ध आयु और लिंग को आबाद करता है। मुझे पता है कि यह एमएस एक्सेस में करना आसान होगा, लेकिन मेरे दर्शकों के कारण, मुझे इसे एक्सेल में रखने की आवश्यकता है और मैं VBA के लिए एक पूर्ण noob हूं: S

मैंने क्या किया है : शीट 3 पर, मैंने शीट 1 से डेटा निकालने के लिए सूत्र बनाए हैं और शीट 2 में मैंने एक फ़ील्ड ("X") जोड़ा है, जो यदि फ़ील्ड है तो फॉर्मूला "1" के साथ फ़ील्ड को लेबल करेगा। शीट 1 में मौजूद नहीं है और "0" के साथ लेबल करेगा यदि फ़ील्ड शीट 1 में मौजूद है। मेरे दिमाग में, मैं एक ऐसा तरीका ढूंढ रहा हूं जो यह बताएगा: "अगर फ़ील्ड" एक्स "शीट 2 =" 1 "में है। फिर उस डेटा को निकालें और उसे शीट 3 में जोड़ें, लेकिन यह सुनिश्चित करने के लिए अनिश्चित है कि कैसे करें :(


2
सुपर उपयोगकर्ता में आपका स्वागत है। दुर्भाग्य से, हम एक कोड-लेखन सेवा नहीं हैं। किसी विशेष कार्य को करने के लिए कोड के बारे में पूछने के बजाय, कृपया हमें बताएं कि आपने अब तक क्या प्रयास किया है (वर्तमान में आपके पास मौजूद किसी भी कोड सहित) और जहां आप फंस गए हैं ताकि हम आपकी विशिष्ट समस्या में मदद कर सकें। प्रश्न जो केवल कोड के लिए पूछते हैं, वे बहुत व्यापक हैं और उन्हें होल्ड पर या बंद किए जाने की संभावना है । कृपया पढ़ें मैं एक अच्छा सवाल कैसे पूछूं?
DavidPostill

डेविड मैं माफी मांगता हूं। मैंने इसके लिए कोड का उपयोग नहीं किया है, क्योंकि मैं केवल "हैलो वर्ल्ड" ट्यूटोरियल में गया हूं। मैंने क्या किया है: शीट 3 पर, मैंने शीट 1 से डेटा निकालने के लिए फॉर्मूला बनाया है और शीट 2 में मैंने एक फ़ील्ड जोड़ा है, जो फॉर्मूला "1" के साथ फ़ील्ड को लेबल करेगा यदि फ़ील्ड 1 में मौजूद नहीं है और "0" के साथ लेबल करेगा यदि फ़ील्ड शीट 1 में मौजूद है। मेरे दिमाग में, मैं एक ऐसा तरीका ढूंढ रहा हूं जो यह बताएगा: "यदि फ़ील्ड 2 में" एक्स "शीट 2 =" 1 "में है, तो उस डेटा को निकालें और इसे शीट 3 में संलग्न करें, लेकिन यह करने के लिए अनिश्चित है कि :( क्या यह अभी भी सामान्य है?
स्टेमर805

खोज का प्रयास करें megre tables excelऔर आपको कुछ इस तरह मिलेगा: digdb.com/excel_add_ins/join_merge_tables_lists और अब आपको बस कोड को संशोधित करने की आवश्यकता है। (देखने के लिए दो क्षेत्रों के
समापक

हो सकता है कि उन्हें तालिकाओं में परिवर्तित करें और फिर सूत्रों का उपयोग करें? मुझे नहीं पता, यह VBA के साथ आसान होगा। Vba के साथ डेटा समेकित करने के लिए सुपरयुसर खोजें, मुझे यकीन है कि आपको कुछ मिलेगा।
रेस्टाफ़ेरियन

@Raystafarian, मैंने वह खोज की और पाया @ Ajedi32 ने ढाई साल पहले यह जवाब दिया था: रिबन पर डेटा टैब पर जाएं, "अन्य स्रोतों से", और "Microsoft क्वेरी से" पर क्लिक करें। फिर एक्सेल फाइल पर क्लिक करें, उस फाइल को चुनें जिसे आप वर्तमान में काम कर रहे हैं और ठीक क्लिक करें। फिर, हिट रद्द करें और जब आप Microsoft Query में संपादन जारी रखना चाहते हैं, तो "हां" पर प्रचारित करें। यहां से आप SQL बटन पर क्लिक कर सकते हैं और स्प्रैडशीट में किसी भी शीट पर एक कस्टम SQL क्वेरी लिख सकते हैं। मेरे मामले में: SELECT * FROM 'Sheet1 $' ' 'Sheet1$'UNION SELECT * FROM 'Sheet2$'`' Sheet2 $ '` `
stemar805

जवाबों:


0

यह एक बहुत मुश्किल VBA स्क्रिप्ट की आवश्यकता नहीं होगी।

यहाँ छद्म कोड है

Create Array that contains All Names from Sheet B
For i = 0 to CellFromACount
 IF A.Name is not in ArrayB
   SheetB.AddLine (Item)
Next

कोड लिखने के लिए, Excel vba tutorialखोज इंजन पर खोज करके कुछ ट्यूटोरियल का पालन करें। यहाँ उदाहरण: VBA ट्यूटोरियल

आपको जिन चीजों की आवश्यकता है, वे हैं:

  1. तार की सरणी
  2. सेल से मूल्य प्राप्त करें
  3. पाश के लिए
  4. अगर हालत
  5. शीट के नीचे नई लाइन जोड़ें

इसके लिए धन्यवाद, बहुत सराहना की। उम्मीद है कि इस मार्गदर्शन के साथ, मुझे पता है कि क्या देखना है और "मछली" कैसे सीख सकते हैं।
तना805

1
यह कोई उत्तर नहीं है। यह कार्य को पूरा करने के लिए निर्देश या कोड प्रदान नहीं करता है। यह सारांश प्रदान किए बिना बाहरी सामग्री का संदर्भ देता है। और यह उत्तर के लिए उपयोगकर्ता Google को सुझाव देता है।
रेस्टाफ़ेरियन

@ रेस्टाफेरियन, सहमत इस बात का जवाब नहीं है, लेकिन उस व्यक्ति ने मुझे बताया कि मुझे कार्य को पूरा करने के लिए किस प्रकार के कोड की आवश्यकता है। मुझे उनके लिए सही दिशा में इशारा करते हुए सराहना मिल रही थी। :)
तने .०५

वास्तव में, यह कार्य को पूरा करने के लिए समाधान प्रदान करता है और समाधान के लिए उसे जो कुछ भी करना पड़ता है उसका सारांश। मुझे नहीं लगता कि लक्ष्य 10 पन्नों के ट्यूटोरियल को एक उत्तर के रूप में लिखना था
जेवियर

@Raystafarian यह एक उत्तर के लिए मदद और सही रास्ता प्रदान करता है। भले ही यह StackExchange के "विकी" पहलू के बारे में भविष्य के संदर्भ के लिए मदद नहीं करता है, फिर भी यह उपयोगकर्ता को कुछ सरल करने के लिए उसे सही मार्ग का अनुसरण करने में मदद करता है। कभी-कभी, लोग इसे केवल खुद ही समझ सकते हैं :)
गिल सैंड

0

यह काम करना चाहिए। मॉड्यूल में रखें :

Public Sub sheetmerge()
Dim wkb As Workbook
Dim wks, wks1, wks2 As Worksheet
Set wkb = ThisWorkbook
Set wks = wkb.Sheets(1)
Set wks1 = wkb.Sheets(2)
Set wks2 = wkb.Sheets(3)
emptyRow1 = False
i = 1
k = 1
' Loops while there is data on sheet 1 column 1
While emptyRow1 = False
    found = False
    ' extracts the name from column 1, row i
    name1 = wks.Cells(i, 1)
    If name1 <> "" Then
        'As it is not empty then loop through Sheet2 names
        emptyRow2 = False
        j = 1
        While emptyRow2 = False
            name2 = wks1.Cells(j, 1)
            If name2 <> "" Then
                'As name2 is not empty then compare name and name 2
                If name1 = name2 Then
                    'If name1 is the same as name2 then put the data on Sheet3
                    wks2.Cells(k, 1) = name1
                    wks2.Cells(k, 2) = wks.Cells(i, 2)
                    wks2.Cells(k, 3) = wks.Cells(i, 3)
                    wks2.Cells(k, 4) = wks1.Cells(j, 3)
                    found = True
                    k = k + 1
                    'stop looping sheet2 by setting emptyrow2 to True
                    emptyRow2 = True
                End If
            Else
                'name2 is empty, then stop looping sheet2
                emptyRow2 = True
            End If
            j = j + 1
        Wend
    Else
        'name1 is empty then stop looping Sheet1
        emptyRow1 = True
    End If
    'if after looping there was no coincidence of names then put the data from Sheet1
    If found = False Then
        If name1 <> "" Then
            wks2.Cells(k, 1) = name1
            wks2.Cells(k, 2) = wks.Cells(i, 2)
            wks2.Cells(k, 3) = wks.Cells(i, 3)
            k = k + 1
        End If
    End If
    i = i + 1
Wend
'This area loops through Sheet2 seeking for coincidences
emptyRow2 = False
j = 1
While emptyRow2 = False
    found = False
    name2 = wks1.Cells(j, 1)
    If name2 <> "" Then
        emptyRow1 = False
        i = 1
        While emptyRow1 = False
            name1 = wks.Cells(i, 1)
            If name1 <> "" Then
                If name2 = name1 Then
                    found = True
                    emptyRow1 = True
                End If
            Else
                emptyRow1 = True
            End If
            i = i + 1
        Wend
    Else
        emptyRow2 = True
    End If
    ' If there wasn't a coincidence it means this name is in sheet2 but is not on Sheet1 so, put it in Sheet3.
    If found = False Then
        wks2.Cells(k, 1) = name2
        wks2.Cells(k, 2) = wks1.Cells(j, 2)
        wks2.Cells(k, 4) = wks1.Cells(j, 3)
        k = k + 1
    End If
    j = j + 1
Wend
End Sub

यह पर पंक्तियों के माध्यम से लूप sheet1 पर उन्हें डाल Sheet3 एक चौथा स्तंभ डाल अगर वहाँ के साथ है संयोग Sheet2

उसके बाद यह के माध्यम से लूप Sheet2 पर डाल पत्रक 3 पंक्तियों पर नहीं मिला sheet1


आपका बहुत बहुत धन्यवाद। मुझे कल एक जवाब मिला, लेकिन यह देखने के लिए जांच करेगा कि क्या यह आज (कुछ समय सीमा पर) काम करता है। कुछ करने के एक से अधिक तरीकों को जानना हमेशा अच्छा होता है! आपके समय के लिए फिर से धन्यवाद और मदद!
स्टेमार ५०

इसने बहुत अच्छा काम किया, लेकिन डुप्लिकेट को जोड़ा। मुझे वास्तव में इस कोड को सीखने की आवश्यकता है। बहुत - बहुत धन्यवाद!
तने805

मुझे पूरा यकीन है कि नीचे वह हिस्सा है जो खेतों की पहचान करता है। क्या आप सलाह दे सकते हैं कि मैं इसे कैसे बदल सकता / सकती हूं ताकि यह दूसरी पंक्ति पर शीर्षक को देख सके? मेरी चादर में वास्तव में 135 स्तंभ हैं और जानकारी बिखरी हुई है :(wks2.Cells(k, 1) = name1 wks2.Cells(k, 2) = wks.Cells(i, 2) wks2.Cells(k, 3) = wks.Cells(i, 3) wks2.Cells(k, 4) = wks1.Cells(j, 3)
स्टेमार805

मैंने इसे और अधिक स्पष्ट करने के लिए कोड में कुछ टिप्पणियां जोड़ीं। आपकी जानकारी के दूसरी पंक्ति पर शुरू तो लाइनों को बदलने i=1और j=1करने के लिए ì=2और j=2। कोड डेटा को दबाता है दोनों शीट्स कॉलम 1,2 और 3 में है। 135 कॉलम पर इसे खोजना बहुत मुश्किल हो सकता है।
jcbermu
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.