본문 바로가기

VBA/엑사남_기초방86

[기초방] VBA 100제 #39 [ 문자조합하기 ] 이번 문제는 characters + 정규식 문제의 확장편 정도로 생각해주면 좋을것 같다. 39번 문제는 [이전] 데이터를 보면 알겠지만 처음을 제외하곤 숫자 뒤에 % 가 4자리씩 순환하고 있는데 이걸 나머지 숫자에도 %을 삽입하라는 문제이다. 39-1은 이웃하지 않은 알파벳과 숫자의 조합으로 조합문자를 만들어 내는 것이다. 39번은 정규식으로 풀려면 패턴을 일치시켜야 하기에 정규식 패턴을 다음과 같이 만들어 보았다. 패턴설명은 뒤에 % 가 없는 숫자를 패턴으로 하는 정규식 패턴이다. firstindex는 일치 패턴의 바로 직전까지를 의미하기 때문에 firstindex + cnt를 함으로서 글자가 삽입되더라도 그 위치를 변경해가면서 결국 의도한대로 패턴과 일치된 숫자들 뒤로 % 를 삽입할 수 있다. Set.. 2023. 3. 14.
[기초방] 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.
[기초방] VBA 100제 #37 [ Characters ] 37번 문제인데 38번으로 표기해서 크루인 [시훈아빠]님한테 혼이났다.. 37번으로 알고 가시길... 이문제는 Characters의 매소드중 Insert를 알고 모르고의 차이가 크다.. 이걸 Replace로 하게 되면 코드가 많이 지저분해질것이다. Characters 매소드에 대해선 Characters의 고찰편에서 자세하게 다뤄보도록 하겠다. With Reg .Pattern = "[^\s]+" .Global = True End With 해당 정규식 패턴은 [ 띄어쓰기가 아닌 모든 문자 ] 라는 의미이다. With rngA.Characters(idx, Len(Ma)) If .Font.Color = vbRed Then .Insert ("[" & Ma & "]") End If End With 이 구문은 핵심구.. 2023. 3. 6.
[기초방] VBA 100제 #36 [ 가로정렬하기 ] 더보기 Sub 기초방36() Dim rngAll As Range: Set rngAll = [c7:h7] Dim Vtemp: Vtemp = Split([c10], ", ") Dim bln As Boolean Dim C&, str$, cnt&: cnt = 65 Do If TypeName(Application.Match(Chr(cnt), IIf(bln = False, rngAll, Vtemp), 0)) "Error" Then If bln = True Then For C = 1 To Len([c10]) '= 기초방 36-1번 문제 해법 C = InStr(C, [c10], Chr(cnt)): If C = 0 Then Exit For str = IIf(str = "", Chr(cnt), str & "," & Chr.. 2023. 3. 5.