MS 추가기능 및 앱 개발

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

루아흐뉴마 2019. 7. 21. 16:49
반응형

 

 

 

추가기능 사용방법

 
  • VSTO를 통해 개발한 파워포인트 추가기능이다.
  • 기존에 만든 추가기능(링크(새창))를 C#으로 구현한 버전이다.
  • 기존보다 속도를 개선하여 고유값(중복되지 않은 값) 개수가 많을 경우에도 사용할 수 있다.

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

  • 사용 방법
  • 1) 빈도수를 산출할 영역 지정
  • 2) 루아흐뉴마 추가기능 탭의 FastFrequency 단추 클릭
  • ※ 공백("")은 카운트하지만 셀에 아무 값도 없는(null) 경우 999_N/A 결측값으로 처리하였다.

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

 

추가기능 실행 동영상

 


메인 코드(언어: C#)

 
private void button1_Click(object sender, RibbonControlEventArgs e)
{
    try
    {
        Excel.Worksheet curSht = Globals.ThisAddIn.GetActiveSht(); //현재 워크시트
        Excel.Range selRng = Globals.ThisAddIn.Application.Selection; //선택범위
        List orgList = new List(); //원본 리스트 생성
        foreach (Excel.Range tmpRng in selRng)
        {
            if (tmpRng.Value == null) //셀이 공백("")이 아닌 Nothing이면 결측(N/A) 처리
            {
                orgList.Add("999_N/A");
            }
            else //값이 있다면, orgList에 선택영역의 데이터 저장
            {
                orgList.Add(tmpRng.Value.ToString());
            }
        }
        List uniqList = orgList.Distinct().ToList(); //orgList의 고유값을 uniqList로 반환
        Excel.Worksheet rsltSht = Globals.ThisAddIn.Application.Worksheets.Add(After: curSht);
        int cnt = 0;
        foreach (string u in uniqList)
        {
            List rsltFreq = orgList.FindAll( //원본과 고유값이 같은 모든 요소를 rsltFreq 리스트로 반환
            delegate (string f)
            {
                return f.Equals(u);
            }
            );
            // 출력 코드
            cnt++;
            rsltSht.Cells[cnt, 1] = u;
            rsltSht.Cells[cnt, 2] = rsltFreq.Count;
            rsltFreq.Clear();
        }
    }
    catch (InvalidCastException ex)
    {
        MessageBox.Show(text: "셀이 아닌 개체를 선택했습니다." + Environment.NewLine + "다시 선택하여 주세요.", caption: "오류", buttons: MessageBoxButtons.OK);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
}

 

 

FastFrequency2.zip
다운로드

 

 Copyright (2019) Ruahneuma. All Rights Reserved.

 

반응형