VB(A)

셀 안의 문자열 삭제

당근쨈 2015. 5. 3. 18:00

엑셀 카페에 올라온 질문으로 

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 rng
End Sub
cs



주문선택변경 원본.xlsm



'VB(A)' 카테고리의 다른 글

2중 VLOOKUP  (0) 2015.05.15
그룹으로 내림차순  (0) 2015.05.15
자동필터를 이용한 데이터 검색  (0) 2015.05.02
초과근무내역 가져오기  (0) 2015.04.29
흩어진 글자들을 한줄로 오름차순 정렬  (1) 2015.04.22