기초방12 [기초방] VBA 100제 #18 [ 이름별 카테고리 나열하기 ] 왼쪽에 있는 표를 이름별로 나열하는 구문이다. 이문제는 이름과 이름과 하위분류로 이루어져있다. 이름이 나오면 한행을 이동후 E열에 이름부터 다시 출력을 하여야 한다. If InStr(rngA, " ") = 0 Then Set rngX = Cells(rngX.Row + 1, "e") rngX = Split(rngA, " ")(0) 문자 조합이 이름은 이름만 있고 이름과 하위분류로 구성된것은 이름 + [공백 ] + 하위분류로 되어 있기 때문에 Instr로 공백 유무를 따지면 이게 이름으로 구성되어 있는지 이름과 하위분류의 조합인지를 알 수 있다. 따라서 위의 구문은 이름으로만 구성이 되었다면 한행을 내려와서 E열에 이름을 출력하라는 구문임을 알 수 있다. 내말 몬말인지 알지?? 출력은 [e5] 부터 출력인데.. 2023. 1. 17. [기초방] VBA 100제 #16 [ 이벤트 + 빈셀삭제하기 ] 이러한 문제는 임시적으로 배열에 담았다가 출력을 하면 더 쉽게 가능하지만 아직은 배열과정이 아니기에 철저하게 셀기반으로 풀어보려 한다. 크루들이 과제를 풀어가는 것을 보니 일단 이벤트 개념은 확실히 잡고 가는거 같다. 본인이 공부할때는 이벤트가 참 어려웠다. 엑사남님 강의를 제대로 안 들은것도 있었지만 모듈에서 짜던 코드들이 시트를 넘나 드는것을 보면서 많이 힘들었던 기억이 있다. 엑사남님 강의를 정독으로 3번쯤 볼때 '아..이걸 왜 어려워했지' 했을 정도로 강의 자체를 쉽게 쉽게 하셨으니, 지금 잘 이해가 안 가는 분들은 꼭 강의를 정독하길 바란다. 이벤트에서 Target 이라는 것은 쉽게 말해서 selection 이라고 생각하면 된다. 내가 선택한 셀 또는 영역이 target이 된다. 이문제에서 각 .. 2023. 1. 16. [기초방] VBA 100제 #13 [ 정규식으로 계산하기 ] 이번 문제는 숫자와 사칙계산 부호만을 이용하여 계산하는 문제이다. 숫자만 가져오는 구문은 like문처럼 [0-9] 이렇게 하거나 정규식 패턴은 \d 이렇게 하면 되는데, \d 는 1234 라는 숫자가 있으면 1만 선택이 된다. 여러자리의 숫자를 선택하려면 \d+ 이렇게 하면된다. 이 문제를 해결하기 위해서 본인이 사용한 패턴은 이렇다. .Pattern = "[^\d++-×÷]" 숫자가 아니고 사칙연산 기호가 아닌 모든것을 패턴으로 잡고 삭제하기 위함이다. 부정기호인 ^ 의 사용으로 선택된 패턴들이 반전되는것을 볼 수 있다. 우리가 사용하는 사칙연산 기호중 곱하기와 나누기는 컴퓨터가 이해하는 기호와는 다르기 때문에 변경을 해줘야 한다. If .test(rngX) Then str = Replace(.Repl.. 2023. 1. 15. [기초방] VBA 100제 #10 [ 데이터 영역 재설정하기 ] 데이터 영역을 랜덤화해서 재설정하는 구문이다. 보통 이러한 문제는 랜덤 난수를 추출하여 그것에 따라 정렬하여 재배치 하면 된다. 문제풀이는 이렇다. 1. 난수를 발생 2. 난수와 기존값을 조합하여 임시 영역에 추출 3. 정렬 4. 난수와 기존값 분리 5. 기존값을 새로운 위치에 추출 6. 난수와 기존값을 출력한 영역 삭제 더보기 Option Explicit Sub 기초방10_1() Dim bln As Boolean Dim rngall As Range Dim i& Application.ScreenUpdating = False For i = 1 To 2 '= 문제에 따른 영역 재 설정 If bln = False Then Set rngall = [c5:c14] Else Set rngall = [e21:k27].. 2023. 1. 6. 이전 1 2 3 다음