दिलचस्प पोस्ट
मुझे जावास्क्रिप्ट के साथ पृष्ठभूमि में एक नई विंडो खोलने की जरूरत है, और सुनिश्चित करें कि मूल अभी भी केंद्रित है रेल पर रूबी में होस्टनाम या आईपी प्राप्त करना पायथन में एक से अधिक JSON ऑब्जेक्ट्स के साथ JSON फ़ाइल लोड और पार्स करना पायथन कक्षा में तरीकों की सूची कैसे प्राप्त करूं? अमेज़ॅन s3 को एचटीएमएल, जावास्क्रिप्ट और अजाक्स अनुरोध के साथ jQuery के साथ छवि अपलोड करना (कोई PHP नहीं) दो स्थानों या साधारण पूर्णांक तक दशमलव दिखाने के लिए स्ट्रिंग फ़ॉर्मेट का उपयोग करना node.js () कैश की आवश्यकता है – संभव है कि अमान्य हो? मैं एक iPhone ऐप से सफारी कैसे लॉन्च कर सकता हूं? window.localStorage बनाम chrome.storage.local भारित यादृच्छिक संख्या विशेष रूप से एक लूप को अनवरोधित करने के लिए जीसीसी को बताएं मध्य में शब्दों के साथ एक क्षैतिज रेखा के लिए सीएसएस तकनीक IPython नोटबुक स्थान त्रुटि आईओएस अद्वितीय उपयोगकर्ता पहचानकर्ता स्थिर चर को कैसे प्रारंभ करें

Excel VBA में एक पंक्ति हटाएं

मेरे पास कोड का यह टुकड़ा है जो एक सूची से एक आइटम की एक्सल पंक्ति पाता है और एक सूची से वस्तुओं को हटाता है। मुझे क्या चाहिए … एक्सेल पंक्ति को भी हटाना है

कोड यहाँ है

Private Sub imperecheaza_Click() Dim ws As Worksheet Dim Rand As Long Set ws = Worksheets("BD_IR") Rand = 3 Do While ws.Cells(Rand, 4).Value <> "" And Rand < 65000 If ws.Cells(Rand, 4).Value = gksluri.Value * 1 And ws.Cells(Rand, 5).Value = gksluri.List(gksluri.ListIndex, 1) * 1 Then ws.Range(Rand, 1).EntireRow.Delete '(here I want to delete the entire row that meets the criteria from the If statement) gksluri.RemoveItem gksluri.ListIndex Exit Do End If Rand = Rand + 1 Loop End Sub 

जहां मैंने जोड़ा ws.Range (रैंड, 1) .EntireRow.Delete है, जहां मैं पूरी पंक्ति को हटाना चाहता हूं लेकिन मुझे नहीं पता कि यह कैसे करना है। मुझे क्या चाहिए … यदि उसे सेल में एक ही मान मिल रहा है जैसे मेरी सूची में से कुछ चयनित आइटम को Excel में पूरी पंक्ति और सूचीबॉक्ड से दोनों को हटाने में सक्षम हो यह सूचीबॉक्स से आइटम को हटाने के लिए काम करता है, लेकिन मुझे नहीं पता कि पंक्ति को कैसे हटाया जाए

वेब के समाधान से एकत्रित समाधान "Excel VBA में एक पंक्ति हटाएं"

क्रिस नीलसन का समाधान सरल है और अच्छी तरह से काम करेगा। थोड़ा छोटा विकल्प होगा …

 ws.Rows(Rand).Delete 

… नोट: परिभाषा के अनुसार पंक्ति को हटाने पर शिफ्ट को निर्दिष्ट करने की कोई आवश्यकता नहीं है, बाईं ओर स्थानांतरित करना संभव नहीं है

संयोग से, पंक्तियों को हटाने का मेरा पसंदीदा तरीका उपयोग करना है …

 ws.Rows(Rand) = "" 

… प्रारंभिक लूप में मैं तब इन पंक्तियों को डेटा के नीचे धक्का करने के लिए सॉर्ट फंक्शन का उपयोग करता हूं। इसका मुख्य कारण यह है कि एकल पंक्तियों को हटाना बहुत धीमी प्रक्रिया हो सकती है (यदि आप> 100 हटा रहे हैं)। यह भी सुनिश्चित करता है कि रॉबर्ट इल्ब्रिक की टिप्पणी के अनुसार कुछ भी नहीं मिट जाता है

आप एक मैक्रो रिकॉर्डिंग और इस विशेषज्ञ एक्सेल वीडियो में दिखाए गए कोड को कम करके सॉर्ट करने के लिए कोड सीख सकते हैं। मैं एक संदेह है कि सबसे अच्छे तरीके (रेंज ("ए 1: Z10")। सॉर्ट करें कुंजी 1: = रेंज ("ए 1"), ऑर्डर 1: = xlSortAscending / descending, हैडर: = xlYes / नहीं) केवल पूर्व- एक्सेल के 2007 संस्करण … लेकिन आप हमेशा 2007/2010 समकक्ष कोड को कम कर सकते हैं

जोड़े को और अधिक अंक … यदि आपकी सूची पहले से एक कॉलम द्वारा सॉर्ट नहीं हुई है और आप ऑर्डर को बरकरार रखना चाहते हैं, तो आप पंक्ति संख्या 'रैंड' को प्रत्येक पंक्ति के दाईं ओर एक अतिरिक्त कॉलम में छड़ी कर सकते हैं, जैसा कि आप लूप के माध्यम से करते हैं। आप तब उस टिप्पणी के अनुसार सॉर्ट करेंगे और इसे खत्म करेंगे

यदि आपकी डेटा पंक्तियों में स्वरूपण होते हैं, तो आप नई डेटा श्रेणी का अंत खोजना चाहते हैं और उन पंक्तियों को हटा सकते हैं जिन्हें आपने पहले साफ़ कर दिया था। यह फ़ाइल आकार नीचे रखने के लिए है ध्यान दें कि प्रक्रिया के अंत में एक बड़ा हटाए जाने से आपके कोड के निष्पादन को उसी तरीके से कम नहीं होगा जिस तरह से एकल पंक्तियों को हटाना होता है

चेतावनी।

यदि आप एक लूप में एक से अधिक पंक्ति हटाते हैं (ऊपर से नीचे तक चल रहे हैं), तो सुनिश्चित करें कि आप लूप उलटा रहे हैं, नीचे से नीचे तक जा रहे हैं

अन्यथा आपका लूप आपके द्वारा हटाए जाने के बाद ही पंक्ति को छोड़ देगा। नीचे से ऊपर से लूप को बदलकर, आप इसे (प्रत्येक हटाए गए पंक्ति के बाद डबल जांच की कीमत पर) को रोकेंगे।

बेहतर अभी तक, उन सभी पंक्तियों को खींचने के लिए संघ का उपयोग करें, जिन्हें आप हटाना चाहते हैं, और फिर उन्हें एक बार में हटा दें। पंक्तियों को निरंतर नहीं होना चाहिए

 dim rng as range dim rDel as range for each rng in {the range you're searching} if {Conditions to be met} = true then if not rng is nothing then set rDel = union(rng,rDel) else set rDel = rng end if end if next rDel.entirerow.delete 

इस तरह आपको सॉर्टिंग या चीजों के बारे में चिंता करने की ज़रूरत नहीं है।

अपनी लाइन को बदलें

 ws.Range(Rand, 1).EntireRow.Delete 

सेवा मेरे

 ws.Cells(Rand, 1).EntireRow.Delete 

ऐसा कुछ ऐसा करेगा:

 Rows("12:12").Select Selection.Delete 

तो आपके कोड में ऐसा कुछ दिखाई देगा:

 Rows(CStr(rand) & ":" & CStr(rand)).Select Selection.Delete