원래 이 Tip 도 지난 글과 같이 올리려고 했는데 애초 생각과 다르게 이전에 만들어 놨던 다른 component들까지 다 정리하는 바람에 따로 정리하게 됐습니다.
Sub 평균구하기함수()
Dim firstCell As Range
Dim lastCell As Range
Dim lastRow As Double
Dim rngtest As Range
Dim 평균 As String
Call clickLink("Cell주소")
''''''' get the first Cell to calculate
Set firstCell = getBelowCell2("필드이름1")
''''''' get the last row to calculate
lastRow = activateLastrow2Cal2("필드이름2")
''''''' get the last Cell to calculate
Set lastCell = firstCell.Offset(lastRow - firstCell.Row, 0)
Call filterOption("필드이름3", "1")
Call filterOption("필드이름4", ">0")
' Get count of rows
Set rngtest = Range(firstCell, lastCell)
rngtest.Select
평균 = WorksheetFunction.Average(rngtest.SpecialCells(xlCellTypeVisible))
Call writeTable5("Sheet 이름", 0, 0, 평균 , "K11")
End Sub
위에 한글로 표기한 것은 해당 엑셀에 맞춰서 적당한 값을 넣어야 하는 겁니다.
변수명이나 필드이름 등은 회사 업무와 관련이 있는 거라서 회사 업무 내용을 공개하지 않기 위해 이름을 변경했습니다.
여기서 살펴볼 것은 아래 라인 입니다.
평균 = WorksheetFunction.Average(rngtest.SpecialCells(xlCellTypeVisible))
나머지는 이전 글에 각 함수 내용을 올려 놓았으니 그 글을 참조하시면 됩니다.
진행 순서도 똑 같구요.
필터링 후 선택된 Range의 평균을 구하는 것은 WorksheetFunction.Average(레인지.SpecialCells(xlCellTypeVisible)) 를 사용하면 됩니다.
결과 값은 String에 담구요.
이걸 Integer나 Double에 담아봤더니 에러가 나더라구요.
Converting을 해서 담던가 아니면 그냥 String 변수에 담아야 합니다.
한가지 더 참조한다면 아래 라인 입니다.
Call filterOption("필드이름4", ">0")
greater than 0 로 필터링을 어떻게 할 까 궁금했는데 그냥 위와 같이 >0 을 전달하면 되는군요.
filterOption() 함수는 이전 글에 있으니 보시고 싶으시면 바로 전 글을 보시면 됩니다.
'etc. > Excel Programming' 카테고리의 다른 글
Excel Macro로 HP QC 접속하기 (0) | 2014.12.27 |
---|---|
WEEKDAY() 함수 이용한 월요일 구하기 (2) | 2014.12.13 |
엑셀 VLOOKUP 함수 사용하기 (1) | 2014.12.11 |
[Excel] 초를 분으로 , 분을 초로 그리고 분을 시간으로 변환하기 (1) | 2014.03.25 |
[VBA] Tip Range 안에 있는 Row 갯수 구하기 (0) | 2014.03.06 |
[VBA] Tips - 필터링 후 row 갯수 구하기 (0) | 2014.03.05 |
[VBA] Debug.print 출력물을 파일에 저장하기 (0) | 2014.03.04 |
[VBA] 디버깅 툴 알아보기 (0) | 2014.03.03 |
[VBA] 어제 작업해 놓은 프로그래밍 정리 (1) | 2014.02.27 |
[VBA] Userform 만들기 (0) | 2014.02.21 |