안녕하세요? [성정혜]님...
이러한 문제는 엑셀 함수로 처리하는것 보단 피벗테이블이나 SQL을 활용하시는게 편합니다.
선생님이시니 지금과 같은 자료를 자주 처리할듯 하고 또 데이터크기도 매우큰 데이터가 있을 수 있으므로 SQL을 처리하는 방법으로 알려드리겠습니다.
(첨부해 드리는 두개의 파일을 같은 폴더에 두시고 140423_빈도_및_빈도수.xlsm 파일을 실행후 버튼을 클릭하시면 원하는 결과를 보실 수 있습니다.)
해당 기능은 [SQL 강좌]에서 살펴 보시면 됩니다.
아래는 첨부파일에 사용된 코드입니다.
Option Explicit
Sub Test()
Dim DB As DAO.Database
Dim RS As DAO.Recordset
Dim I As Integer
Dim SQL As String
Dim Fname As String
Fname = Application.PathSeparator & "140423_ebs_어휘(수능특강)"
Set DB = OpenDatabase(ThisWorkbook.Path & Fname, False, True, "Excel 8.0;")
SQL = "SELECT 단어, 해석, COUNT(단어) AS 빈도수 "
SQL = SQL & "FROM [" & DB.TableDefs(0).Name & "] "
SQL = SQL & "GROUP BY 단어, 해석 "
SQL = SQL & "ORDER BY COUNT(단어) DESC;"
Set RS = DB.OpenRecordset(SQL)
Application.ScreenUpdating = False
Worksheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "빈도취합결과_" & Sheets.Count - 1
With Sheets(Sheets.Count)
For I = 0 To RS.Fields.Count - 1
.Cells(1, I + 1).Value = RS.Fields(I).Name
Next I
.Range("a2").CopyFromRecordset RS
.Range("a1").Resize(, RS.Fields.Count).Interior.ColorIndex = 36
.UsedRange.EntireColumn.AutoFit
.UsedRange.Borders.Weight = xlThin
.UsedRange.Offset(1).NumberFormatLocal = "#,##0_-;-#,##0_-;0;@"
End With
Application.ScreenUpdating = True
MsgBox Format(RS.RecordCount, "#,##0") & "개의 자료를 빈도별, 내림차순으로 정렬하였습니다.", vbInformation, "작업 완료"
RS.Close: Set RS = Nothing
DB.Close: Set DB = Nothing
End Sub
그럼 잘 해결되시길... ^^*
=====================================================================================
첨부파일
140423_ebs_어휘(수능특강).xls
140423_빈도_및_빈도수.xlsm
=====================================================================================
첫댓글 헉 저는 RANK함수 생각했는데요...^^;;;
역쉬 내공의 차이가...
내공이 아니고 경험의 차이...
예전의 엄청난 삽질(?)과 시행착오를 겪은 결과라고나 할까? ㅎㅎ~
@윤슬 열심히 수양을 쌓도록 하겠습니다~:D
@johnx79 이미 많이 갖추었으니 조만간...
그나저나 목요일 MS PinSkin Lecture 오세요.
3월 강의때 자리가 모자라 입실 못했는데 이번엔 꼭...
@윤슬 목욜은 진급자 회식이 잡혀서 못 갈거 같습니다...TT
팀장님이 진급하셔서....TT
@johnx79 그럼 5월초 운영자모임때... ^^;
@윤슬 지대로 준비하겠습니다~:)
너무너무 감사합니다. 이렇게 말로만 말씀 드리기가 죄송하네요. .어떻게 작게나마 사례를 해야할지 알려주세요
아닙니다...
다른분들께 공부할 수 있는 좋은 소재를 제공해 주신것으로도 사례는 충분합니다.
감사합니다...!
참 한가지만, 더 욕심 내서 여쭤보는데요! 한글 문서또는 워드 문서 즉 일반적인 수능문제가 즉 한글과 영어가 막 섞여 있는 그냥 시험 문제가 나열된 파일에서도 이와같은 작업이 가능할까요!? 혹시라도가능하시다면, 꼬릿말 부탁드려요! 파일은 정식으로 다시 질문으로 올리겠습니다
파일을 봐야 정확한 답변을 드릴 수 있을 듯 합니다.
한글이라면 접두, 접미때문에 문제가 될 수 있습니다.
(물론 영어도 진행형, 과거형등등때문에 문제가 될 수 있기도 합니다만...)
방법은 일단 한글파일을 엑셀로 변환한다음 행을 순환하며 공백문자로 Split 한 배열을 행으로 나열한뒤 처리하면 될듯 합니다.(이미 말씀드린바와 같은 문제 때문에 100%는 장담하기 쉽지 않습니다만 정열하고 조금은 수동정리가 필요할듯 합니다...)