반응형
여러 단어들에 포함된 키워드를 뽑아내는 매크로이다.
2개짜리 단어, 3개짜리 단어 등 단어 길이만큼 모조리 검색해서 빈도수별로 키워드 순위를 알려준다.
예를 들어, 다음과 같은 대학 학과 리스트에 매크로를 적용하면
{수학과, 수학교육학과, 수학교육과}
수학 = 3
교육 = 2
학교 = 2
수학교 = 2
학교육 = 2
수학교육 = 2
위와 같은 형식으로 빈도를 뽑아낸다.
※ 아직 VBA 코드를 수정하지 않아 가져다 쓰기에는 무리가 있다. (현재는 말도 안되게 무식한 코드이다.)
혹시 테스트를 해볼 요량이면, 시트명이 Sheet1인 시트의 B열에 데이터를 나열하고 실행하면 된다.
엑셀 키워드 빈도 분석 VBA 코드
Option Explicit Dim i As Long, j As Long, k As Long Dim cnt_2 As Long, cnt_3 As Long, cnt_4 As Long Dim what_c_2 As String, what_c_3 As String, what_c_4 As String Dim asdf_2 As String, asdf_3 As String, asdf_4 As String Dim max_n_2 As Long, max_n_3 As Long, max_n_4 As Long Dim last_num As Long Dim rng_c As Range Sub keyword_ranker() max_n_2 = 0 max_n_3 = 0 last_num = Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Row For i = 1 To last_num For j = 1 To Len(Cells(i, 2)) - 1 asdf_2 = Mid(Cells(i, 2), j, 2) For k = 1 To last_num If Cells(k, 2) Like "*" & asdf_2 & "*" Then cnt_2 = cnt_2 + 1 End If Next k If max_n_2 < cnt_2 Then max_n_2 = cnt_2 what_c_2 = asdf_2 End If cnt_2 = 0 Next j For j = 1 To Len(Cells(i, 2)) - 2 asdf_3 = Mid(Cells(i, 2), j, 3) For k = 1 To last_num If Cells(k, 2) Like "*" & asdf_3 & "*" Then cnt_3 = cnt_3 + 1 End If Next k If max_n_3 < cnt_3 Then max_n_3 = cnt_3 what_c_3 = asdf_3 End If cnt_3 = 0 Next j For j = 1 To Len(Cells(i, 2)) - 3 asdf_4 = Mid(Cells(i, 2), j, 4) For k = 1 To last_num If Cells(k, 2) Like "*" & asdf_4 & "*" Then cnt_4 = cnt_4 + 1 End If Next k If max_n_4 < cnt_4 Then max_n_4 = cnt_4 what_c_4 = asdf_4 End If cnt_4 = 0 Next j Next i End Sub
매크로 실행 동영상
반응형
'VBA Macro > VBA Excel' 카테고리의 다른 글
[엑셀] XML 파싱하기 #3 - (번외편) 공공데이터(API) 활용 (0) | 2017.11.11 |
---|---|
[엑셀] XML 파싱하기 #2 - 필요한 데이터만 잘라내기 (split 함수) (0) | 2017.11.11 |
[엑셀] 메모장 데이터 불러오기 매크로 (0) | 2017.11.07 |
[엑셀/파워포인트] 지식의 보고, VBA 도움말 및 가이드 (파일) (0) | 2017.10.27 |
[엑셀] 웹 페이지 크롤링/스크래퍼 매크로 (0) | 2017.10.21 |