나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 조삿갓 (choga21)

추천:  2
파일:     운송장정리001[2].xlsm (35.4KB) 조회:  1471
제목:   [RE]상품번호 변경하는 VBA 여쭙니다.
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전2010

* 아래줄에 질문을 작성하세요 >>
엑셀의 시트는 두개 입니다.
주문데이터시트 : 주문이 들어오는 상품명과, 변경될 상품명의 두열로 되어 있습니다.
비교값시트 : 순서열과 찾을 문자열 두열로 되어 있습니다.(여기서 비교하여, 주문데이터시트의 내용을 변경하는 참조값)


작동은 주문데이터시트의 주문이 들어오는상품명에 비교값시트의 찾을 문자열의 내용이 포함되어 있으면, 비교값시트의 순서열의 번호로 바꾸어
주문데이터시트의 변경상품명의 열에 입력 입니다.

주문데이터시트 A2의 "001_구르미냉장고탈취제 | 랜덤"에 비교값시트의 "구르미냉장고탈취제"라는 텍스트가 포함되어 있으면,
비교값시트의 구르미냉장고탈취제에 해당하는 162번으로 바꾸어 주문데이터시트 B2에 162_구르미냉장고탈취제 | 랜덤이라고 적히면 됩니다.

"001_구르미냉장고탈취제 | 랜덤" >>>"162_구르미냉장고탈취제 | 랜덤"

앞의 숫자만 바꾸고, 나머지 글자는 모두 그대로 입력

내용이 없을때까지 반복
==============[김기동님 글에 대한 답변입니다]==============

일단 질문하신 내용은 굳이 VB 매크로가 아니라도
내장함수(워크시트 함수)만으로도 구현이 가능합니다.

첨부 파일에 두 가지 방법 모두 구현하였으니 참고 바랍니다.

B열은 VB로 구현한 것이고

D열은 워크시트 함수만으로 구현한 것입니다.
그리고 C열은 중복계산되는 중간값을 따로 계산한
보조 열입니다..

열별로 음영색이 동일한 것은
동일한 수식을 복사한 것을 나타냅니다.

즉, C2와 D2 셀에 각각 모범 수식을 입력하고
이것을 아래로 쭈욱 복사한 것입니다.

----------------------

그런데 질문 내용에 좀 문제점을 발견하였습니다.
5행과 6행에 보면 실리콘커버라는 동일 상품에 대해
규격에 따른 옵션이 존재하는 것 같은데
상품이 동일하면 옵션이 달라도 동일한 코드로
분류되는 것이 맞나요?

그렇다면 [비교값] 시트의 경우는
옵션과 상관 없이 상품명만으로 코드를 변경하는
테이블이므로
6~7행, 14~15행에 동일한 데이터를 중복하여
테이블을 만들 필요가 없습니다.
즉, 7행, 15행은 삭제해도 된다는 것이고
그래야 프로그램의 실행속도가 빨라질 것입니다.
(물론 컴퓨터가 워낙 빨라서 그 차이를 실감할 수는 없지만)

VB 코딩을 효율적으로 하기 위해서
비교값 테이블에 범위 이름을 정의하여 사용했습니다.

그런데 범위의 정의를 OFFSET 함수를 활용하여
가변 범위로 설정했기 때문에
데이터를 연속으로 입력하기만 하면
데이터를 추가/삭제하더라도 자동으로 인식하게 됩니다.
 
[불량 게시물 신고]  
        
  

작성일 : 2018-06-13(15:30)
최종수정일 : 2018-06-13(15:30)
 


 ◎ 관련글

  제 목   작성자   날짜
상품번호 변경하는 VBA 여쭙니다. 김기동 2018-06-13
[RE]상품번호 변경하는 VBA 여쭙니다. 조삿갓 2018-06-13