스프레드시트 셀 개수 세기 - seupeuledeusiteu sel gaesu segi

복습편 (22)

엑셀 갯수세기를 단순히 하고 싶다면 함수나 명령어가 전혀 필요 없이 엑셀 하단의 상태 표시줄을 확인 만 하면 됩니다. 또 데이터가 변하지 않는다면 그렇게 얻은 개수 정보를 수동으로 엑셀의 시트에 타입을 해도 되고요. 그렇지만 실시간으로 커지는 데이터에서 총 데이터의 개수를 실시간으로 세고 싶다면 엑셀의 count 와 counta 함수를 이용하시면 간단히 해결 됩니다.

스프레드시트 셀 개수 세기 - seupeuledeusiteu sel gaesu segi
22연습파일.xlsx

스프레드시트 셀 개수 세기 - seupeuledeusiteu sel gaesu segi
22연습파일_완성본.xlsx

  1. 엑셀 갯수세기 COUNTA 함수

    엑셀에서 COUNTA 함수는 비어있지 않은 셀의 개수를 찾아 줍니다. 그래서 만약 문자열로 이루어진 열에서 데이터의 개수를 세려면 COUNT 함수가 아닌 COUNTA 함수를 이용해야 합니다.

    적용할 테이블에서 직원 이름은 문자열, 고용기간은 숫자 열, 혜택은 역시 문자 열 입니다.

    COUNTA 함수를 적용하는 방법은 매우 간단합니다. =COUNTA(범위)를 입력해 주면 선택한 범위의 데이터가 있는 셀의 개수를 반환 합니다. 이렇게 큰 테이블을 선택하실 때는 컨트롤 + 쉬프트 + 화살표로 이동을 하면 됩니다.

    481 명의 직원이 있습니다.

    직원들이 받는 보험 혜택도 문자열 이기 때문에 COUNTA 함수를 써야 합니다. 혜택을 받는 직원의 숫자를 반환합니다.

    315명의 직원이 혜택을 받고 있습니다. 이와 완전히 반대의 개념인 COUNTBLANK(범위)를 이용하면 빈 셀의 개수를 반환 하니 이 경우에는 혜택을 받지 못하는 직원의 개수 입니다.

  2. COUNT 함수 이용하기

    어떻게 보면 COUNT함수가 개수를 세는 함수인 것 같지만 COUNT는 숫자가 있는 셀의 개수만 세는 함수 입니다. 예를 들어 COUNT 함수를 위의 이름이 있는 열에 적용하면 0이 됩니다. 숫자가 아닌 문자 셀 이기 때문입니다.

    근속 연수에 COUNT 함수를 입력하고 똑 같은 범위를 선택 합니다.

    같은 직원 숫자인 481 이 반환 되었습니다.

  3. 상태 표시줄 이용하기

    사실 테이블이 작거나 변하는 테이블이 아니라면 엑셀의 상태 표시줄을 이용하면 단순히 드래그 만으로 모든 정보를 알 수 있습니다. 엑셀 하단의 상태 표시줄은 선택한 범위 내에서 데이터가 있는 셀의 개수를 즉시 보여 줍니다.

    6개의 셀을 선택하였고 1개의 셀은 빈 셀 입니다. 개수가 5개가 표시 되고 있습니다.

    엑셀의 개수세기는 크게 COUNT, COUNTIF, COUNTIFS, COUNTBLANK, COUNTA 등 여러 함수가 있습니다. 이중 논리 함수인 COUNTIFS함수를 제외 하고는 함수 활용법은 모두 동일 합니다. 그러나 만약 내가 알고 싶은 것이 단순히 변하지 않는 테이블에서의 데이터 개수라면 드래그 만으로 상태 표시줄에서 그 정보를 알 수 있습니다.

코드/Google Apps Script

2020. 7. 30.

최근 Google 스프레드시트에서 작업할 일이 생겼다.

사용하다가 색이 지정된 셀 개수를 셀 수 있으면 편하겠다 싶었다. 근데 기본 내장 함수 중에는 적절한 함수가 없는 듯... 그래서 Google Apps Script는 처음 만져보지만 몇 시간 투자하여 작성해봤다.

/**
 * 색이 지정된 셀의 개수를 계산합니다.
 *
 * @param {Range} 세고자 하는 범위를 지정합니다.
 * @return 색이 있는 셀을 합한 개수를 반환합니다.
 * @customfunction
 */

function COUNTCOLORCELLS(Range) {
  // 현재 Spreadsheet와 Sheet, Range를 가져온다.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = ss.getActiveSheet()
  var activeRange = ss.getActiveRange()
  
  // 현재 Cell의 수식을 가져온다. ex)"=funcName(input)"
  var formula = activeRange.getFormula();
  
  // Regular Expression을 이용해서 param의 range 값을 가져온다.
  try {
    var rangeA1Notation = formula.match(/=\w+\((.*)\)/i)[1].split('!');
  } catch(e) {
    throw new Error('The reference isn\'t valid');
  }
  
  var rg = activeSheet.getRange(rangeA1Notation);
  var bgColors = rg.getBackgrounds();
  var count = 0;
  for (var i in bgColors){
    for (var j in bgColors[i]){
      // 색이 없으면 count에 1씩 추가
      if (bgColors[i][j].toString()!="#ffffff"){
        count+=1;
      }
    }
  }
  return count;
}
스프레드시트 셀 개수 세기 - seupeuledeusiteu sel gaesu segi
스프레드시트 셀 개수 세기 - seupeuledeusiteu sel gaesu segi


데이터세트에 포함된 숫자 값의 개수를 반환합니다.

사용 예

COUNT(A2:A100,B2:B100,4,26)

COUNT(1,2,3,4,5,C6:C20)

구문

COUNT(값1, [값2, ...])

  • 값1 - 개수를 셀 때 고려할 첫 번째 값 또는 범위입니다.

  • 값2 - [ 선택사항 ] - 개수를 셀 때 고려할 추가 값 또는 범위입니다.

참고

  • COUNT는 최대 30개 인수를 갖는 것으로 지정되어 있으나, Google 스프레드시트에서는 이 함수의 인수 개수를 임의로 설정할 수 있습니다.

  • COUNT는 한 번 이상 중복된 값을 포함한 데이터세트의 모든 숫자 값을 셉니다. 중복된 값을 제외하려면 COUNTUNIQUE를 사용하세요.

  • COUNT는 숫자 값만 셉니다. 텍스트 값은 무시됩니다.

더보기

MODE: 데이터 집합의 최빈값을 반환합니다.

DCOUNTA: SQL과 같은 쿼리를 사용하여 데이터베이스 표와 같은 배열 또는 범위에서 선택된 텍스트를 포함하는 값을 셉니다.

DCOUNT: SQL과 같은 쿼리를 사용하여 데이터베이스 표와 같은 배열 또는 범위에서 선택된 숫자 값을 셉니다.

COUNTUNIQUE: 지정된 값과 범위 목록에서 고유 값의 개수를 셉니다.

COUNTIF: 범위에서 조건에 맞는 개수를 반환합니다.

COUNTBLANK: 지정된 범위에서 빈 셀의 개수를 반환합니다.

COUNTA: 데이터 집합에서 값의 개수를 반환합니다.

도움이 되었나요?

어떻게 하면 개선할 수 있을까요?