엑셀 카페에 올라온 질문으로
NOS의 구성은 없애고 상품명만 나타나게 하고 싶다는 내용이다.
알고 보니 수식으로도 간단히 해결이 되었네.
배열을 재배열로 풀이한 쉬운 과정
Sub chgTitle() Dim intBig As Integer Dim intLine As Integer Dim varOrder() As String Dim varNew() As String Dim strValue As String Dim varO As Variant Dim i As Integer Dim varNewOrder As String Dim rng As Range 'B열을 순환 For Each rng In Columns("B").SpecialCells(2) If rng.Row <> 1 Then '변수설정 varOrder = Split(rng, Chr(10)) '주문항목을 배열로 분리 intBig = InStrRev(varOrder(0), "]") '] 위치 intLine = InStrRev(varOrder(0), "|") '| 위치 strValue = Mid(varOrder(0), intLine + 1, intBig - intLine - 1) '|와 ]의 글자값 For Each varO In varOrder ReDim Preserve varNew(i) Select Case varO Case Is = varOrder(0): varNew(i) = varO '첫번째 배열은 제목이므로 0 값에 삽입 Case Is <> varOrder(0): varNew(i) = Mid(varO, InStr(varO, strValue) + Len(strValue) + 2) '본 주문내역부터 찾아서 배열에 삽입 End Select i = i + 1 Next varO End If varNewOrder = Join(varNew, Chr(10)) rng.Offset(, 1) = varNewOrder '주문선택 옆 열에 변경된 내용 입력 i = 0: Erase varOrder: Erase varNew: varNewOrder = vbNullString '변수 초기화 Next rngEnd Sub cs
'VB(A)' 카테고리의 다른 글
2중 VLOOKUP (0) | 2015.05.15 |
---|---|
그룹으로 내림차순 (0) | 2015.05.15 |
자동필터를 이용한 데이터 검색 (0) | 2015.05.02 |
초과근무내역 가져오기 (0) | 2015.04.29 |
흩어진 글자들을 한줄로 오름차순 정렬 (1) | 2015.04.22 |