본문 바로가기

기초방11

[기초방] 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.
[기초방] VBA 100제 #59 [ 불일치 영역 색칠하기 ] 기초방 58번에서 언급했듯. 59번 코드가 정석이다. 이유는 58은 성명이 하나인 곳에서 에러를 발생할 것이며, 속도 또한 59번보다 느릴것이다. 영역을 순환하는 것보다. find로 바로 바로 찍어서 영역을 합치기 때문에 데이터 양이 많다면 분명 더 효과적일것이다.' haja_find 함수의 find구문은 일정부분 루틴이 있는 것이기 때문에 반드시 기억하길 바란다. 더보기 Option Explicit Sub 기초방59() Dim rngAll As Range: Set rngAll = [m5:s25] Dim rngA As Range, rngC As Range Dim strFind$ For Each rngC In rngAll.Columns For Each rngA In rngC.Cells If rngA = ".. 2023. 8. 1.
[기초방] VBA 100제 #38 [ 재배치하기 ] 최근에 기초 문제가 난이도가 너무 높다고 해서 문제의 난이도를 낮춰보았다. 물론 난이도라는게 내가 한번이라도 해보거나 경험하였다면 그또한 쉬운 문제일것이다. 문제를 많이보고 많이 풀어보는 수밖에 없다... 기초방을 함께 하는 크루들의 실력이 상향 평준화 됨에 따라 본인의 자리가 작아짐을 느끼지만 그것또한 본인의 기쁨이리라... For Each rngA In rngall If rngA = rngall(1) Then rngA(1, 6).Resize(1, 5) = Array("영업자", "시간", "제품명", "배송지", "가격") Next rngA if rngA = rngAll(1) : 첫번째 행 / 즉 머릿말을 의미한다. For Each rngA In rngall If IsDate(rngA) Then '=.. 2023. 3. 6.