본문 바로가기

VBA/엑사남_기초방93

[기초방] VBA 100제 #78 [ 열선택하여 조건에 맞는값 출력 ] 원본테이블에서 일부열을 선택 후 조건에 맞는 값을 도출하는 문제이다. 이런 문제에 FILTER함수가 너무 특화되어 있기 때문에 이러한 문제는 365 사용자라면 VBA까지 들어오지 않을 것같다. 단 한줄.... =SORT(FILTER(FILTER(A4:F80,F4:F80>J3),{0,1,0,0,1,0}),2) 물론 이중 FILTER대신 CHOOSECOLS를 사용해도 된다. 여하튼 이번 문제의 핵심은 아래 구문인데, 이해가 잘 안되시는 분은 본인의 포스팅 중 배열 슬라이싱에 대해서 한번 더 짚고 오길 바란다. https://1stminokingdom.tistory.com/153 [VBA] 배열 슬라이싱(feat. 배열맛집) 오늘은 배열 슬라이싱에 관해서 알아보자. 본인이 쓴글에 간간히 배열 슬라이싱에 관해서.. 2023. 10. 19.
[기초방] VBA 100제 #77 [ 고유값 pivot ] 고유값을 Pivot 하는 문제이다. 이문제의 관건은 담당자의 고유값을 세로에서 가로로 뿌린 후 FILER함수를 이용하여 값을 구할 수 있느냐에 있다. 통상 FILTER함수는 = FILTER(배열, 조건, [못찾을때]) 이것을 VBA 식으로 표현하면 With Application V = Application.Filter(rngAll.Columns(2), rngAll.Columns(1) = rngA, "not Found")) rngA(2, 1).Resize(UBound(V, 1), 1) = V End With 이렇게 하면 될것 같지만 해당되지 않는다. FILTER함수의 부분일치값을 가져오는 ISNUMBER + SEARCH 조합으로 구하면 해결된다. For Each rngA In rngF With Applic.. 2023. 10. 17.
[기초방] 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.
[기초방] VBA 100제 #75 [ 필터링 구현하기 ] 이러한 문제를 VBA로 풀려면 이벤트 + 고급필터로 풀면된다. 앞서 이러한 문제는 많이 했기 때문에 찾아보면 이해가 금방갈 것이다. 이벤트 구간이다. 이벤트의 영역을 구한 후 이벤트 영역에 TARGET이 들어올때만 작동하게 된다. 출력 영역을 초기화 하고, 입력된 이벤트구간에서 입력을 마치면 엔터를 치게 되면 다음줄로 영역이 내려가는데 TARGET.ACTIVATE를 하게 되면 트릭으로 다음줄로 내려갔다가 다시 복귀를 하게 되어 마치 제자리에 있는것처럼 보이게 된다. 이렇게 불러진 기초방75코드를 보자 바로 고급필터 조건을 정한 후, 고급필터를 실행해도 되지만 그럴경우 고급필터의 내용이 아무것도 없을 때는 출력이 되지 않는다. 더보기 Option Explicit Sub 기초방75() Dim rngAll A.. 2023. 10. 16.