VBA Macro/VBA Excel

[엑셀] 키워드 분석 매크로 (작성중)

루아흐뉴마 2017. 10. 19. 02:10
반응형
여러 단어들에 포함된 키워드를 뽑아내는 매크로이다.
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




매크로 실행 동영상





반응형