EXCEL VBA to find duplicate rows and sum rows -
विक्रेता और विक्रेता भुगतान जानकारी के साथ 10,000+ पंक्तियाँ यदि स्तंभ, ए, सी, डी, एफ, जी, एच में फ़ील्ड के आधार पर डुप्लिकेट हैं, तो मैं कॉलम के और एल में राशि की राशि जोड़ना चाहता हूं और इसके लिए 1 एंट्री / पंक्ति रखना है।
नीचे की तस्वीर का नतीजा है।
मैं यदि संभव हो तो शब्दकोश स्क्रिप्ट का उपयोग करना चाहता हूं लेकिन मैं इसका उपयोग कैसे नहीं कर पाता यह सिर्फ कुशल लगता है, यदि नहीं, तो अलग विधि भी ठीक है। कोई भी सहायता कर सकता है ????? मैं बहुत सराहना करता हूं !!
यह एक मजेदार है, इसलिए मैंने इसे लिखा है। मूलतः यह स्क्रिप्ट आपके wsFROM का इलाज करती है जैसे कि यह एक डेटाबेस तालिका थी, तो यह आपके लिए क्या आवश्यक करने के लिए एसक्यूएल कथन पर लागू होगा और परिणाम वसूली के लिए निकाल देगा यह बहुत जल्दी चलना चाहिए, हालांकि यह 20000 रिकॉर्ड है विकल्प चादर में हर पंक्ति के माध्यम से पाश के लिए होगा और फिर यह देखना है कि क्या ऐसा दूसरों है और परिणाम जोड़ें। यह उन 20 मिनटों में से एक होगा जो दुःस्वप्न वाले वीबीए कार्यक्रमों में से एक है, जहां यह कुछ दर्जन सेकंड में चलना चाहिए।
सुनिश्चित करें कि आप SET wsFROM ... और
सेट करें wsTO ... अपने कार्यपत्रकों के लिए लाइनें इसके अलावा, मेरा मानना है कि यह आपके डेटा के साथ काम करना चाहिए जैसा है।
उप एक्सेल एसक्यूएल () 'चर ऑब्जेक्ट डिम आरएस के रूप में ऑब्जेक्ट दीम स्ट्रफाइल के रूप में स्ट्रिंग के रूप में, strsQL स्ट्रिंग के रूप में, strConn as स्ट्रिंग मंद wsFrom वर्कशीट के रूप में, wsTo के रूप में वर्कशीट 'डेटा और वर्कशीट के साथ कार्यपत्रक को सेट करने के लिए सेट करें' सेट करें wsFrom = वर्कशीट्स ("शीट 1") सेट करें wsTo = कार्यपत्रक ("शीट 2") '_tmp' के साथ एक नई फाइल बनाएं यह एक ही फ़ोल्डर में strFileName = ThisWorkbook.Path और amp; "/" & Amp; ThisWorkbook.Name strFileName = बदलें (strFileName, ".xls", "_tmp.xls") ThisWorkbook.SaveCopyAs strFileName 'फैंसी ADODB सामान .. अनिवार्य रूप से उस प्रतिलिपि को खोलें जो हम बस सहेजते हैं जैसे कि यह डेटाबेस सेट किया गया था objConn = CreateObject (" ADODB.Connection ") strConn =" प्रदाता = Microsoft.ACE.OLEDB.12.0; डेटा स्रोत = "& amp; स्ट्रफाइलनाम & amp; "; विस्तारित गुण =" "एक्सेल 12.0 एक्सएमएल; एचडीआर = हाँ," "ओजजॉन। ओपन स्ट्रकॉन 'यह एसक्यूएल स्ट्रिंग है जिसे हम एक्सेल / डेटाबेस से पूछते हैं। फ़ील्ड के नाम, पत्रक के पंक्ति 1 में दिए गए नाम हैं, एसआरएसक्यूएल = "SELECT [संख्या], [NAME], [ऊपर / नीचे], [एफवाईई], [जीएल_एसीएनजीआरजीआर], [जीएल_एसईजीसीडी], [एसीसीटीसी], [CODE] , [क्षेत्र], योग (राशि 1), योग (राशि 2) से ["& amp; wsFrom.Name & amp; "संख्या], [NAME], [ऊपर / नीचे], [एफवाईई], [जीएल_एसीएनजीआरजीआर], [जीएल_एसईजीसीडीडीए], [एसीसीटी #], [CODE], [क्षेत्र];" 'एक्सेल / डाटाबेस सेट एसएसएल कथन को लागू करने के लिए फैंसी एडीडीबी चीज आरएस = ऑब्जेक्ट सेट करें ("एडीओडीबी। रेकॉसेसेट") आर.एस.एस.एस.एस.एस.एस.एस.एल.एस.एल., ओजीसीएन' ऑब्जेक्ट डिम हैडर के रूप में ऑब्जेक्ट डिम हैडरकॉल पूर्णांक हेडरकॉल = 1 'फ़ील्ड के माध्यम से लूप रिकॉर्ड्स प्रत्येक प्रत्येक हेडर के लिए rs.fields 'उन्हें 1 पंक्ति (1, headerCol) में चिपकाएं। मूल्य = header.name' अगला कॉलम हैडरसीएल = हैदरकॉल + 1 अगला हेडर 'एसक्यूएल स्टेटमेंट के परिणाम कॉपी करें, रिकॉर्डसेट में संग्रहीत , करने के लिए शीट wsTo.Range ("ए 2") में। CopyFromRecordset रु 'इसे बंद करो। बंद करो objConn.Close' कि टीएमपी कार्यपुस्तिका को निकालें strfileName अंत उप
Comments
Post a Comment