본문 바로가기

부분합5

[기초방] VBA 100제 #90 [ 부분합 구하기 ] 부분합을 구하는 문제이다. https://1stminokingdom.tistory.com/310 [VBA] 대량 데이터에서 부분합구하기 부분합에 대한 고민이다. 23000건 정도의 데이터이니 이걸 우리가 아는 부분합으로 구한다면 셀 사이사이를 부분합이 들어가야 하기 때문에 분명히 에러가 발생할 것이다. 질문자의 고민도 그런 1stminokingdom.tistory.com 몇일전에 이렇게 부분합을 구한적이 있었다. 365를 도입하면서 본인이 알고 있던 모든 로직들이 변화고 있다. 물론 365가 없다고 하면 어쩔 수 없지만...그때는 만일 의뢰를 맡긴다면 돈을 많이 받을테야..ㅋㅋㅋㅋ 암튼 365를 하나씩 보면서 정말 엑셀이 막강해지고 있음을 느낀다. 365로 함수도 그렇고 본인 vba 코드도 그러고 방식은.. 2023. 11. 1.
[VBA] 대량 데이터에서 부분합구하기 부분합에 대한 고민이다. 23000건 정도의 데이터이니 이걸 우리가 아는 부분합으로 구한다면 셀 사이사이를 부분합이 들어가야 하기 때문에 분명히 에러가 발생할 것이다. 질문자의 고민도 그런 고민일것이다. 이러한 문제의 해법은 기존 시트에 Insert를 하기보단 부분합전까지 배열이나 셀에 담고 부분합을 구한 후 다시 리스트를 쌓고 다시 부분합을 구하는 방식으로 해야 엑셀에 무리가 가지 않는다. 부분합전까지 리스트의 갯수를 구하기 위해서는 1. 고유값을 찾아내야 한다. uni = Application.Unique(rngAll.Columns(14)) 이 코드는 전체 영역중 14번째 열의 모든값을 배열로 담아서 고유값을 구한 후 uni 배열에 담는 구문이다. * 유니크 함수는 버전별로 작동이 안될 수도 있으니 .. 2023. 10. 4.
[기초방] VBA 100제 #31 [ 소계구하기 ] 소계를 구하는 문제이다 보통이면 부분합을 통해서 구하는 것이 정석이리라 본다. 부분합도 사용하지 않고 배열도 사용하지 않아서 코드가 약간 길어진 거 같다.. 핵심구문은 소계를 입력한후 소계 이전셀까지의 그룹별 합계를 구하는 구문이다. Sub Haja_Cut(rngX As Range, cnt&) Dim i& rngX(1, 1) = "소계" For i = 2 To 5 rngX(1, i) = Application.Sum(rngX(-cnt + 2, i).Resize(cnt - 1, 1)) Next i rngX(1, 1).Resize(1, 5).Interior.ColorIndex = 6 rngX(1, 1).Resize(1, 5).Font.Bold = True cnt = 0 End Sub 각 그룹의 갯수를 Cnt변.. 2023. 2. 15.
[VBA_Consolidate] 부분합 구하기 몇일전에 같은 연번내에서 부분합 구하기를 한 적이 있다. 하면서도 문제에 비해서 너무 요란하게 코드를 작성하는게 아닌가 싶어서 구글링을 했더니 그 긴 코드가 한줄로 가능한것을 보고 역시 세상을 넓다는 걸 또 한번 느꼈다. 중복값을 피해서 고유값을 도출하는 코드들은 찾아보면 많은데 고유값을 도출해서 값들의 합계를 구하는 코드들은 많이 없어 내가 느낀 새로움을 박제하고자 글을 쓴다. 물론 엑셀로 하면 어렵지않게 할 수 있는 코드들이지만 VBA 통해서 이뤄낸 성과에 칭찬 칭찬하다. Consolidate는 더 공부해서 심도 있게 다룰려고 한다. 통합코드로서 최근에 본 코드중에서 심히 구미를 당기는 녀석이다. 2021. 8. 7.