कई सेल वैल्यू (तुलना) के आधार पर पंक्तियों को छिपाएँ और अनसाइड करें


0

मैं कुछ कंपनियों (ए, बी, सी, डी) के विवरणों की तुलना करने की कोशिश कर रहा हूं, जो कोशिकाओं A1 और B1 में ड्रॉप-डाउन सूची में प्रस्तुत किया गया है। मैं पंक्तियों को छिपाने के लिए एक VBA रूटीन (आगे नीचे प्रस्तुत) का उपयोग कर रहा हूं जब पूरी पंक्ति का कोई मूल्य नहीं है, लेकिन एक मान के साथ भी अप्रयुक्त रहें

इस उदाहरण 1 के लिए, दिनचर्या को किसी भी पंक्तियों को छिपाना नहीं चाहिए, लेकिन यह दोनों पंक्तियों 2 और 3 को छिपाता है लेकिन पंक्ति 4 छिपी नहीं है

    A           B
1   Company A   Company B
2   las vegas
3               boston
4   north       north

मैं यह कैसे सुनिश्चित करूँ कि VBA उदाहरणों में 2 और 3 पंक्तियों को नहीं छिपाएगा?

मैंने निम्नलिखित कोड का उपयोग किया है:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range, c As Range

    Set r = range[a2:b3]
    Application.ScreenUpdating = False
    For Each c In r
        If Len(c.Value) > 0 Then
            c.EntireRow.Hidden = False
        Else
            c.EntireRow.Hidden = True
        End If
    Next c
    Application.ScreenUpdating = True
End Sub

ऊपर इस्तेमाल किया गया VBA मूल्यों के एक कॉलम के लिए ही उपयोगी है, लेकिन तुलना के लिए कई कॉलम के लिए नहीं।

मैं यह कैसे हासिल कर सकता हूं?


"हम्प्टी डम्प्टी एक दीवार पर बैठी थी, / हम्प्टी डम्प्टी में बहुत गिरावट आई थी। राजा के सभी घोड़े और राजा के सभी लोग / हम्प्टी को फिर से एक साथ नहीं रखा जा सकता था।" हम में से दो ने इस प्रश्न का अर्थ निकालने की कोशिश की है, और, जबकि हमने इसे बेहतर किया है, हमने इसे ठीक नहीं किया है। कृपया अपने प्रश्न को संपादित करें और इसे स्पष्ट करने का प्रयास करें।
स्कॉट

मैंने आवश्यक संपादन किया है, आशा है कि यह स्पष्ट हो और धन्यवाद!
क्रेग सिया

मैं चाहूँगा कि पंक्ति में केवल 1 मान होने पर भी पंक्ति अप्रभावित रहे, लेकिन वर्तमान VBA पंक्ति को तब तक छिपाएगा जब तक कि पंक्ति 4 में दिखाए गए अनुसार 2 कॉलम में कम से कम 2 मान अगल-बगल न हों
क्रेग सिया

जवाबों:


1

मैं आपकी समस्या से थोड़ा हैरान हूँ। जब मैं आपकी दिनचर्या को चलाने की कोशिश करता हूं, तो यह तुरंत Set r =लाइन में आ जाता है, क्योंकि कम से कम दो तर्क Union()दिए जाने चाहिए । लेकिन, जब मैं इसे बदल देता हूं , तो यह चलता है, और रो 2 को छुपाता है लेकिन रो 3 को अप्राप्य छोड़ देता है।Set r = [a2:b3]

यह वही है जो मैंने करने की उम्मीद की थी।

यह प्रत्येक सेल को A2:B3व्यक्तिगत रूप से सीमा में देखता है , और उस पर कार्य करता है। यह ऊपर से नीचे तक की सीमा से गुजरता है, और फिर प्रत्येक पंक्ति के भीतर बाएं से दाएं होता है। (कम से कम यह डिफ़ॉल्ट व्यवहार है; इसे बदलना संभव हो सकता है।) तो ऐसा ही होता है:

  1. सेल को देखो A2। यह एक मूल्य है, इसलिए हम संयुक्त राष्ट्र छिपाने पंक्ति 2।
  2. सेल को देखो B2। इसका कोई मूल्य नहीं है, इसलिए हम पंक्ति 2 को छिपाते हैं।
  3. सेल को देखो A3। इसका कोई मूल्य नहीं है, इसलिए हम पंक्ति 3 को छिपाते हैं।
  4. सेल को देखो B3। यह एक मूल्य है, इसलिए हम संयुक्त राष्ट्र छिपाने पंक्ति 3।

और इसलिए रो 2 छिपा हुआ है और रो 3 अप्रभावित है।

आपको रेंज को देखने की जरूरत है, न केवल कोशिकाओं का एक गुच्छा , बल्कि पंक्तियों के एक समूह के रूप में (जिनमें से प्रत्येक कोशिकाओं का एक गुच्छा है)। आपके पास एक और चर होना चाहिए, जो तार्किक (ट्रू / फाल्स) मूल्यों को लेगा। प्रत्येक पंक्ति के लिए, चर को True पर सेट करके शुरू करें, जिसका अर्थ होगा "हाँ, इस पंक्ति में कोई डेटा नहीं है, जैसा कि मुझे पता है।" फिर, उस पंक्ति में प्रत्येक सेल के लिए, यदि सेल का मान है। ,,, गलत पर चर, जिसका अर्थ है "नहीं, इस पंक्ति रिक्त नहीं है।" सेट और तुम्हारे जाने के बाद एक पंक्ति में हर कोशिका देखा है पंक्ति के सेट Hiddenचर के मूल्य के लिए विशेषता।


अपने विस्तृत उत्तर की सराहना करें। हाँ, समस्या तब उत्पन्न होती है जब मैं पंक्ति 2 को अनसाइड करना चाहता हूँ, भले ही A2 का मान हो और B2 का कोई मूल्य नहीं है।
क्रेग सिया

मैं पूछ सकता हूं कि यह सुनिश्चित करने के लिए कि कोड को जोड़ने के लिए चर क्या हैं ताकि पंक्ति छिपी न हो? ऐसा इसलिए है क्योंकि कार्यपत्रक गतिशील है और मैं विभिन्न कंपनियों के बीच तुलना बदल रहा हूं और उनके मूल्य भी अपने आप बदल जाएंगे।
क्रेग सिया

मुझे यकीन नहीं है कि आप क्या पूछ रहे हैं। मैं सुझाव दे रहा हूं कि आप नियमित रूप से एक और स्थानीय चर जोड़ते हैं, जैसे rऔर c- नाम मनमाना है।
जी-मैन

क्या मुझे पता है कि अतिरिक्त चर कैसे जोड़ना है?
क्रेग सिया

क्या, वास्तव में, क्या आपको मदद की ज़रूरत है? आप स्थानीय चर घोषित करना जानते हैं - आपको उनमें से दो पहले ही मिल चुके हैं। आप और अधिक सीखेंगे यदि आप इस तरह के मौलिक प्रश्नों का अनुसंधान करना सीखते हैं। यहां कुछ शुरुआती बिंदु दिए गए हैं: (1) इस साइट ( सुपर उपयोगकर्ता ) में 1200 से अधिक प्रश्न हैं, जिन्हें [vba] टैग किया गया है, जिनमें से कई में संपूर्ण, VBA दिनचर्या को स्पष्टीकरण के साथ काम करना है। (2) Microsoft Office VBA संपादक में बहुत अच्छी अंतर्निहित मदद है। बस एक कीवर्ड पर क्लिक करें और F1 कुंजी दबाएं। (कुछ मदद दस्तावेज वास्तव में वेब पर हैं।)
जी-मैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.