본문 바로가기

36

[VBA_Multi For each] 행과 열을 반복하여 X묶음을 찾아라 오늘은 다중 For each를 해보려고 한다. 보통 다중 For문을 많이 사용하고 다중 For each는 많이 사용하지 않지만 본인들의 코드가 조금더 업그레이드 되려면 For each를 잘 다루어야 한다. 다중 For 문을 사용하는 이유는 막상 For each문을 쓰려면 영역안의 행과 열의 위치를 찾아내기가 힘들어 하기 때문이다. 문제는 이렇다. 각 X들의 묶음을 하나로 해서 계산을 하여 AA열에 그 값을 출력하는게 문제이다. 해법으로는 묶음들을 보면 공백xxx공백 이런식으로 되어 있기에 이 값을 찾기 위해서는 자신의 위치는 공백인데 그 다음 열이 값이 X인 값들을 찾으면 된다. 여기서 유의할 점이 있다. 바로 각 행의 1번째 값이 X가 있는 상황이다. 다시 말하면 해법으로 제시한 경우는 자기 자신은 공.. 2021. 8. 18.
[VBA_ArrayList] ArrayList를 통한 중복값 제거 후 정렬하기 내가 공부해 본 바로는 배열안에서 Arraylist만큼 편하게 정렬을 도와주는 것은 없는거 같다. 보통 정렬이라고 하면 일명 버블정렬이라고 하여 근접한 두개를 서로 비교하며 정렬하는게 표준으로 사용한다. 오늘 소개할 ArrayList의 매소드는 이러하다. 여기서 보통 Add,Clear,Contains,toArray,Sort 등이 많이 사용되는데 Add,Sort만 사용해도 충분히 활용이 높다. ArrayList를 소개하기 위해 준비한 예제는 다음과 같다. List에는 정렬해야 하는 대상들이 있으며, 각 리스트별로 중복된 값들이 있는데 이를 제거하고 정렬하는 코드를 작성할때 [ Contains ] 매소드로 기존에 이미 Add된 값들을 판별하여 중복값을 제외할 수 있으므로 실무에 유용하게 사용하기 바란다. A.. 2021. 8. 18.
[VBA_재귀함수] 모든 경우의 수 순열구하기 VBA를 배우는 것중 또 하나는 알고리즘을 하나둘씩 배워가는 즐거움이 있다. 최근에 가장 좋아하는 알고리즘으로는 재귀문인데 문제를 접할 때마다 풀기 싫지만 풀면 뿌듯한 뭐 이런 이상한 기분을 주는 녀석이다. 이걸 풀기 위해서 알고리즘 관련한 사이트와 블로그를 열심히 찾아본 결과 드디어 이해를 하였기에 코드를 올린다. 재귀함수는 호출을 하기전으로 돌아오기 때문에 종료구문을 넣어주지 않으면 무한 루프에 빠질 수가 있다. 본 알고리즘은 공백과 문자가 있는 두개의 영역에서 처음 문자가 있는 영역에서 문자가 없는 영역으로 자리를 바꿔준 다음 더이상 바꿔줄 문자가 없으면 다시 처음으로 돌아와서 문자가 없는 영역과 문자가 있는 영역으로 회기해서 위치를 바꿔주는 것이 관건이다. 이건 말로 풀기에는 한계가 있고 [F8].. 2021. 8. 17.
[VBA_STRCONV] 문자열 함수 오늘은 StrConv에 대해서 이야기를 해보려고 한다. 문자열을 재가공하거나 문자열 내에서 어떤 값을 찾거나 할때 가장 많이 쓰는 함수는 MID 함수나 INSTR함수이다. 또한 찾고자 하는 값이 문자열 내에 존재하는지도 알아보기 위해서도 쉽게 많이 사용되며 더 나아가 웹크롤링을 할때에도 많이 사용하게 된다. 개인적으로 문자열 함수를 자유자재로 사용하기 위해서 개인적으로 공부를 좀 했던것 같다. VBA 사용 목적이 결국 반복되는 엑셀의 피곤함을 줄이기 위함인지라 크게 반복문과 조건문 안에서 얼마나 효율적으로 원하는 결과를 가져오는냐가 잘만든 프로그램이라고 생각하기에 반복문 역시도 두세번 넘어가는 구문에 대해서는 체질적으로 경기(?)를 일으키는 편이라 또 다른 쾌락(?)을 느끼는 함수나 구문을 추구한다. S.. 2021. 8. 17.