एक्सेल - एक विशिष्ट मापदंड के आधार पर सेल के लिए एक मैक्रो कॉपी

मुद्दा

मैं फँस गया हूँ। मुझे उम्मीद है कि आज कोई मेरी मदद कर सकता है। मेरे पास 1400 पंक्तियों के साथ एक एक्सेल स्प्रेडशीट है। पहली 3 पंक्तियाँ अप्रासंगिक (हेडिंग) हैं। मेरे पास $ ट्रिंग सामग्री (B: C: D) के साथ 3 सेल हैं। मुझे जो करने की आवश्यकता है वह एक मैक्रो बनाने के लिए है जो विशेष रूप से कॉलम बी और कॉलम डी में गैर-शून्य मानों के लिए देख सकता है। इस स्प्रेडशीट में कई सेल हैं जिनका मूल्य समान होना चाहिए। कॉलम बी और डी की तुलना की जानी चाहिए, और गैर-अशक्त मूल्यों के साथ मिलनी चाहिए। और, उसी उदाहरण में जहां कॉलम बी भी फिर से पाया जाता है (लूप) (एक ही सेल सामग्री, लेकिन अलग-अलग पंक्ति) कर्नल डी में एक शून्य मान (लापता सामग्री) होगा। मुझे इस Col D को पहले रिकॉर्ड के समान सामग्री के साथ भरना होगा जिसमें Col B और D सामग्री थी। मेरे उदाहरण में मूल्य कठिन कोडित है, मुझे नहीं पता कि इसे कैसे करना है। मैं बहुत खो गया हूं और इसे पूरा करने के लिए मुझे कुछ मदद की जरूरत है। यह वही है जो मेरे पास है।

 Sub _MacroUser10 () I = वर्कशीट ("शीट 2") डिम डी डिम jd = 1 'लूप काउंटर j = 4' 4 वीं पंक्ति में प्रारंभ होने के कारण हेडिंग टू डू एक्टिवसील (I.Range ("B" & j) = " उपयोगकर्ता पोर्टफोलियो समूह ") और ActiveCell (I.Range (" D "& j null)) 'लूप यदि I.Range (" B "& j) =" User2010 "तो' सेल 'का हकदार User2010 है ... आदि यदि I .Range ("D" & j) = "" तब 'D d = d + 1 एंड में i nows मान ढूंढना चाहिए यदि i .ows (d) .Value = I.Rows (j) .Value End if j = j + 1 लूप अंत उप 

सब मिलाकर। मुझे सेल B $ में सामग्री देखने और सेल D $ में सामग्री देखने की आवश्यकता है। दोनों स्थानों में सामग्री के साथ एक पंक्ति होगी। फिर मुझे उन सभी मेल खाने वाली पंक्तियों को खोजने की जरूरत है जो B $ से मेल खाते हैं जिनका D $ में कोई मूल्य नहीं है। मुझे उन अनुपलब्ध मानों को गैर-शून्य D $ से null D $ में जोड़ने की आवश्यकता है।

उपाय

यदि मामला हमेशा ऐसा होता है कि भरी हुई पंक्ति रिक्त एक से पहले होगी, तो आप शब्दकोश ऑब्जेक्ट का उपयोग कर सकते हैं। उसके लिए

  • अंत तक अपनी पहली पंक्ति के माध्यम से लूप
  • यदि दोनों कोशिकाएँ खाली नहीं हैं, तो B और D के मूल्य को C और मान के C के मान को जोड़ दें।
  • जैसा कि आप पंक्तियों के माध्यम से जाते हैं, पहले जांचें कि क्या वह शब्दकोष में है, यदि हां, तो आपके पास शब्दकोष में कुछ और है

 'dic ऑब्जेक्ट बनाने के लिए सेट करें dicMyDic = CreateObect ("Scripting.Dictionary")' यह है कि कैसे कुंजी strKey = B1 & "हो सकती है।" & D1 'की जाँच करें कि D का मान रिक्त है या नहीं' यदि dic को मान जोड़ने के लिए (dicMyDic.Exists (strKey)) तो dicMyDic.Add कुंजी: = strKey, Item = = वैल को dic IF से मान प्राप्त करना है। (dicMyDic.Exists (strKey)) इसके बाद val = dicMyDic (strKey) 

इस टिप के लिए rizvisa1 का धन्यवाद।

पिछला लेख अगला लेख

शीर्ष युक्तियाँ