20211002 2040
문자열이 조건과 같을 경우 합을 계산하려고 한다.
문자열이 길고 뒷 부분은 다를 수 있어 앞 10글자만 같을 경우 더하고 싶다.
xx.Row는 엑셀의 행번호를 반환한다. 그런데 zSum(i,j)의 i는 zSum 행렬의 행숫자이다. 따라서 zSum이 1행부터 시작하는 범위가 아니라면 xx.Row와 i는 차이가 발생한다. 그 차이를 조정하는 변수가 zdff이다.
(1st version)
Function zSumif(zRng As Range, zRef, zSum)
ztemp = 0
zdff = zRng.Row - 1
For Each xx In zRng
If Left(xx, 10) = Left(zRef, 10) Then
ztemp = ztemp + zSum(xx.Row - zdff, 1)
End If
Next
zSumif = ztemp
End Function
zRng = 조건을 찾을 범위
zRef = 조건
zSum = 합계를 찾을 범위
(2nd version)
Function zSumif(zRng As Range, zRef, zSum)
ztemp = 0
For Each xx In zRng
znmb = xx.Row - zRng.Row + 1
If Left(xx, 10) = Left(zRef, 10) Then
ztemp = ztemp + zSum(znmb, 1)
End If
Next
zSumif = ztemp
End Function
2nd version is mathematically same as 1st version, because
xx.Row-dff = xx -(zRng.Row-1) = xx.Row-zRng.Row+1 = znmb
'[PA] 업무자동화 > [XL]Excel & VBA' 카테고리의 다른 글
XL Don't 병합하고 가운데 맞춤 (0) | 2021.10.17 |
---|---|
XL VBA Cheat Sheets (0) | 2021.10.11 |
XL Hyperlink to other worksheet using hyperlink function in excel (0) | 2021.07.11 |
XL dependency trace, Precedent/Dependent (0) | 2021.05.19 |
XL dynamic images (0) | 2021.04.29 |