छायांकित कोशिकाओं की गणना


10

मैं साइन करने के लिए कर्मचारियों के लिए एक दैनिक कार्यक्रम के रूप में एक मैट्रिक्स (समय / गतिविधि) बनाने के लिए Google स्प्रेडशीट का उपयोग कर रहा हूं।

क्या एक स्तंभ में कोशिकाओं की संख्या की गणना करने का एक सूत्र है जो एक निश्चित रंग में छायांकित (या छायांकित नहीं) हैं?

उदाहरण के लिए: कोशिकाओं में से 20 ग्रे हैं और 31 ग्रे नहीं हैं (किसी अन्य रंग को छायांकित) और मैन्युअल रूप से उन्हें गिनने के बजाय, यह पहुंच स्तंभ के निचले भाग में इसकी गणना करता है।


@ W0lf के समाधान के साथ समस्या कैश से आती है। फ़ंक्शन लाइव अपडेट प्राप्त करने के लिए तैयार नहीं है। मैंने एक अतिरिक्त पैरामीटर के रूप में "अब ()" जोड़कर उस क्षमता को हासिल करने की कोशिश की, लेकिन यह काम नहीं किया।
गर्मी

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

जवाबों:


17

मैंने ऐसा करने का एक तरीका ढूंढ लिया है, जो Google स्प्रेडशीट द्वारा प्रदान की जाने वाली स्क्रिप्टिंग कार्यक्षमता का उपयोग करता है।

यह कैसे करना है:

  • अपनी स्प्रैडशीट खोलें
  • मेनू में, टूल्स पर जाएं -> स्क्रिप्ट एडिटर ...; यह एक नई विंडो खोलेगा जो आपको कोड दर्ज करने की अनुमति देगा
  • नीचे दिए गए कोड को कॉपी करें
  • स्क्रिप्ट संपादक विंडो में कोड पेस्ट करें और इसे सहेजने के लिए CTRL+ दबाएंS
  • स्क्रिप्ट एडिटर विंडो बंद करें और स्प्रेडशीट पर वापस जाएं

कोड:

function getBackgroundColor(rangeSpecification) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var cell = sheet.getRange(rangeSpecification);
  return cell.getBackground();
}

function sumWhereBackgroundColorIs(color, rangeSpecification) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var range = sheet.getRange(rangeSpecification);
  var x = 0;
  for (var i = 1; i <= range.getNumRows(); i++) {
    for (var j = 1; j <= range.getNumColumns(); j++) {
      var cell = range.getCell(i, j);
      if(cell.getBackground() == color)
        x += parseFloat(cell.getValue());
    }
  }
  return x;
}

function countCellsWithBackgroundColor(color, rangeSpecification) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var range = sheet.getRange(rangeSpecification);
  var x = 0;
  for (var i = 1; i <= range.getNumRows(); i++) {
    for (var j = 1; j <= range.getNumColumns(); j++) {
      var cell = range.getCell(i, j);
      if(cell.getBackground() == color)
        x++;
    }
  }
  return x;
}

उपरोक्त चरणों का पालन करने के बाद, आपके पास स्प्रैडशीट में तीन और कार्य उपलब्ध हैं:

  • countCellsWithBackgroundColor(<color>, <range specification>)
  • sumWhereBackgroundColorIs(<color>, <range specification>)
  • getBackgroundColor(<cell specification>)

कृपया ध्यान दें कि <range specification>और A1 नोटेशन <cell specification>में व्यक्त किए गए हैं , और उद्धरणों में संलग्न होने चाहिए

उदाहरण के लिए, बी 2: एफ 13 में सभी कोशिकाओं की गिनती प्राप्त करने के लिए जिनकी पृष्ठभूमि का रंग सफेद है , आपको निम्नलिखित सूत्र दर्ज करना चाहिए:

=countCellsWithBackgroundColor("white", "B2:F13")

और समान कोशिकाओं के योग की गणना करने के लिए, सूत्र का उपयोग करें:

=sumWhereBackgroundColorIs("white", "B2:F13")

कुछ कोशिकाओं में पृष्ठभूमि को 'सफ़ेद', 'धूसर' जैसे रंग के लिए सेट नहीं किया जा सकता है, लेकिन आरजीबी रंग की तरह #6fa8dc। आप अनुमान नहीं लगा सकते हैं कि रंग क्या है, इसलिए यदि आप सेल के लिए रंग का पता लगाना चाहते हैं (उदाहरण के लिए B9), तो आपको सेल में इस सूत्र को दर्ज करना चाहिए:

=getBackgroundColor("B9")

और बाद में ऊपर दिए गए दो कार्यों के लिए एक पैरामीटर के रूप में इस मान का उपयोग करें।

ऐसा प्रतीत होता है कि यदि सेल की पृष्ठभूमि का रंग "थीम रंग" getBackground()है , तो गलत तरीके से हमेशा रिटर्न होता है #ffffff। मुझे मानक सेट से एक रंग का उपयोग करने के अलावा इसके आसपास कोई रास्ता नहीं मिला है।

फिर, उपरोक्त सभी उदाहरणों में उद्धरणों पर ध्यान दें; उनके बिना, सूत्र काम नहीं करेंगे।


मैं आपके संकेतों का पालन करने की कोशिश कर रहा हूं, लेकिन जिस क्षेत्र में मैं #NUM! प्राप्त करता हूं, उस सूत्र का उपयोग करता हूं! क्या आप जानते हैं कि ऐसा क्यों है? मैंने कुछ शोध करने की कोशिश की, लेकिन मुझे इसके लिए सटीक उत्तर नहीं मिला। धन्यवाद एक लाख, दामि

@ डमी क्या आप यहां अपना फॉर्मूला पोस्ट कर सकते हैं? इसके अलावा, वर्तनी की जाँच करें - मुझे लगता है कि सूत्र नाम केस संवेदनशील हैं
क्रिश्चियन लुपस्कू

निर्देशों का पालन करने के बावजूद यहां केवल एक शून्य प्राप्त करना ...

getBackgroundColor()मान्य नहीं है। शायद आप कोड को अपडेट कर सकते हैं?
याकूब जान तुइस्ट्रा

जब मैं पृष्ठभूमि का रंग दूसरे मूल्य में बदलता हूं, तो राशि अपडेट नहीं की जाती है। क्या मेरे द्वारा कुछ परिवर्तन करने पर योग को स्वचालित रूप से अपडेट करने का कोई तरीका है?
मिशाल कोवेक

0

मुझे Google डॉक्स में विशिष्ट रंग के साथ कोशिकाओं को सीधे गिनने का कोई तरीका नहीं मिला है।

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

नोट: आपको कॉलम के ऊपर या नीचे किसी भी अतिरिक्त पंक्तियों को ध्यान में रखना पड़ सकता है

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