글자 속에 녹아있는 대괄호 안의 글자들을 맨 뒤로 보낸 뒤 다시 대괄호로 묶어주는 매크로
대괄호가 있는 것과 없는 것을 구분해서 배열에 넣은 뒤 대괄호만 따로 처리할까 고민하다가
대괄호가 있는 것만 배열에 넣고
중간에 끼인 대괄호를 없애고 앞뒤로 대괄호를 다시 붙여주고
기존 글자와 합쳐주는
단순무식한 매크로.
무언가, 배열을 멋지게 쓰고 싶었는데, 잘 모르겠다.
Sub Macro() Dim stR As String Dim strR As String Dim rnG As Range Dim rngA As Range Dim varT() As String Dim i As Integer Dim j As Integer Dim k As Integer '바꿀 열 선택 Set rngA = Range("A1", Cells(Rows.Count, "A").End(xlUp)) '기존 자료 삭제 Columns("B").ClearContents For Each rnG In rngA stR = rnG '[] 안에 든 글자들을 배열에 삽입 For i = 1 To Len(stR) j = j + 1 If Mid(stR, i, 1) = "[" Then Do strR = strR & Mid(stR, j, 1) If Mid(stR, j, 1) = "]" Then ReDim Preserve varT(k) varT(k) = strR k = k + 1 strR = vbNullString j = i Exit Do End If j = j + 1 Loop End If Next i 'str중 [] 안에 든 글자들은 삭제 For i = 0 To k - 1 stR = Replace(stR, varT(i), "") Next i '[]글자를 join 해서 대괄호 삭제 후 앞뒤로 대괄호 다시 입력 strR = Join(varT) strR = Replace(strR, "[", "") strR = Replace(strR, "]", "") strR = "[" & strR & "]" stR = Replace(stR & strR, " ", "") strR = vbNullString '배열 초기화 Erase varT rnG.Offset(, 1) = stR Next rnG End Sub | cs |
'VB(A)' 카테고리의 다른 글
A시트와 B시트의 필터링 값을 각각의 파일로 저장 (0) | 2015.07.27 |
---|---|
대량의 데이터 변환 (0) | 2015.07.27 |
합계가 될 때까지 숫자를 랜덤하게 뿌리기 (0) | 2015.07.27 |
동일한 양식의 여러 엑셀파일 취합 (0) | 2015.07.27 |
중복된 것은 표시해주면서 하나만 뿌림 (0) | 2015.07.27 |