자막에서 두사람의 대화인 경우 대쉬(-)를 넣어서 구분되어 있다.
-But if you just... -Rapunzel, we're done talking about this.
-그렇지만 만약… -라푼젤, 이제 이 이야긴 그만하자
-Trust me,... -Rapunzel.
-믿어주세요 전… -라푼젤
-...I know what I'm -Rapunzel.
-알아요 전… -라푼젤
-Oh, come on. -Enough with the lights, Rapunzel.
-제발요 엄마 -너에게 다른 인생이란 없어 라푼젤
이런 자막인 경우에 VBA 를 이용하여 분리 저장을 해봤다.
내가 잘 몰라서 그런지 몰라도 위에서 부터 아래로 For 문을 돌리면 끝까지 처리가 안된다.
그래서 맨 아래줄부터 위로 처리하는 로직으로 구현을 하고 테스트를 해봤다.
자막에 - 가 들어가 있는데 1개만 들어간 경우가 있다. 이 경우에는 - 를 제거해주고
- 가 두개 들어간 경우에는 개수를 먼저 표시한 다음에
자막 대사를 분리 저장하는 로직으로 구현했다.
Sub dash_check() '// 대쉬가 들어간 것만 표시
Dim r&, sRow&, eRow&, k&, j&, v
Application.ScreenUpdating = False
sRow = 2
eRow = Cells(Rows.Count, "A").End(3).Row
For r = sRow To eRow Step 1
On Error Resume Next
If InStr(Cells(r, 1), "-") Then '// 셀에 대쉬(-)가 포함되어 있으면
v = Split(Cells(r, 1), "-") '// Split 함수를 이용하여 배열로 저장
If UBound(v) = 1 Then '// 배열의 개수를 파악하여 1개, 즉 대쉬(-)가 1개만 들어간 경우이면
If Left(Cells(r, 1), 1) = "-" Then '// 셀의 첫번째가 대쉬(-) 이면
Cells(r, 1) = Trim(Mid(Cells(r, 1), 2, Len(Cells(r, 1)))) '// 두번째 이후의 값을 다시 셀에 저장하라
End If
Else
Cells(r, "D") = UBound(v)
j = j + 1
End If
Else
Cells(r, "D") = vbNullString
End If
Next r
MsgBox "총 " & k + j & "개 표시 " & j & "개 " & k & "개"
End Sub
Sub subtitle_cellsplit()
'// 대쉬(-)가 2개 들어간 자막을 분리하여 저장 처리
'// 대쉬(-)가 들어간 자막은 아래부터 위로 처리를 해야 제대로 저장됨
Dim r&, sRow&, eRow&, k&, j&, v, ss
Application.ScreenUpdating = False
sRow = 2
eRow = Cells(Rows.Count, "A").End(3).Row
For r = eRow To sRow Step -1
If Cells(r, 4) = 2 And InStr(Cells(r, 1), "-") And Cells(r - 1, 4) = 2 And InStr(Cells(r - 1, 1), "-") Then
ss = Split(Cells(r - 1, 1), "-")
v = Split(Cells(r, 1), "-")
Cells(r - 1, 1).Value = Trim(ss(1))
Cells(r - 1, 1).Offset(2).EntireRow.Insert
Cells(r - 1, 1).Offset(2).Value = Trim(ss(2))
Cells(r, 1).Value = Trim(v(1))
Cells(r, 1).Offset(2).EntireRow.Insert
Cells(r, 1).Offset(2).Value = Trim(v(2))
r = r - 1
End If
k = k + 1
Next r
MsgBox "총 " & k & "번 반복"
End Sub
'업무 능력 향상 > 엑셀 VBA 활용' 카테고리의 다른 글
httprequest_header() (0) | 2016.03.02 |
---|---|
[VBA] 셀 병합 (바로 위아래 셀, 한행 떨어진 셀) (0) | 2015.08.15 |
[VBA] 자막 셀 삭제, 셀 병합, 자막 분리정리 (0) | 2015.08.08 |
[VBA] 동일 셀내에서 중복값 제거 (1) | 2015.07.21 |
[VBA] SQL Query (Select 구문) (0) | 2015.07.19 |