मैं किसी विशेष सेल पर सशर्त स्वरूपण कैसे सेट कर सकता हूं जो किसी अन्य सेल के मूल्य पर निर्भर करता है?


69

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

A | B
1 | x
2 | 
3 | 
1 | x
1 | x
4 | 
8 |

// x can be any value and is here merely to mark the cell that should be formatted

महत्वपूर्ण 2014 नोट : फार्मूला पर आधारित सशर्त स्वरूपण जिसमें अन्य सेल शामिल हो सकते हैं, अब Google पत्रक में संभव है, और एक्सेल स्प्रेडशीट कैसे काम करती है, इसके समान काम करता है। यह उत्तर इसके उपयोग की व्याख्या करता है।


3
चूँकि आपने उस 2014 नोट को जोड़ा है, इसलिए कृपया चेकमार्क को ऐसे उत्तर में ले जाने पर भी विचार करें, जो आधुनिक दृष्टिकोण का वर्णन करता हो।

जवाबों:


50

Google Apps स्क्रिप्ट का उपयोग करके Google स्प्रेडशीट में जटिल सशर्त स्वरूपण प्राप्त किया जा सकता है। उदाहरण के लिए, आप एक ऐसा फ़ंक्शन लिख सकते हैं, जो अपने किसी एक सेल में मूल्य के आधार पर पूरी पंक्ति की पृष्ठभूमि का रंग बदलता है, कुछ ऐसा जो मुझे नहीं लगता कि "नियमों के साथ रंग बदलें" मेनू के साथ संभव है। आप शायद इस फ़ंक्शन के लिए ट्रिगर ऑन "एडिट", "ऑन ओपन" और "ऑन फॉर्म सबमिट" जैसे सेट करना चाहते हैं।

SetBackgroundRGB () फ़ंक्शन के लिए प्रलेखन

UPDATE: यहां कॉलम ए में मान के आधार पर संपूर्ण पंक्ति की पृष्ठभूमि का रंग बदलने का एक Google Apps स्क्रिप्ट उदाहरण है । यदि मान सकारात्मक है, तो हरे रंग का उपयोग करें। अगर खाली है, सफेद। नहीं तो लाल। इस सार्वजनिक Google स्प्रेडशीट में परिणाम देखें । (स्क्रिप्ट चलाने के लिए आपको साइन इन करना होगा, लेकिन साइन इन किए बिना आप अभी भी परिणाम देख सकते हैं)।

function colorAll() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var endRow = sheet.getLastRow();

  for (var r = startRow; r <= endRow; r++) {
    colorRow(r);
  }
}

function colorRow(r){
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getRange(r, 1, 1, 3);

  var data = dataRange.getValues();
  var row = data[0];

  if(row[0] === ""){
    dataRange.setBackgroundRGB(255, 255, 255);
  }else if(row[0] > 0){
    dataRange.setBackgroundRGB(192, 255, 192);
  }else{
    dataRange.setBackgroundRGB(255, 192, 192);
  }

  SpreadsheetApp.flush(); 
}

function onEdit(event)
{
  var r = event.source.getActiveRange().getRowIndex();
  if (r >= 2) {
    colorRow(r);
  }
}

function onOpen(){
  colorAll();
}


मुझे लाइन 13 पर त्रुटि मिली: var dataRange = sheet.getRange (r, 1, 1, 3); अगर मैं एक विशिष्ट नाम (जैसे डेविड) के अनुसार पंक्ति को रंगने के लिए इस स्क्रिप्ट का उपयोग करना चाहूंगा, तो मैं इसे कैसे बदलूंगा। और मैं शायद पृष्ठभूमि के बजाय फ़ॉन्ट बदलूंगा: setFontColor इसके अलावा, मैं अपनी स्प्रैडशीट पर स्क्रिप्ट कैसे चलाऊं? धन्यवाद

2
उदाहरण के लिए लिंक अब मान्य नहीं है। एक बार बनने के बाद आप इस स्क्रिप्ट का उपयोग कैसे करते हैं? वह इस जवाब से गायब है।
डैनियल विलियम्स

3
नीचे दिए गए मेरे उत्तर में वर्णित सबसे सामान्य उपयोग-मामलों के लिए अब एक सरल विकल्प है।
सैम ब्राइटमैन

1
Google स्प्रेडशीट लिंक दुर्भाग्य से टूट गया है। स्क्रिप्ट का उपयोग / सक्रिय करने के बारे में एक संक्षिप्त विवरण रखना अच्छा होगा। फिर भी महान जवाब है कि बस काम करता है। :)
ब्रिम्बोरियम

19

नए Google पत्रक के रूप में वर्णित है, तो आप ऐसा कर सकते हैं यहाँ । आपको पहले अपने Google ड्राइवर सेटिंग में नए स्प्रेडशीट को सक्षम करना होगा जैसा कि लेख में वर्णित है। फिर आप सशर्त फ़ॉर्मेटिंग विकल्पों में से 'कस्टम फॉर्मूला' चुन सकते हैं और किसी भी फॉर्मूले को दर्ज कर सकते हैं ( =उपसर्ग जोड़ना न भूलें !)। $उपसर्गों के बिना सेल संदर्भों को स्वचालित रूप से तब समायोजित किया जाता है जब आप अपेक्षा के अनुसार श्रेणियों में लागू होते हैं।

ऐसा लगता है कि पुराने से नए में माइग्रेशन के लिए समर्थन की कमी है - यह केवल नई शीट्स पर लागू होता है और मैंने पाया कि केवल मूल्यों को एक से दूसरे में कॉपी किया जा सकता है। पूरी शीट को कॉपी करना एक विकल्प हो सकता है।


1
इस पर ध्यान दिलाने के लिए धन्यवाद। यह वास्तव में ठीक वैसा ही काम करता है जैसा मैं चाहता हूं।
रॉबर्ट कोरिटनिक

इस समय अधिकांश पुराने स्प्रेडशीट नए Google शीट में माइग्रेट कर दिए गए थे, इसलिए माइग्रेशन के लिए समर्थन के बारे में नोट अप्रचलित है।
Ruben

2

मैंने इस वेब ऐप, कलर कोड + को एप्स-स्क्रिप्ट के साथ लिखा है , जिसमें अधिकांश बुनियादी सशर्त स्वरूपण जरूरतों को शामिल किया गया है। कुछ नियमों में फेंक और यह कोड है कि आप तो अपने स्प्रेडशीट में पेस्ट कर सकते हैं, के तहत थूक से बाहर कर देंगे उपकरणस्क्रिप्ट संपादक ... । ( Google फ़ोरम पर थ्रेड मदद करें ।)


1

Google शीट्स के सशर्त प्रारूप नियम इस तरह दिखते हैं यदि आप सशर्त रूप से लाल पृष्ठभूमि के साथ प्रारूपित करना चाहते हैं यदि दो कक्षों में योग 3 सेल में भिन्न है:

Google पत्रक एकल रंग और कस्टम सूत्र के साथ सशर्त प्रारूप नियम बनाता है


0

सशर्त स्वरूपण - कस्टम सूत्र

range 2:227

= if($i:$i = "Duplicate",True,False)

उस रंग का चयन करें जिसे आप पंक्ति हाइलाइट करना चाहते हैं।


0

(फरवरी 2017) जैसा कि एक अन्य उत्तर में बताया गया है, Google शीट्स अब उपयोगकर्ताओं को उपयोगकर्ता इंटरफ़ेस से सीधे सशर्त स्वरूपण को जोड़ने की अनुमति देती है, चाहे वह डेस्कटॉप / लैपटॉप, एंड्रॉइड या आईओएस उपकरणों पर हो। हालांकि, इस जवाब के बाकी मुख्य रूप से डेवलपर्स के लिए है क्योंकि आप एप्लिकेशन को "डू" सशर्त स्वरूपण लिख सकते हैं।

साथ Google शीट एपीआई v4 (और नया), डेवलपर्स अब अनुप्रयोगों कि सशर्त फ़ॉर्मेटिंग नियमों CRUD लिख सकते हैं। की जाँच करें गाइड और नमूने अधिक जानकारी के लिए पृष्ठों के साथ ही संदर्भ डॉक्स (के लिए खोज {add,update,delete}ConditionalFormatRule)। गाइड इस पायथन स्निपेट ( एपीआई सेवा समापन बिंदु के रूप में SHEET_IDऔर के SHEETSरूप में एक फ़ाइल आईडी ) की सुविधा देता है:

myRange = {
    'sheetId': 0,
    'startRowIndex': 1,
    'endRowIndex': 11,
    'startColumnIndex': 0,
    'endColumnIndex': 4,
}

reqs = [
    {'addConditionalFormatRule': {
        'index': 0,
        'rule': {
            'ranges': [ myRange ],
            'booleanRule': {
                'format': {'textFormat': {'foregroundColor': {'red': 0.8}}}
                'condition': {
                    'type': 'CUSTOM_FORMULA',
                    'values':
                        [{'userEnteredValue': '=GT($D2,median($D$2:$D$11))'}]
                },
            },
        },
    }},
    {'addConditionalFormatRule': {
        'index': 0,
        'rule': {
            'ranges': [ myRange ],
            'booleanRule': {
                'format': {
                    'backgroundColor': {'red': 1, 'green': 0.4, 'blue': 0.4}
                },
                'condition': {
                    'type': 'CUSTOM_FORMULA',
                    'values':
                        [{'userEnteredValue': '=LT($D2,median($D$2:$D$11))'}]
                },
            },
        },
    }},
]

SHEETS.spreadsheets().batchUpdate(spreadsheetId=SHEET_ID,
        body={'requests': reqs}).execute()

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

सशर्त स्वरूपण उदाहरण

नोट: मेरा उत्तर यहाँ इस प्रश्न के लिए एसओ पर एक के समान है, सिवाय इसके कि मैंने पीएसए गिरा दिया क्योंकि इसे> 1 स्थान पर रहने की आवश्यकता नहीं है।


इस प्रश्न के कई उत्तर हैं और साथ ही SO संदर्भित प्रश्न पर भी। कौन सा "एक और उत्तर" है जो इस उत्तर को संदर्भित करता है? (:) दूसरी तरफ, जबकि इस साइट पर आने वाले लोग कोड लिख सकते हैं, मुझे लगता है कि उनमें से अधिकांश कस्टम कार्यों / उपयोगकर्ता परिभाषित कार्यों की तरह "एंड-यूज़र डेवलपमेंट" के रूप में ऐसा करते हैं। मुझे यकीन नहीं है कि जैसे शब्द CRUDउनमें से ज्यादातर से जाना जाता है और यह है कि वे उपयोगी सभी अतिरिक्त जानकारी है कि इस जवाब में शामिल किए गए हैं मिल सकता है।
रुबेन

0

'नए' शीट्स में क्यू की बारीकियों को संबोधित करने के लिए, मेरा सुझाव है कि B: B से किसी भी सशर्त स्वरूपण को साफ़ करने, कॉलम का चयन करने और एक कस्टम सूत्र लागू करने का है:

=A1=1

पसंद के प्रारूपण के साथ और Done


0

सशर्त स्वरूपण का संपादन करते समय, कस्टम सूत्र का चयन करें और निम्नलिखित का उपयोग करें ...

=if(A1 = 1 , true)

अपने रंगों का चयन करें और आप कर रहे हैं।


-1

प्रश्न के स्पष्टीकरण के जवाब में संपादित करें:

आपकी Google स्प्रेडशीट विंडो में, "नियमों के साथ रंग बदलें" विकल्प के साथ एक मेनू प्रारूप है। यह उतना ही तकनीकी है जितना Google स्प्रेडशीट की सशर्त स्वरूपण है। जहां तक ​​मैं बता सकता हूं, एक सेल को दूसरे के मूल्य के आधार पर रंगने का कोई तरीका नहीं है - Google आपको अन्य कोशिकाओं के लिए सूत्र दर्ज करने की अनुमति नहीं देता है।

जब तक आप अन्य डेटा को कॉलम B में नहीं डालते, तब तक आप हमेशा सभी कॉलम B को समान स्तंभ A बना सकते हैं, और फिर "सेल के साथ रंग बदलें" विकल्प का उपयोग करके सभी कोशिकाओं को 1 के मान से रंग दें जैसे कि रंग - जैसे। लाल पृष्ठभूमि और लाल पाठ जब मान 1 होता है, तो सफेद पृष्ठभूमि और सफेद पाठ जब यह नहीं होता है, तो प्रभावी रूप से स्तंभ बी में मान छिपाते हैं। इससे आपको वह लुक मिलेगा जो आप चाहते हैं।

एक्सेल में, आप जो चाहें कर सकते हैं। उदाहरण के रूप में आपके डेटा का उपयोग करते हुए, मैंने सशर्त रूप से B1 का प्रारूपण किया है जब यह सूत्र सत्य है:

=IF(A1=1,true,false)

और फिर प्रारूपण को नीचे की ओर खींचा, जिसने B में केवल उन कोशिकाओं पर प्रकाश डाला जहां यह स्तंभ A में पड़ोसी है।

एक्सेल यह कर सकता है, लेकिन Google नहीं


मूल उत्तर

मुझे यकीन नहीं है कि आप इसे 2 कॉलम में कर सकते हैं, लेकिन मुझे पता है कि आप इसे 3 में कर सकते हैं:

 A  |  B  |  C
----------------
 1  |  f  |  x

B कॉलम में, आप यह IFदेखने के लिए सूत्र का उपयोग कर सकते हैं कि क्या x को उपयुक्त C कॉलम में रखा गया है:

=IF(C1="x",A1,"") 

IFपरीक्षण, - सूत्र 3 भागों में है तो मूल्य, और किसी और मूल्य। उपरोक्त उदाहरण में, सूत्र यह देखने के लिए जांचता है कि क्या xसी कॉलम में है। यदि वहाँ है, तो यह A1 से मान में प्रवेश करता है, अन्यथा, यह एक रिक्त में प्रवेश करता है। इससे कोई फर्क नहीं पड़ता कि xऊपरी या निचला मामला है।

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


1
मुझे लगता है आपने मुझे गलत समझ लिया। सवाल सशर्त स्वरूपण के बारे में है जो कोशिकाओं में मूल्यों को नहीं रखते हैं।
बजे रॉबर्ट कोरिटनिक

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