자료실

부자는 돈을 써서 시간을 아끼지만 가난한 사람은 시간을 써서 돈을 아낀다

vb6.0/vba

IT HUB를 찾아주셔서 감사합니다.

vba [vba] 쇼핑몰에서 다운로드한 주문서의 상품명을 원하는 형태로 한 번에 쉽게 정리

페이지 정보

profile_image
작성자 하나를하더라도최선을
댓글 0건 조회 8,670회 작성일 20-09-08 04:38

본문

5a71c8e4fb5c7a16cbdf603ed4d735fc_1599507404_9029.png

사진과 같이 다운받은 주문서의 상품명이 C열에 있습니다.



5a71c8e4fb5c7a16cbdf603ed4d735fc_1599507404_5049.png
다운받은 주문서의 상품명을 D열처럼 정리하고자 합니다.



-액셀로 다운받은 주문서를 정리 하려고 합니다.

-"예시" 라고 되어 있는 시트에서 "결과값" 이라고 되어 있는 시트로 변환되었으면 합니다.

-"예시"시트에 보시면 문장 맨앞에 랜덤한 문자열이 항상 존재 합니다. 그리고 특정 상품들이 대괄호([])안에 적혀 있습니다.

-하나의 제품만 있으면 '#' 기호가 없지만, 여러개의 제품들을 산 사람이 있다면 '#' 기호로 구분되어 집니다.

-만약 '(랜덤한문자열) [콜라#사이다#오렌지] -n개' 이러한 문장이 있을때, 파일에서와 같이 '(랜덤한문자열) 콜라 -n개#사이다 -n개#오렌지 -n개' 이런식으로 몇개를 샀는지에 따라, #기준으로 각각의 문장에 -n개가 분배되었으면 좋겠습니다.

아래 매크로로 한방에 해결됩니다.

Sub program1472_com()

Dim C As Range

Dim V As Variant, s As Variant, t As String

For Each C In Range(Cells(2, 3), Cells(Rows.Count, 3).End(3))

V = Split(Replace(Replace(C, "[", vbCrLf), "]", vbCrLf), vbCrLf)

V(2) = Abs(Val(Trim(V(2))))

t = ""

For Each s In Split(V(1), "#")

If Len(t) Then t = t & "#"

t = t & s & "-" & V(2) & "개"

Next

C.Next = V(0) & t

Next

End Sub




댓글목록

등록된 댓글이 없습니다.