|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 엑셀 버전(95,97,2000,xp,2003,2007):
2016
* 아래줄에 질문을 작성하세요 >>
A열B열C열
3 3 1 A열에 3 처음 입력시/3이 1개 입력
A열B열C열
3 1 1
1 3 1 A열에 1 추가입력시/3 이 1개/1이 1개
입력 되었으을 표시
A열B열C열
3 1 1
1 2 1
2 3 1 A열에 2추가 입력시
A열B열C열
3 1 1
1 2 2 A열에 DATA가 추가되면
2 3 1 B열에 고유값을 표시하며
2 C열에는 고유값에 해당하는 입력개수
표시하려면
B,C 열에 적절한 수식을
알고 싶습니다.
1 이 1번 2가 2번 3이 1번
입력되었음 을 B C 열에
나타나게 하려면
참고로 설명의 편의를 위해 숫자로
적었는데 실제 자료는 문자입니다.
==============[가우스님 글에 대한 답변입니다]==============
워크시트 이벤트 함수(VBA) 이용했습니다.
첨부화일 참고하세요.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub
Application.EnableEvents = False
Dim rACol As Range, rBCol As Range, rX As Range
Dim oListSoc As Object, oList As Object
Dim iX As Integer
Dim sVal As String
On Error GoTo Exit_Sub
Set rACol = Columns(1).SpecialCells(xlCellTypeConstants)
On Error GoTo 0
Set oListSoc = CreateObject("System.Collections.ArrayList")
Set oList = CreateObject("System.Collections.ArrayList")
For Each rX In rACol.Cells
sVal = rX
oListSoc.Add sVal
If Not oList.Contains(sVal) Then
oList.Add sVal
End If
Next
Range("A:C").Clear
Set rACol = Cells(1, 1).Resize(UBound(oListSoc.ToArray) + 1)
rACol = WorksheetFunction.Transpose(oListSoc.ToArray)
Set rBCol = Cells(1, 2).Resize(UBound(oList.ToArray) + 1)
rBCol = WorksheetFunction.Transpose(oList.ToArray)
rBCol.Sort Key1:=rBCol.Cells(1), Header:=xlNo
For Each rX In rBCol
rX.Offset(0, 1) = WorksheetFunction.CountIf(rACol, rX)
Next
Exit_Sub:
If Err.Number <> 0 Then Range("B:C").Clear
Application.EnableEvents = True
End Sub
|
|