2011-12-12 17 views
8

का उपयोग करके सशर्त स्वरूपण मैं एक शीट पर सशर्त स्वरूपण की कोशिश कर रहा हूं। मैं निम्नलिखित सशर्त बयान के अनुसार एक निश्चित रंग के साथ कोशिकाओं भरने की जरूरत है:एंड() फ़ंक्शन

=AND((INDIRECT(ADDRESS(4;COLUMN()))>=INDIRECT(ADDRESS(ROW();4)));(INDIRECT(ADDRESS(4;COLUMN()))<=INDIRECT(ADDRESS(ROW();5)))) 

जब मैं में बयान कोशिश करते हैं और() अलग से समारोह, वे काम करने के लिए लग रहे हैं, लेकिन जब मैं उन में एक साथ रखा फ़ंक्शन मुझे कोई स्वरूपण नहीं दिख रहा है।

यहां कुछ पृष्ठभूमि है: "वर्तमान कॉलम" पंक्ति पंक्ति 4 में दिनांक (DATE1) है। "वर्तमान पंक्ति" (दिनांक 2 और DATE3) के डी और ई कॉलम पर भी तिथियां हैं। इसलिए, यदि DATE DATE और DATE3 के बीच है तो मैं सेल को रंग से भरना चाहता हूं।

मैं नहीं देख सकता कि सूत्र क्यों काम नहीं कर रहा है। किसी भी प्रकार की मदद की बेहद सराहना की जाती है।

अद्यतन (दिसम्बर 13, 2011):

मैं एक समारोह है कि मैं कोशिकाओं मैं इस कार्यक्षमता की जरूरत से फोन लागू किया। फ़ंक्शन पूर्णांक मान देता है। फिर सशर्त स्वरूपण केवल कोशिकाओं में पूर्णांक का उपयोग करता है। इस तरह, सशर्त स्वरूपण कम जटिल है। मैं लागू किए गए फ़ंक्शन में अप्रत्यक्ष (पता (ROW(); COLUMN())) गुजर रहा हूं। इसलिए, मेरे पास सापेक्ष और/या पूर्ण कोशिकाओं पर काम करते समय मुझे आवश्यक सारी जानकारी है। फ़ंक्शन में रेंज के रूप में वर्तमान सेल को पारित करने का एक आसान तरीका जानना बहुत अच्छा होगा।

नोट: ActiveCell मेरे लिए काम नहीं कर रहा था। यह सेल से डेटा का उपयोग करता है जिसे फ़ंक्शन चलाने के समय चुना जाता है। यही वह नहीं है जिसे मैं ढूंढ रहा हूं। मैं निश्चित रूप से सेल को पास कर सकता हूं (जैसे ए 4, बी 7, आदि) लेकिन मुझे यकीन नहीं है कि यह वास्तव में प्रदर्शन के मामले में महत्वपूर्ण है या नहीं।

आप सभी को धन्यवाद जिन्होंने मेरे प्रश्न का उत्तर दिया।

उत्तर

28

मुझे सशर्त स्वरूपण को तोड़ने और() के साथ एक ही समस्या हो रही थी। मैं बस और गुणा के रूप में इलाज करने की कोशिश करने के लिए हुआ, और यह काम करता है! AND() फ़ंक्शन को निकालें और बस अपने तर्कों को गुणा करें।एक्सेल बूलियन को सच के लिए 1 और झूठी के लिए 0 के रूप में मानेंगे। मैंने अभी इस सूत्र का परीक्षण किया और ऐसा लगता है कि यह काम करता है।

=(INDIRECT(ADDRESS(4,COLUMN()))>=INDIRECT(ADDRESS(ROW(),4)))*(INDIRECT(ADDRESS(4,COLUMN()))<=INDIRECT(ADDRESS(ROW(),5))) 
+0

मैंने समाधान की कोशिश नहीं की है, लेकिन यह समझ में आता है। जितनी जल्दी हो सके मैं कोशिश करूँगा। –

+0

@ डेविड अपने दोनों संपादन गलत थे। सबसे पहले, पता फ़ंक्शन पंक्ति को पहला तर्क मानता है। पंक्ति 4 आईएस पंक्ति "डी" है। आपने जो पंक्ति दी है वह वर्तमान पंक्ति पर कॉलम 4 और 5 है। इसके अलावा, सशर्त स्वरूपण कोशिकाओं पर नियम लागू करता है। पूरी पंक्ति को हाइलाइट करने के लिए नियम को पूरी पंक्ति के लिए सही मूल्यांकन करना होगा। लॉजिकल ऑपरेटरों के लिए, गलत का 0 का मान है और ट्रू का मान 1 है। TRUE - TRUE = 1 - 1 = FALSE मान्य या संचालन नहीं है। इसके अलावा, TRUE/FALSE = 1/0 = ERROR मान्य और संचालन नहीं है। मैंने सत्यापित किया है कि यह एक्सेल में कैसे काम करता है। – James

+1

एक ही समस्या थी, यह उत्तर अच्छी तरह से काम करता है। – perry

0

शायद यह कॉलम() और पंक्ति() फ़ंक्शंस के कारण है। मुझे यकीन नहीं है कि वे सशर्त स्वरूपण में कैसे लागू होते हैं। इस सूत्र से मूल्य के साथ एक नया कॉलम बनाने का प्रयास करें और फिर इसे अपनी स्वरूपण आवश्यकताओं के लिए उपयोग करें।

+0

प्रतिक्रिया के लिए धन्यवाद। मैं कोशिश करूँगा और वापस रिपोर्ट करूंगा। –

+0

मैंने एक समारोह में सूत्र को कार्यान्वित करना समाप्त कर दिया जहां मैं विभिन्न कारणों से पूर्णांक लौटाता हूं। सेल (ActiveCell.Row, 4) जैसे कुछ का उपयोग कर DATE2 और DATE3 को प्राप्त करना बहुत आसान था। वैल्यू। लेकिन जब DATE1, सेल (4, ActiveCell.Column) प्राप्त करने की बात आती है। वैल्यू चाल नहीं लगता है। शायद ऐसा इसलिए है क्योंकि, जब भी मैंने DATE2 या DATE3 को अद्यतन किया है, तो मैंने जो फ़ंक्शन लिखा है उसे हर बार नहीं कहा जाता है? मैं उस बिंदु पर फंस गया हूं जहां कभी-कभी काम करता है और कभी-कभी कोई विचार नहीं होता है? –

+0

क्या आपने अपना कार्य एप्लिकेशन के साथ घोषित किया था। वोल्टाइल? – ivan

3

आप एक बहुत ही सरल सूत्र का उपयोग कर सकते हैं। मैंने अभी परीक्षण करने के लिए एक नई कार्यपुस्तिका बनाई है।

Column A = Date1 | Column B = Date2 | Column C = Date3 

हाइलाइट स्तम्भ A और सशर्त स्वरूपण सूत्र दर्ज करें:

=AND(A1>B1,A1<C1) 
+0

प्रतिक्रिया के लिए धन्यवाद, लेकिन DATE1 को अन्य पंक्तियों के समान पंक्ति में रखना संभव नहीं है। –

+0

उस बिट को खेद है। तो हर पंक्ति के लिए भी यही सच है? DATE1 मान नीचे एक ही कॉलम 4 पंक्तियों में है? मैं आपके डेटा को देखने के लिए संघर्ष कर रहा हूं। क्या आप वर्कशीट या स्क्रीनशॉट संलग्न कर सकते हैं? –

+0

एक पंक्ति में, DATE2 (प्रारंभ) और DATE3 (अंत) की दो तिथियां हैं। और फिर, पंक्ति 10 से शुरू होने पर, उस पंक्ति के प्रत्येक कक्ष में संबंधित कॉलम की पंक्ति 4 की तारीख होती है। मैं आज बाद में एक स्क्रीनशॉट संलग्न करने की कोशिश करूंगा। –

0

COLUMN() और ROW() क्योंकि वे सेल है कि उन्हें बुला पर लागू होने वाली इस तरह से काम नहीं करेगा। सशर्त स्वरूपण में, आपको के बजाय के बजाय स्पष्ट होना होगा।

उदाहरण के लिए, आप सेल A1 पर एक सीमा के शुरुआत पर इस सशर्त formating उपयोग करना चाहते हैं, तो आप की कोशिश कर सकते हैं:

`COLUMN(A1)` and `ROW(A1)` 

एक्सेल स्वचालित रूप से वर्तमान सेल करने के लिए सशर्त formating अनुकूलित किया जाएगा।

+0

प्रतिक्रिया के लिए धन्यवाद। मैंने सेल में मान को अपडेट करना समाप्त कर दिया ताकि सशर्त स्वरूपण सेल मानों के अनुसार किया जाएगा। –

+0

खुश है कि आपको अंततः एक समाधान मिला। आप इसे एक उत्तर के रूप में पोस्ट कर सकते हैं और इसे स्वीकार कर सकते हैं ताकि विषय किसी भी तरह से बंद हो जाएगा - http://stackoverflow.com/faq#howtoask – JMax

+0

देखें जब मैं इसके साथ पूर्णता कर रहा हूं, तो मैं ऐसा करूँगा। अभी भी hickups हैं। उदाहरण के लिए, एक स्क्रिप्ट चलाने के दौरान ActiveCell फ़ंक्शन चयनित सेल देता है। जो कोई समझ नहीं आता है। इसलिए मैं ऐसा कुछ ढूंढ रहा हूं जो वर्तमान सेल को वापस कर दे, जहां फ़ंक्शन निष्पादित किया गया हो। मैं जल्द ही एक उत्तर के साथ वापस आऊंगा ... –

1

मैं एक कम जटिल फार्मूले के साथ एक ऐसी ही समस्या थी:

= If (x > A & x <= B) 

और पाया कि मैं AND निकालें सकता है और साथ +

= (x > A1) + (x <= B1)  [without all the spaces] 

आशा इस मदद करता है दो तुलना में शामिल होने के कम जटिल तुलना वाले अन्य।

0

मैं वर्तमान में एक्सेल एप्लिकेशन के लिए बहुत सारे विरासत कोड के साथ ज़िम्मेदार हूं। इस कोड के सबसे धीमे टुकड़ों में से एक 6 कॉलम में 500 पंक्तियों के माध्यम से लूपिंग कर रहा था, प्रत्येक के लिए सशर्त स्वरूपण सूत्र सेट कर रहा था। , मूल रूप से लिखा सूत्रों की पहचान के लिए जहां कक्ष सामग्री गैर खाली हैं, लेकिन नामांकित श्रेणी का भाग नहीं है, इसलिए सेल में ही दो बार बात कर रहे हैं के रूप में:

=AND(COUNTIF(<rangename>,<cellref>)=0,<cellref><>"") 

जाहिर ओवरहेड्स ज्यादा से कम हो जाएगा प्रत्येक कॉलम (रेंज) में सभी कक्षों को एक बार में अपडेट करना। लेकिन, जैसा कि ऊपर वर्णित है, पते का उपयोग कर (आरओडब्ल्यू(), स्तंभ(), एन) इस परिस्थिति में काम नहीं करता है, यानी यह काम नहीं करता:

=AND(COUNTIF(<rangename>,ADDRESS(ROW(),COLUMN(),1))=0,ADDRESS(ROW(),COLUMN(),1)<>"") 

मैं एक खाली कार्यपुस्तिका के साथ बड़े पैमाने पर प्रयोग किया और कोई मिल सकता है ISBLANK जैसे विभिन्न विकल्पों का उपयोग करके इस के आसपास रास्ता। अंत में, इस से बचने के लिए, मैं दो उपयोगकर्ता-परिभाषित प्रकार्य (एक टिप मैं इस साइट पर कहीं भी पाई का प्रयोग करके) बनाया:

Public Function returnCellContent() As Variant 

    returnCellContent = Application.Caller.Value 

End Function 

Public Function Cell_HasContent() As Boolean 

    If Application.Caller.Value = "" Then 
    Cell_HasContent = False 
    Else 
    Cell_HasContent = True 
    End If 

End Function 

सशर्त सूत्र है:

=AND(COUNTIF(<rangename>,returnCellContent()=0,Cell_HasContent()) 

जो काम करता है ठीक।

इसने एक्सेल 2010 में 5s से 1s तक कोड को बढ़ा दिया है। चूंकि यह कोड तब भी चलाया जाता है जब भी एप्लिकेशन में डेटा लोड होता है, यह बचत उपयोगकर्ता के लिए महत्वपूर्ण और ध्यान देने योग्य है। यह भी बहुत साफ और पुन: प्रयोज्य है।

मैंने इसे पोस्ट करने के लिए समय निकाला है क्योंकि मुझे इस साइट या अन्य जगहों पर कोई जवाब नहीं मिल रहा है जो सभी परिस्थितियों को कवर करता है, जबकि मुझे यकीन है कि उपरोक्त दृष्टिकोण से लाभ प्राप्त करने वाले अन्य लोग हैं, संभावित रूप से अद्यतन करने के लिए कोशिकाओं की बड़ी संख्या के साथ।

0

एक्सेल 2016 का उपयोग करते हुए अन्य लोगों की रिपोर्ट के समान मुद्दे। पाया गया कि टेबल के विरुद्ध सशर्त सूत्र लागू करते समय; और, शर्तों को गुणा करना, और शर्तों को जोड़ना विफल रहा। मुझे TRUE/FALSE तर्क स्वयं बनाना था:

=IF($C2="SomeText",0,1)+IF(INT($D2)>1000,0,1)=0 
संबंधित मुद्दे