본문 바로가기

VBA/엑사남_기초방86

[기초방] VBA 100제 #79 [ 로또번호 정렬하기 ] 결합되어 있는 로또번호를 풀어서 각 사람의 로또 번호를 정렬하는 구문이다. 이 문제를 해결하기 위해서는 2가지를 알고 있어야 한다. 1. 문제에서는 숫자들이 문자열로 조합이 되어 있기 때문에 저상태에서 SPLIT를 하게 되면 숫자들이 문자화 되어서 정렬을 하게 될경우, 숫자가 아닌 문자로 인식하기에 문자열 정렬이 된다 rngX.Resize(1, 7).NumberFormatLocal = "G/표준" rngX.Resize(1, 7).Value = rngX.Resize(1, 7).Value 영역을 선택 후 초기화 한후 다시 VALUE값으로 씌어주면 된다. 두번째는 행단위 정렬이다. rngX(1, 2).Resize(1, 6).Sort rngX(1, 2), Orientation:=2 이 두 구문을 모를 경우 문제.. 2023. 10. 19.
[기초방] 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.