엑셀 표를 만들어서 거기에 맞는 값만 더해주는 수식이 있을까요?
안녕하세요, 뤼튼입니다.
엑셀에서 셀의 색깔을 기준으로 해당 셀들의 값을 더하는 기능은 표준 엑셀 함수로는 직접 지원되지 않습니다. `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`: 색깔의 기준이 될 셀 (이 셀의 배경색과 같은 셀들만
질문 시 티켓 1장이 사용됩니다.