
내보낸 데이터 정리 프로세스를 완전히 자동화하고 싶습니다. 나는 다음을 원한다:
- 오버플로 행의 데이터를 해당 열로 이동합니다. VB에서 다음 코드를 시도했습니다. (이것은 이메일에서 @ 기호를 식별하고 각각 모든 이메일 주소를 오른쪽으로 두 자리 이동하려고 합니다.)
서브쿼티()
Dim D는 범위로, r은 범위로
D = Intersect(ActiveSheet.UsedRange, Range("D:D")) 설정
For Each r In D
If Left(r.Text, 2) = "@" Then
r.Copy r.Offset(0, 1)
r.Clear
End If
Next r End Sub
- 데이터가 올바른 열에 있으면 올바른 행으로의 이동을 자동화해야 합니다. 쉽게 위로 이동하도록 할 수 있지만 한 연락처에 이메일 주소가 없으면(예를 들어) 위로 이동할 때 이메일이 잘못된 행에 있게 됩니다.
답변1
다음 코드를 사용하세요:
Sub qwerty()
Dim y As Integer, x As Integer
y = 2
Do Until Cells(y, 4) = ""
If Cells(y, 3) = "" Then
Select Case Left(Cells(y, 4))
Case "[E": x = 6
Case "[H": x = 7
Case "[M": x = 8
Case "[A": x = 9
Else: x = 10
End Select
Cells(y - 1, x) = Cells(y, 4)
Rows(y).EntireRow.Delete
Else
y = y + 1
End If
Loop
End Sub
원래 VBA에 대한 몇 가지 설명:
- "이메일에서 @ 기호를 식별하려고 합니다...":
left(r.Text,2)
문자열의 처음 두 문자를 선택합니다. 이는 한 문자 길이의 문자열("@")과 결코 동일하지 않습니다! (내 코드는 [다음의 첫 번째 문자를 기준으로 위치를 결정합니다) - "모든 이메일 주소를 각각 오른쪽으로 두 자리 이동" - 귀하의 코드는
OFFSET(0,1)
오른쪽의 한 열에 불과하며 항상 코드의 일관성을 확인하십시오. - "데이터가 올바른 열에 있으면 올바른 행으로의 이동을 자동화해야 합니다." - 내 코드는 동일한 단계에서 두 가지 작업을 모두 수행하며 더 짧은 코드 외에 훨씬 더 간단합니다.