강의 자료
라이브정보
방송일
2022년 07월 23일 (104회)
강의시간
1시간 10분
보충자료
① CountIf / SumIf 함수 만들기 사전 미션코드
Function MyCountIf(Rng As Range, Criteria As Variant) As Long
'---------------------------------
'■사전미션1
'나만의 CountIF 함수 만들기
'Rng 범위에서 Criteria와 같은 값의 개수를 반환합니다.
'---------------------------------
Dim R As Range
Dim i As Long
'힌트1) Rng의 셀을 하나씩 돌아가며..
'For Each R In Rng
'힌트2) R의 값이 Criteria와 같을 경우, i에서 1을 더합니다.
'If R.Value = Criteria Then..
'힌트3) MyCountIf 함수의 결과값으로 i를 반환합니다.
'MyCountIf = i
End Function
Function MySumIf(Rng As Range, Criteria As Variant, Sum_Range As Range) As Long
'---------------------------------
'■사전미션2
'나만의 SumIF 함수 만들기
'Rng 범위의 값이 Criteria와 같을 경우, Sum_Range의 합계를 반환합니다.
'---------------------------------
Dim i As Long
Dim Result As Long
'힌트1) Rng.Count 속성을 사용하면 조건범위의 개수를 확인할 수 있습니다.
'힌트2) i = 1 부터 Rng.Count 까지 돌아가며..
'힌트3) Rng(i)을 사용하면 범위에서 i번째 위치한 값을 반환합니다.
'힌트4) Rng에서 i번째 위치한 값이 Criteria와 동일할 경우..
'If Rng(i) = Criteria Then..
'힌트5) 기존 Result 에 Sum_Range(i) 번째 값을 더합니다.
'Result = Result + Sum_range(i)
'힌트3) MySumIF 함수의 결과값으로 Result를 반환합니다.
'MySumIf = Result
End Function
② 시트 이벤트 매크로 마스터 코드
Application.ScreenUpdating = False
Application.EnableEvents = False
If Not Intersect(Target, Range("셀주소")) Is Nothing Then
'실행할 명령문
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
스크립트는 로그인 후 이용할 수 있습니다.
로그인
Private Sub Worksheet_Change(ByVal Target As range)
Application.ScreenUpdating = False
Application.EnableEvents = False
If Not Intersect(Target, range("e2")) Is Nothing Then
clearrange
filtertems
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
thisworkbook안에 밑에 함수들을 적었습니다
Sub clearrange()
i=Sheet1.range("g1048576").End(xlUp).Row
If i > 1 Then
Sheet1.range("g2:h" & i).ClearContents
End If
End Sub
Sub filteritems()
Dim grouprange As range
Dim r As range
Dim filterval As String
Dim i As Long
i = 2
Set grouprange = dynamicrange(Sheet1, "a", 2)
filterval = Sheet1.range("e2").Value
For Each r In grouprange
If r.Value = filterval Then
Sheet1.range("g" & i).Value = r.Offset(0, 1).Value
Sheet1.range("h" & i).Value = r.Offset(0, 2).Value
i = i + 1
End If
Next
sub or function not defined
오류는 함수가 정의되지 않았을 때 발생하는 오류입니다.
clearrange 함수가 다른 모듈에 잘 작성되어 있는지 한번 확인해보시겠어요?^^
감사합니다.
사용하고 계신 통합문서의 유저폼이름이
"frmAddProduct" 으로 올바른지 한번 확인해보시겠어요?