본문 바로가기

VBA271

[기초방] VBA 100제 #76 [ 상위랭커 구하기 ] 더보기 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Intersect([c3], Target) Is Nothing Then Exit Sub [c3].Activate [j7: j1000].Clear Call 기초방76 End Sub Option Explicit Sub 기초방76() Dim vall Dim rngAll As Range: Set rngAll = [g6].CurrentRegion Dim rngX As Range: Set rngX = [j7] Dim rngD As Range Application.ScreenUpdating = False Set rngAll = rngAll.Offset(1).Resize(rngAll.R.. 2023. 10. 17.
[365 함수리뷰] 동적으로 출력되는 테이블 본인의 365 함수 코드들은 기초방에 올리고 있기 때문에 따로 서랍님 코드를 리뷰해보려고 한다. 더보기 =LAMBDA(range, n, [op], LET( _range, range, _n, n, _op, IF(ISOMITTED(op), 1, op), _rn, TAKE(_range, , 1), _rm, DROP(_range, , 1), _u, UNIQUE(_rn), TAKE(SORT(HSTACK(_u, SUMIFS(_rm, _rn, _u)), 2, IF(_op = 1, -1, 1)), _n) ) )(G7:H90, C3) 이번 코드의 핵심은, _rn, TAKE(_range, , 1), _rm, DROP(_range, , 1), TAKE 와 DROP으로 한번은 선택해서 취하고 한번은 선택해서 버리는 코드 전개.. 2023. 10. 16.
[기초방] VBA 100제 #75 [ 필터링 구현하기 ] 이러한 문제를 VBA로 풀려면 이벤트 + 고급필터로 풀면된다. 앞서 이러한 문제는 많이 했기 때문에 찾아보면 이해가 금방갈 것이다. 이벤트 구간이다. 이벤트의 영역을 구한 후 이벤트 영역에 TARGET이 들어올때만 작동하게 된다. 출력 영역을 초기화 하고, 입력된 이벤트구간에서 입력을 마치면 엔터를 치게 되면 다음줄로 영역이 내려가는데 TARGET.ACTIVATE를 하게 되면 트릭으로 다음줄로 내려갔다가 다시 복귀를 하게 되어 마치 제자리에 있는것처럼 보이게 된다. 이렇게 불러진 기초방75코드를 보자 바로 고급필터 조건을 정한 후, 고급필터를 실행해도 되지만 그럴경우 고급필터의 내용이 아무것도 없을 때는 출력이 되지 않는다. 더보기 Option Explicit Sub 기초방75() Dim rngAll A.. 2023. 10. 16.
[기초방] VBA 100제 #74 [ 품목의 계절별 단가 구하기 ] 더보기 Option Explicit Sub 기초방74() Dim rngAll As Range: Set rngAll = [a6:a31] Dim rngA As Range Dim rngX As Range For Each rngA In rngAll Set rngX = [h5].Offset([h5:h9].Find(rngA).Row - 5, [h5:l5].Find(rngA(1, 2)).Column - 8) '= 단가표의 품목에서 row값을 겨울에서 column값을 가져와 rngX 즉 겨절별 품목단가의 위치를 rngX로 설정 rngA(1, 3) = rngX Next rngA End Sub 보통 이러한 문제는 엑셀에서 많이 나오는 문제이다. 해법은 [h5]를 기준으로 행방향으로 품목 열을 / [h5] 기준으로 열방향의.. 2023. 10. 13.