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

 

Posted by Weneedu
,


출처: https://privatedevelopnote.tistory.com/81 [개인노트]