| 이름 | 분류 | 옵션 | 비용1 | 구분 | 배송비용 |
| 홍길동 | 상품A | 레드 | 3000 | 착불 | 3000 |
| 홍길동 | 배송비 | 3000 | | 선불 | 0 |
| 오렌지 | 상품B | 주황 | 3000 | 착불 | 3000 |
| 아무개 | 상품C | 블랙 | 4500 | 착불 | 4500 |
| 고양이 | 상품B | 화이트 | 5000 | 착불 | 5000 |
| 고양이 | 상품B | 화이트 | 5000 | 착불 | 5000 |
| 고양이 | 배송비 | 5000 | | 선불 | 0 |
안녕하세요.. 엑셀 VBA 독학을 하던 중 질문사항이 있어서 문의드립니다..!
결론부터 말씀드리면
1. 분류 컬럼이 배송비일 때의 이름을 추출(ex. 홍길동, 고양이)
2. 추출한 이름을 갖는 열을 뽑아내고싶습니다.(ex. 홍길동 - 1,2열 / 고양이 - 3,4,5열)
1번 내용은 VBA에서 for next문과 if문을 이용하여 진행하였는데 이 다음은 어떤식으로 해야될지 도통 감이 안잡혀요..
로직에 대한 힌트를 주셔도 좋고 코드로 예시를 들어주시면 더욱 더 감사하겠습니다...
첫댓글 나도 이 코드를 잘 몰라서 소개만 해주고 가려고 합니다. - 이게 FM인 듯 하고요.
dictionary가 중복을 제거할 때 상당히 도움이 되는 겁니다. 아래에서 이용한 코드를 참조해서 찾아보세요.
dictionary의 기능은 아예 중복자체를 허용하지 않으니.. 이걸로 이름항목을 저장해 두고
그걸 갖고 다시 for next 문으로 필요한 데이타를 긁어 모으는 2단계를 거쳐야 합니다.
아래 카페 글을 참조하시고,,,
http://cafe.daum.net/funnyexcel/K4Nh/2298
나는 단순무식한 코드를 좋아해서 아래와 같이 뽑아내면 비효율적이기는 하지만 원하는 결과는 나옵니다.
요새 워낙이 컴 사양이 좋아서 코드가 비효율적이라도 큰 문제가 없음
for i=2 to iend
if cells(i,2)="배송비" then
namei=cells(i,1)
for j=2 to iend
if cells(j,1)=namei then
cells(j,1)~cells(j,6) 데이타 뽑아내기
end if
next j
end if
next i
댓글은 글자수의 한계가 있네요..
굳이 vba가 아니라면 고급 필터가 대안이 될 수 있습니다.
1) 배송비로 필터링을 해서 이름을 뽑아냄
2) 이름을 다른 열에 복사
3) 이름에서 필요하면 데이타탭-중복된 항목 제거
4) 고급 필터를 이용하여 조건항목에 이름 field에 3)번 결과를 지정하고 필터링
감사합니다!! 예시코드로 뽑아보고 링크 글도 참고해서 조금 더 공부해보겠습니다