엑셀 색에 맞는 값을 더하는 수식 엑셀 표를 만들어서 거기에 맞는 값만 더해주는 수식이 있을까요?
엑셀 표를 만들어서 거기에 맞는 값만 더해주는 수식이 있을까요?
안녕하세요, 뤼튼입니다.
엑셀에서 셀의 색깔을 기준으로 해당 셀들의 값을 더하는 기능은 표준 엑셀 함수로는 직접 지원되지 않습니다. `SUMIF`, `SUMIFS` 등의 함수는 셀의 *값*이나 다른 셀의 *값*을 기준으로 조건을 설정하지만, 셀의 *서식* (색상, 글꼴 등)을 조건으로 사용할 수는 없습니다.
따라서 셀 색깔을 기준으로 합계를 구하려면 다음과 같은 방법들을 사용해야 합니다.
1. VBA (매크로) 사용: 가장 일반적이고 유연한 방법입니다. 사용자 정의 함수(UDF)를 만들어 셀 색깔을 확인하고 합계를 계산하도록 할 수 있습니다.
2. 필터 기능 활용: 색깔별로 필터링한 후, `SUBTOTAL` 함수를 사용하여 필터링된 셀들의 합계를 구할 수 있습니다. 이 방법은 수동으로 필터를 적용해야 하며, 색깔이 바뀐다고 합계가 자동으로 업데이트되지는 않습니다. (수동으로 필터 재적용 필요)
사용자분께서 "수식"을 원하셨으므로, VBA를 사용하여 사용자 정의 함수를 만드는 방법을 안내해 드리겠습니다. 이 방법은 엑셀 시트에서 함수처럼 `=SumByColor(...)` 형태로 사용할 수 있습니다.
VBA 사용자 정의 함수 만들기:
1. 엑셀 파일을 엽니다.
2. `Alt + F11` 키를 눌러 VBA 편집기를 엽니다.
3. 왼쪽 프로젝트 탐색기 창에서 해당 통합 문서(`VBAProject(파일 이름)`)를 선택합니다.
4. 메뉴에서 `삽입(Insert)` -> `모듈(Module)`을 선택합니다.
5. 새로 생성된 모듈 창에 아래 VBA 코드를 복사하여 붙여넣습니다.
```vba
Function SumByColor(ColorCell As Range, SumRange As Range) As Double
' 지정된 색상 셀의 배경색을 기준으로 범위의 합계를 계산합니다.
Dim TargetColor As Long
Dim Cell As Range
Dim TotalSum As Double
' 첫 번째 색상 셀의 배경색을 가져옵니다.
On Error Resume Next
TargetColor = ColorCell.Interior.Color
On Error GoTo 0
If TargetColor = 0 Then ' 색상이 지정되지 않은 경우 (색 없음)
' 색이 없는 셀의 합계를 구하려면 이 부분을 수정해야 합니다.
' 현재 코드는 TargetColor가 0이 아니어야 합산을 시작합니다.
' 필요하다면 TargetColor = xlNone 과 비교하거나 다른 로직 사용
' 여기서는 특정 색이 칠해진 경우만 합산한다고 가정합니다.
End If
TotalSum = 0
' 합계를 구할 범위를 순회합니다.
For Each Cell In SumRange
' 셀의 배경색이 목표 색상과 같은지 확인합니다.
If Cell.Interior.Color = TargetColor Then
' 값이 숫자인 경우에만 합산합니다.
If IsNumeric(Cell.Value) Then
TotalSum = TotalSum + Cell.Value
End If
End If
Next Cell
' 계산된 합계를 반환합니다.
SumByColor = TotalSum
End Function
```
6. VBA 편집기를 닫습니다. (Alt + Q 또는 창 닫기)
7. 파일을 저장할 때, 매크로를 포함할 수 있는 파일 형식(`*.xlsm`)으로 저장해야 합니다.
사용 방법:
이제 엑셀 시트에서 이 함수를 사용할 수 있습니다.
예를 들어, A1부터 A10까지 숫자가 있고, A1 셀의 색깔과 동일한 색이 칠해진 셀들의 합계를 B1 셀에 표시하고 싶다면, B1 셀에 다음과 같이 입력합니다.
`=SumByColor(A1, A1:A10)`
* `A1`: 색깔의 기준이 될 셀 (이 셀의 배경색과 같은 셀들만