if/when 스타일 조건을 사용하여 셀 이동 자동화

if/when 스타일 조건을 사용하여 셀 이동 자동화

여기에 이미지 설명을 입력하세요

내보낸 데이터 정리 프로세스를 완전히 자동화하고 싶습니다. 나는 다음을 원한다:

  • 오버플로 행의 데이터를 해당 열로 이동합니다. 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)오른쪽의 한 열에 불과하며 항상 코드의 일관성을 확인하십시오.
  • "데이터가 올바른 열에 있으면 올바른 행으로의 이동을 자동화해야 합니다." - 내 코드는 동일한 단계에서 두 가지 작업을 모두 수행하며 더 짧은 코드 외에 훨씬 더 간단합니다.

관련 정보