음영 처리 된 셀 계산


10

Google 스프레드 시트를 사용하여 직원이 로그인하는 일일 일정으로 매트릭스 (시간 / 활동)를 만듭니다.

특정 색상으로 음영 처리되거나 음영 처리되지 않은 열의 셀 수를 계산하는 수식이 있습니까?

예를 들어, 셀 중 20 개는 회색이고 31 개는 회색이 아닙니다 (다른 색으로 음영 처리됨). 수동으로 셀을 계산하는 대신 도달 열의 맨 아래에서이를 계산합니다.


@ w0lf 솔루션의 문제는 캐시에서 비롯됩니다. 이 기능은 실시간 업데이트를받을 준비가되지 않았습니다. 추가 매개 변수로 "now ()"를 추가하여 그 능력을 얻으려고했지만 작동하지 않았습니다.
따뜻함

답변을 드릴 수 없으므로 의견을 남기겠습니다. 셀에 텍스트가 없으면 배경과 동일한 색상으로 텍스트를 추가하는 것이 더 쉬워 (숨겨져 있음) 간단한 = counta ()를 수행하여 비어 있지 않은 셀을 계산합니다. 물론 경우에 따라 매우 구체적입니다.
sfratini

답변:


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><cell specification>표현된다 A1의 표기 및 따옴표로 묶어야합니다 .

예를 들어, 배경색이 white로 설정된 B2 : F13 범위의 모든 셀 수를 얻으려면 다음 공식을 입력해야합니다.

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

동일한 셀의 합계를 계산하려면 다음 공식을 사용하십시오.

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

일부 셀은 배경을 '흰색', '회색'과 같은 색상으로 설정하지 않고 RGB 색상과 같은 색상으로 설정했을 수 있습니다 #6fa8dc. 색상이 무엇인지 짐작할 수 없으므로 셀의 색상 (예 :)을 찾으려면 B9이 수식을 셀에 입력해야합니다.

=getBackgroundColor("B9")

나중에이 값을 위의 두 기능에 대한 매개 변수로 사용하십시오.

셀의 배경색이 "테마 색"인 경우 getBackground()항상 잘못 반환되는 것 같습니다 #ffffff. 표준 세트의 색상을 사용하는 것 외에 다른 방법을 찾지 못했습니다.

다시, 위의 모든 예제에서 따옴표를 주목하십시오. 그것들이 없으면 수식이 작동하지 않습니다.


나는 당신의 힌트를 따르려고 노력했지만 필드에 #NUM!이라는 수식을 사용합니다. 왜 그런지 아십니까? 나는 약간의 연구를 시도했지만 그에 대한 정확한 답을 찾을 수 없었습니다. 감사합니다 백만, dami

@Dami 여기에 공식을 게시 할 수 있습니까? 또한 철자를 확인하십시오-수식 이름은 대소 문자를 구분합니다.
Cristian Lupascu

지침에 따라 ...에도 불구하고, 여기에 단지 0을 얻기

getBackgroundColor()이상 사용되지 않습니다. 아마도 코드를 업데이트 할 수 있습니까?
Jacob Jan Tuinstra

배경색을 다른 값으로 변경하면 합계가 업데이트되지 않습니다. 일부 변경을 수행 할 때 합계를 자동으로 업데이트하는 방법이 있습니까?
Michal Kováč

0

Google 문서에서 특정 색상으로 셀을 직접 계산하는 방법을 찾지 못했습니다.

그것들을 가리는 이유. 자동입니까? 값이 있으면 자동으로 음영 처리됩니까? 이 경우 counta () 함수를 사용하여 값이있는 셀을 계산할 수 있습니다. 보다 복잡한 규칙 집합이 있으면 countif () 함수를 사용해야합니다.

참고 : 열의 맨 위 또는 맨 아래에있는 추가 행을 고려해야 할 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.