MS 추가기능 및 앱 개발

[엑셀 추가기능 배포] 빈도수 빠르게 구하기(중복 카운트)

루아흐뉴마 2019. 6. 24. 00:41
반응형

 

추가기능 사용방법

 
  • VSTO를 통해 개발한 파워포인트 추가기능이다.
  • 거추장스러운 거 다 빼고 그냥 빈도만 세는 기능이다.
  • 매번 Countif 함수로 빈도수를 확인하기 번거로웠던 사람이라면 꽤 유용할 것이라 생각한다.

  • 설치 방법
  • 1) 첨부파일의 압축 파일을 압축 해제한다. (아무 곳이듯 상관 없음)
  • 2) setup.exe 파일을 (반드시)관리자 권한으로 실행한다. (마우스 오른쪽 클릭 -> 관리자 권한으로 실행)
  • 3) 다음, 설치를 클릭하면 설치가 완료된다.

  • 사용 방법
  • 1) 빈도수를 산출할 영역 지정
  • 2) 루아흐뉴마 추가기능 탭의 FastFrequency 단추 클릭
  • ※ 공백("")도 카운트한다. 빈도표에서 가볍게 삭제해주면 된다.
  • ※ 수치 데이터에 대한 구간별 빈도 산출은 하지 않는다.

  • 삭제하는 방법
  • 1) 시작 -> 제어판 -> 프로그램 및 기능
  • 2) 설치 날짜를 기준으로 내림차순 정렬
  • 3) 설치된 프로그램을 선택하여 제거

 

추가기능 실행 동영상

 


메인 코드(언어: VB)

 
Private Sub Button1_Click(sender As Object, e As RibbonControlEventArgs) Handles Button1.Click
{
Dim box() As String = {} //배열변수 지정형식인듯, Variant 형식은 안됨. 마지막 = {}에서 배열 요소 초기화
Dim cnt As Long
Dim lastRow As Long
Dim rngSel As excelApp.Range //선택영역
Dim allRng As excelApp.Range
Dim rngR As excelApp.Range //Box 순환용
Dim myGlobal = Globals.ThisAddIn.Application
Try
{
rngSel = CType(myGlobal.Selection, excelApp.Range) //선택영역을 Range형식으로 입력받는 코드
//rngSel = CType(Globals.ThisAddIn.Application.Selection, excelApp.Range)
cnt = 0
For Each rngR In rngSel //대상 영역의 모든 Value를 Box 배열에 할당
ReDim Preserve box(cnt) box(cnt) = rngR.Value
cnt = cnt + 1
Next rngR
myGlobal.Worksheets.Add(After:=myGlobal.Worksheets(myGlobal.Worksheets.Count)) //새로운 워크시트를 가장 끝에 삽입
cnt = 0
Dim i As Long
For i = LBound(box) To UBound(box) '배열을 처음부터 순환하면서
myGlobal.Worksheets(myGlobal.Worksheets.Count).cells(i + 1, "A") = box(LBound(box) + i)
Next
allRng = myGlobal.Worksheets(myGlobal.Worksheets.Count).Range("A:A")
allRng.RemoveDuplicates(Columns:=1, Header:=excelApp.XlYesNoGuess.xlNo) //대상 영역 중복제거
lastRow = myGlobal.Sheets(myGlobal.Worksheets.Count).Cells(myGlobal.Rows.Count, "A").End(excelApp.XlDirection.xlUp).row cnt = 0
For i = 1 To lastRow
For j = LBound(box) To UBound(box) //박스 순환하면서 중복내용은 카운트 up
If CType(myGlobal.Worksheets(myGlobal.Worksheets.Count).Cells(i, "A").value, String) = box(j) Then
cnt = cnt + 1
End If
Next j myGlobal.Sheets(myGlobal.Worksheets.Count).Cells(i, "B") = cnt //카운트 된 숫자를 항목별로 뿌리기
cnt = 0
Next i
}
Catch ex As InvalidCastException //셀을 선택하지 않은 경우 오류 메시지 활성화
{
System.Windows.Forms.MessageBox.Show("셀이 아닌 개체를 선택했습니다." & Chr(10) & "1개 이상의 셀을 선택하세요.", "캐스팅오류", Windows.Forms.MessageBoxButtons.OK)
}
Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.ToString())
{
}
End Try
rngSel = Nothing
rngR = Nothing
allRng = Nothing
}
End Sub

 

 

 

FastFrequency.zip
다운로드

 

 

 Copyright (2019) Ruahneuma. All Rights Reserved.

 

반응형