나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 dew (dewdrop)

추천:  2
파일:     데이터처리_Ans1.xlsm (18.8KB) 조회:  1660
제목:   [RE]엑셀 A열에 자료입력 B열 자동정렬 C입력개수 표시하도록 하려면
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(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

 
[불량 게시물 신고]  
        
  

작성일 : 2019-09-30(14:34)
최종수정일 : 2019-09-30(14:34)
 


 ◎ 관련글

  제 목   작성자   날짜
엑셀 A열에 자료입력 B열 자동정렬 C입력개수 표시하도록 하려면 가우스 2019-09-26
[RE]엑셀 A열에 자료입력 B열 자동정렬 C입력개수 표시하도록 하려면 dew 2019-09-30