본문 바로가기

Haja157

[VBA_Select Case] 데이터 재배치 엑셀로 점수별 등급 나누는 문제는 엑셀을 접한 분들은 한번씩 거쳐가는 통과의례 같은 문제이다. 허나 참 중요한 구문인것을 부인할 수도 없기에 엑셀로 작업을 할때 IF에 IF에 IF를 거쳐 의식이 2% 정도만 남아 있을 때까지 해야 IF 지옥에서 빠져나올 수 있다. 오늘 소개할 구문은 SELECT CASE 구문이다. SELECT CASE 값 CASE IS => 90:RANGE("A2") = "우수" CASE IS => 80:RANGE("A2") = "보통" CASE IS => 70:RANGE("A2") = "위험" CASE ELSE : RANGE("A2") = "낙제" END SELECT CASE IS -> 부등호를 동반할때 ---------------------------------------------.. 2021. 8. 9.
[VBA_Sum vs Consolidate] 병합과 합계구하기 몇일전 같은 연번 내에서 부분합을 구하는 코드를 작성하면서 Consolidate의 발견은 나에게 만큼은 콜롬버스의 신대륙 같은 것이었다. 해서 몇일전 비슷하게 작성했던 코드를 심기일전하여 이 게임체인저 같은 녀석을 적용시키기 위해서 코드를 비교해보기로 했다. 공동코드는 기준점인 rngM을 기준으로 병합된 셀의 크기를 M_cnt 변수에 담아서 같은 연번을 resize의 크기로 영역을 한정하였다. 처음 코드는 한정된 영역을 엑셀 함수인 Sum함수로 그 영역의 합계를 구하였다면, 두번째 코드는 Consolidate로 합계를 구하였다. 육안으로 보기에도 처음 코드가 더 깔끔해 보일것이다. VBA를 처음 입문할 때 엑사남님께서 이런 말을 하신적이 있다. VBA 잘하고 싶다고요 그럼 엑셀을 공부하세요 그렇다. VB.. 2021. 8. 8.
[VBA_Consolidate] 부분합 구하기 몇일전에 같은 연번내에서 부분합 구하기를 한 적이 있다. 하면서도 문제에 비해서 너무 요란하게 코드를 작성하는게 아닌가 싶어서 구글링을 했더니 그 긴 코드가 한줄로 가능한것을 보고 역시 세상을 넓다는 걸 또 한번 느꼈다. 중복값을 피해서 고유값을 도출하는 코드들은 찾아보면 많은데 고유값을 도출해서 값들의 합계를 구하는 코드들은 많이 없어 내가 느낀 새로움을 박제하고자 글을 쓴다. 물론 엑셀로 하면 어렵지않게 할 수 있는 코드들이지만 VBA 통해서 이뤄낸 성과에 칭찬 칭찬하다. Consolidate는 더 공부해서 심도 있게 다룰려고 한다. 통합코드로서 최근에 본 코드중에서 심히 구미를 당기는 녀석이다. 2021. 8. 7.
[VBA_Unmerge] 병합셀 해체하고 같은 같으로 채우기 이번 시간은 병합된 셀을 병합을 풀고, 푼 영역을 원래 값으로 채우는 코드를 만들어 보자. Unmerge 코드는 크게 보면 전체영역을 잡고 그 영역을 For each로 개체 순환하며, 병합셀을 Unmerge 하며 그 본래의 값을 Unmerge 영역에 담아주면 된다. 코드는 이렇다. 이런 코드를 처음 접하는 분들은 아직 익숙해지지 않아서일 뿐이지 크게 난이도가 있는 코드는 아니다. 오늘은 Unmerge에 대해서 글을 쓸려고 했지만 이 문제를 내기 위해서 만든 코드가 오히려 고급 코드들이 많아서 문제 만드는 코드까지 이어서 글을 써보려 한다. 사용된 코드는 크게 Collection과 Find 그리고 엑셀 함수인 RandBetween이다. 1. 영역에 랜덤하게 1부터 6까지의 숫자를 뿌려주고 2. Collec.. 2021. 8. 6.