본문 바로가기

VBA/엑사남_기초방86

[기초방] VBA 100제 #25 [ 병합셀 다루기 ] 병합셀을 다루는 구문이다. 병합셀은 딱 두 개만 알아두면 된다. If rngX.MergeCells Then rngX.Next.Resize(rngX.MergeArea.Count, 1) = rngX if rngX.MergeCells : 병합된 셀이니 병합이면 이렇게 병합이 아니라면 이렇게.... MergeArea.Count : 병합된 영역의 크기 이 두개를 모르면 맨땅에 헤딩각!!! 더보기 Option Explicit Sub 기초방25() Dim rngX As Range: Set rngX = [c7] Dim rngM As Range Dim R& Dim cnt&: cnt = 1 Do Until IsEmpty(rngX) '= 병합된 셀들을 순환 If rngX.MergeCells Then rngX.Next.Res.. 2023. 2. 2.
[기초방] VBA 100제 #24 [ 멀티 필터링 ] 이번 문제는 본인이 의뢰받은 일중에서 계속적으로 필터링을 해야 하는데 그때마다 필터의 설정 / 해제를 해준는것이 불편하여 사용하고 있던 필터링 문제를 착안하여 문제를 만들어 보았다. 역시 사용된 것은 이벤트 구문 + 필터링으로 노력한거에 비해 뽀대(?) 뿜뿜인 녀석이다. 실무에 활용하기 바란다. 기초방 구문은 익숙하지가 않아서 그렇지 그 원리를 알면 코드를 이해하거나 활용에 대해서는 각자의 코딩 지식 수준에 따라 그 스펙트럼이 충분히 더 넓어지리라 예상한다. 구문 진행은 이렇다. 더블클릭이벤트로 영역안에서 더블 클릭하면 자동 필터가 설정 또는 해제된다. 체인지 이벤트는 이벤트 구간의 값의 변화에 따라 포함 / 일치 / 이상 / 이상 순으로 체인지 이벤트를 설정하였다. On Error Resume Next.. 2023. 2. 1.
[기초방] VBA 100제 #23 [ 제품 나열하기 ] 원래는 21번 문제였는데 노화로 인한 초기 치매인지 문제를 낸 지도 몰라서 23번으로 올린다. 같은 크루분들께 죄송하다. 이번 문제는 [ 제품 : 과일,라면,음료 ] 이러한 형태의 제품구성에서 제품의 각각의 아이템을 제품 : 아이템1 / 제품 : 아이템2 이런식을 파싱하여 조합하는 형태이다. 보통 이런 경우는 [제품 : ]을 Replace로 없애주고 남아있는 아이템들을 콤마로 Split하여 각각을 조합하면 된다. 본인은 이번구문에서 패턴에서 [제품 : ] 을 배제한 Match 값들을 순환하면서 조합하는 형태로 문제를 풀어보려고 한다. 패턴을 설명하면 제/품/공백/콜론/콤마가 아닌 다수의 문자를 선택하라는 뜻이다. 여기서 주의할것은 만일 제품 아이템에 [ 제 또는 품 ] 문자가 들어가면 추출이 불가해진다... 2023. 1. 31.
[기초방] VBA 100제 #22 [ 부서별최대값구하기 ] 부서별 인사평가가 가장 높은 사람들을 출력하는 문제이다. 보통 이러한 문제는 Max함수를 이용하여 풀면 되니까. max함수를 배열 수식으로 풀면 된다. 그러면 여기서 문제가 있다. 엑셀 함수로는 Ctrl + Shift + Enter를 눌러서 배열수식을 완성하면 되는데 이걸 VBA로 어떻게 표기하냐가 달렸다. 기초방 21번 문제에 사용되었던 Sumifs는 값을 배열로 반환을 하여서 21번 문제 같은 경우에 유용하게 사용되었지만 2019년 이전버전에는 사용할 수 없어 이번에는 2010 버전에도 사용할 수 있는 Max함수로 풀어보려고 한다. Sumifs와 함께 Maxifs로 풀면 역시 배열로 반환하기 때문에 좀 더 쉽게 풀 수 있다. 시훈아빠의 문제 풀이를 소개한다. 무지님의 함수식 풀이도 함께 올린다. 다시.. 2023. 1. 30.