2012-10-30 2 views
4

데이터가 뒤죽박죽 된 Excel 시트가 있습니다. 예를 들어, 열 AB와 AC에 있어야하는 데이터는 열 B와 C에 있었지만 행 뒤에있었습니다. 나는 각각 AB와 AC에 B와 C에서 데이터를 이동하는 쓴 다음 한 :매크로를 작성하여 열의 데이터를 위로 이동 하시겠습니까?

Dim rCell As Range 
Dim rRng As Range 

Set rRng = Sheet1.Range("A:A") 

i = 1 

lastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row 

For Each rCell In rRng.Cells 

If rCell.Value = "" Then 

    Range("AB" & i) = rCell.Offset(0, 1).Value 

    rCell.Offset(0, 1).ClearContents 

    End If 

    i = i + 1 

    If i = lastRow + 1 Then 

    Exit Sub 

    End If 

Next rCell 

End Sub 

그러나 지금 그들이하는 적절한 행 아래 행에있는 데이터의 문제가 해결되지 않습니다 오른쪽 열에. 저는 VBA 매크로를 처음 사용하기 때문에 데이터를 정렬하는 데 도움이 될만한 도움을 주실 수 있습니다. Offset 매개 변수 (-1,0)를 토글 링하려했지만 작동하지 않습니다.

답변

1

다음과 같이 시도해보십시오.

For i = Lastrow To 1 Step -1 
    ' move data into cell AA from Cell A one row down 
    Cells(i, 27).Value = Cells(i + 1, 1).Value 
Next 
0

수행하려는 작업을 수행하기 위해 범위를 반복 할 필요가 없습니다.

대신을 시도해보십시오

Sub MoveBCtoAbAcUpOneRow() 
    Dim firstBRow As Integer 
    Dim lastBRow As Long 
    Dim firstCRow As Integer 
    Dim lastCRow As Long 

    ' get the first row in both columns 
    If Range("B2").Value <> "" Then 
     firstBRow = 2 
    Else 
     firstBRow = Range("B1").End(xlDown).Row 
    End If 
    If Range("C2").Value <> "" Then 
     firstCRow = 2 
    Else 
     firstCRow = Range("C1").End(xlDown).Row 
    End If 

    ' get the last row in both columns 
    lastBRow = Range("B" & ActiveSheet.Rows.Count).End(xlUp).Row 
    lastCRow = Range("C" & ActiveSheet.Rows.Count).End(xlUp).Row 

    ' copy the data to the correct column, up one row 
    Range("B" & firstBRow & ":B" & lastBRow).Copy Range("AB" & firstBRow - 1) 
    Range("C" & firstCRow & ":C" & lastCRow).Copy Range("AC" & firstCRow - 1) 

    ' clear the incorrect data 
    Range("B" & firstBRow & ":B" & lastBRow).ClearContents 
    Range("C" & firstCRow & ":C" & lastCRow).ClearContents 

End Sub 

주 :

  • 각 열의 데이터의 형태가 동일한 경우, 필요하지 않은 에 첫 번째와 마지막 행을 찾을 수 각각. 2 개 대신 각각 하나의 복사 작업에 대해 하나의 변수 만 필요합니다.
  • 변수 선언을 필수로 설정했는지 확인하십시오. (Tools -> Options -> Variable Declaration 필요) 이미 이것을하고 있을지 모르지만, Sub의 꼭대기가 잘린 것처럼 보일 수는 없습니다.
관련 문제