본문 바로가기

분류 전체보기369

[기초방] VBA 100제 #71 [ 전체누적 + 월별누적 ] 자 이번 문제는 전체누계와 월별 누계를 따로 계산해야 하는 문제이다. 전체누계야 그냥 처음부터 계속 더하면서 나가면 될것이고 월별누계가 약간 머리를 써야 한다. 원래는 엑셀 수식처럼 해당일자와 전일 일자와의 월을 비교해서 구하는게 정석이지만, 문제를 만들때 2023-01-01부터 9월까지 쭉 만들어 놓은거라.. DAY 함수를 사용하여 1일 인지를 파악하여 월별 누계를 구하였다. If Day(rngA(1, 0)) = 1 Then Val2 = Val2 * 0 + rngA Else: Val2 = IIf(Val2 = 0, rngA, Val2 + rngA): End If 핵심 구문은 이렇다. 해당일자의 일자가 1일인지를 확인해서 1일이며 새로운 달이 시작한 의미이기 때문에 누계값을 초기화 해준 후 해당일자의 값을.. 2023. 10. 8.
[스프레드시트] 대시보드 만들기 2023. 10. 8.
[VBA] 대량 데이터에서 부분합구하기 부분합에 대한 고민이다. 23000건 정도의 데이터이니 이걸 우리가 아는 부분합으로 구한다면 셀 사이사이를 부분합이 들어가야 하기 때문에 분명히 에러가 발생할 것이다. 질문자의 고민도 그런 고민일것이다. 이러한 문제의 해법은 기존 시트에 Insert를 하기보단 부분합전까지 배열이나 셀에 담고 부분합을 구한 후 다시 리스트를 쌓고 다시 부분합을 구하는 방식으로 해야 엑셀에 무리가 가지 않는다. 부분합전까지 리스트의 갯수를 구하기 위해서는 1. 고유값을 찾아내야 한다. uni = Application.Unique(rngAll.Columns(14)) 이 코드는 전체 영역중 14번째 열의 모든값을 배열로 담아서 고유값을 구한 후 uni 배열에 담는 구문이다. * 유니크 함수는 버전별로 작동이 안될 수도 있으니 .. 2023. 10. 4.
[기초방] VBA 100제 #70 [ 구간별 값 구하기 ] 우노사설님의 강의를 리뷰한 문제이다. https://www.youtube.com/watch?v=5X_NhTJUpGM 본인의 코드 진행이 이해가 안된다면 강의를 보고 진행하는것을 추천한다. 이번 문제는 테이블에서 각 구간에 해당되는 값들의 갯수를 출력하는 문제이다. 그러기 위해서는 일단 양수라는 조건하에 테이블의 최대값을 구한 후, 그것을 CEILING_MATH 함수로 각 조건의 STEP의 배수로 재조정하여야 한다. MaxVal = .Ceiling_Math(.Max(rngAll), Step) 이렇게 구해진 값으로, 각 구간을 SEQUENCE로 분리해야 한다. 아래의 코드는 SEQUENCE함수로 구한 값을 ARRAYTOTEXT로 배열상수화 시키는 구문이다. Vlist = .ArrayToText(.Sequen.. 2023. 10. 2.