एक्सेल 2010 सूत्र, मैं यह सूत्र कैसे लिखूं? (VBA)


0

मुझे अधिक अनुभवी एक्सेल VBA उपयोगकर्ताओं से थोड़ी मदद की आवश्यकता है।

मूल रूप से मेरे पास 3 कोशिकाओं के 2 समूह हैं (कुल 6 कोशिकाएं) यदि 3 कोशिकाओं में से एक समूह भरा है, तो उसे स्वीकार करने और एक संदेश बॉक्स वापस नहीं करने की आवश्यकता है।

यदि दो समूहों में से एक को (रिक्त) में नहीं भरा गया है या एक त्रुटि देता है, तो उसे "त्रुटि संदेशबॉक्स" दिखाना होगा

3 कोशिकाओं के दो समूह हैं: (A39, A40, A41) और (E39, E40, E41)

यह वर्तमान में मेरे सूत्र में है:

If IsError(Range("E39, E40, E41")) Then MsgBox ("error msgbox"): Exit Sub
If Range("E39, E40, E41") = Blank Then MsgBox ("error msgbox"): Exit Sub

मैं इस सूत्र में A39, A40, A41 को कैसे जोड़ूं ताकि यदि समूह 1 (A39, A40, A41) या
समूह 2 (E39, E40, E41) भरे हुए हैं, इसमें "त्रुटि संदेशबॉक्स" नहीं लौटता है?

मैंने स्वयं इसके साथ फ़िडलिंग करने का प्रयास किया है, लेकिन यदि सभी 6 कक्षों में नहीं भरा गया तो यह एक "त्रुटि संदेशबॉक्स" लौटाएगा।

मैंने AND, OR कथनों को देखने की कोशिश की है, लेकिन मुझे वह फ़ंक्शन नहीं मिल सकता है जो मुझे चाहिए।

यहाँ एक तस्वीर है जो मदद कर सकती है

enter image description here

किसी भी तरह की सहायता का स्वागत किया जाएगा


क्या समूह के किसी एक सेल को खाली छोड़ा जा सकता है, या सभी सेल को खाली रहने की आवश्यकता है? यदि केवल 5 सेल भरे गए (संदेश बॉक्स दिखाए गए या नहीं) तो क्या होगा? क्या आप पुष्टि कर सकते हैं कि आप एक संदेश बॉक्स देखना चाहते हैं यदि दोनों समूह (या त्रुटि पर) भरे नहीं हैं?
Dave

हे उत्तर देने के लिए धन्यवाद, यदि समूह में 3 में से एक कक्ष रिक्त है, तो उसे एक त्रुटि संदेशबॉक्स को वापस करने की आवश्यकता है (समूह में सभी 3 कक्षों का मान होना आवश्यक है), यह स्पष्ट रूप से त्रुटि को वापस करने की आवश्यकता है यदि दोनों समूह रिक्त हैं / एक त्रुटि लौटाओ
12022014

आपकी अंतिम टिप्पणी मुझे थोड़ा सा भ्रमित कर रही है (क्षमा करें)। आप वास्तव में क्या कह रहे हैं (मुझे लगता है), यदि कोई सेल (या सेल) कोई त्रुटि या रिक्त है, तो संदेश बॉक्स दिखाएं?
Dave

अरे, तो आप (और बाकी सभी) के पास अधिक जानकारी है जो मैंने एक साधारण छवि बनाने का फैसला किया है: s12.postimg.org/3y2y5xrv1/Geen_naam.png
12022014

जवाबों:


1

आपको अपने कोड में कुछ समस्याएं हैं। पहले तो, Range("E39, E40, E41") उन तीन कोशिकाओं को संदर्भित नहीं करता है। आपको उन्हें उद्धरण के बाहर अल्पविराम से अलग करने की आवश्यकता होगी Range("E39", "E40", "E41")

दूसरी बात, यह ठीक से मूल्यांकन करने के लिए कि क्या वे कोशिकाएँ खाली हैं, आपको उन्हें अपने में अलग करने की आवश्यकता है IF कथन, जैसा कि:

If Range("E39") = "" Or Range("E40") = "" Or Range("E41") = "" Then
    'code here
End If

एक ही इशारे के लिए जाता है:

If IsError(Range("E39")) Or IsError(Range("E40")) ...

हालाँकि, तब तर्क को समूहीकृत करने के लिए आपको एक अलग तरह से सोचने की आवश्यकता है, क्योंकि यह त्रुटि को फेंक देगा जब उन कोशिकाओं में से कोई भी खाली हो / जिसमें कोई त्रुटि हो। तो आप जो विचार कर सकते हैं वह दो नए चर जोड़ रहा है जो आप के रूप में सेट करते हैं True या False इस पर निर्भर करता है कि समूह सही ढंग से भरा है या नहीं। उदाहरण:

Dim isFilled1 as Boolean = False
Dim isFilled2 as Boolean = False

If Not Range("E39") = "" Or Not Range("E40") = "" Or Not Range("E41") = "" Then
    'All the cells in this range contain a value so set isFilled1 to True
    isFilled1 = True
End If

If IsError(Range("E39")) Or IsError(Range("E40")) Or IsError(Range("E40")) Then
    'The cells may contain values, but one or more evaluated as an error therefore set isFilled1 to False
    isFilled1 = False
End If

If Not Range("A39") = "" Or Not Range("A40") = "" Or Not Range("A41") = "" Then
    'All the cells in this range contain a value so set isFilled2 to True
    isFilled2 = True
End If

If IsError(Range("A39")) Or IsError(Range("A40")) Or IsError(Range("A40")) Then
    'The cells may contain values, but one or more evaluated as an error therefore set isFilled2 to False
    isFilled2 = False
End If

'Now check if isFilled1 or isFilled2 are True

If isFilled1 = True or isFilled2 = True Then
    'Hooray, one of the groups is properly filled
Else
    'Neither group is properly filled; show msgbox
    MsgBox("error msgbox")
End If

आपको अपनी स्थिति के अनुरूप इस कोड को मोड़ने की आवश्यकता हो सकती है लेकिन यह है कि मैं इसे कैसे समझूंगा।


मैंने इसे अपनी आवश्यकताओं के लिए संपादित किया, लेकिन यह काम नहीं करता है। जब समूह में 3 में से केवल 2 फ़ील्ड भरे जाते हैं, तो यह त्रुटि संदेश नहीं देता है। मुझे लगता है मुझे या बयान बदलने की जरूरत है?
12022014

या बयानों को बदलकर और बयानों ने वास्तव में काम किया। सहायता के लिए धन्यवाद!
12022014

मैं लगभग 5 घंटे में एक बार अंतिम कोड एक उत्तर के रूप में डालूँगा
12022014

शांत, खुशी है कि मैं मदद कर सकता है!
nagyben

0

मुझे इसे थोड़ा एडजस्ट करना था इसलिए यह मेरे द्वारा उपयोग की जा रही एक्सेल फाइल के साथ अच्छी तरह से काम करेगा।

धन्यवाद के साथ एक्सनटास (कोड के लिए) तथा डेव रूक (मेरी पोस्ट को संपादित करने के लिए) , यह अंतिम कोड है:

Dim isFilled1 As Boolean
Dim isFilled2 As Boolean

If Not Range("E39") = "" And Not Range("E40") = "" And Not Range("E41") = "" Then
'Set isFilled1 To True if these cells don't return an empty cell
isFilled1 = True
End If
If IsEmpty(Range("E39")) Or IsEmpty(Range("E40")) Or IsEmpty(Range("E41")) Then
'If these cells don't have a value, set isFilled1 to False
isFilled1 = False
End If

If Not Range("A39") = "" And Not Range("A40") = "" And Not Range("A41") = "" Then
'Set isFilled1 To True if these cells don't return an empty cell
isFilled1 = True
End If
If IsEmpty(Range("A39")) Or IsEmpty(Range("A40")) Or IsEmpty(Range("A41")) Then
'If these cells don't have a value, set isFilled1 to False
isFilled1 = False
End If

If isFilled1 = True Or isFilled2 = True Then
'One of the groups is properly filled
Else
'Neither group is properly filled; show msgbox
MsgBox ("error msgbox"): Exit Sub

मुझे कोशिकाओं में सूत्र को बदलना पड़ा E39, E40, E41, A39, A40, A41 साथ में:

= IF (ISERROR (old_formula), ""; (old_formula) ताकि एक त्रुटि लौटने पर यह एक खाली / खाली सेल प्रदर्शित करे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.