2014-10-15 4 views
0

동일한 워크 시트 내에서 효율적인 방법으로 복사하고 붙여 넣기하는 올바른 방법이 있습니까? 내 코드 : 셀의 열 A가 비어 있지 않은 경우에만 Excel VBA 열의 셀이 비어 있지 않으면 열을 복사합니다.

With ActiveWorkbook.Sheets("Sheet1") 
     For Each row In .Rows 
      If Not row.Columns("A:A") Is Empty Then 'error here 
       .Columns("A:A").Copy .Range("B1") 
      End If 
     Next rw 
     .Columns("A:A").Delete 
End With 

그래서 위의 코드에서, 나는 열 A를 열 B를 교체하고 싶습니다. 예를 들어 :

1 Nil 
    Nil 
    24 
4 Nil 
4 Nil 
    12 
    3 
7 Nil 
    2 
    Nil 
8 Nil 

최종 결과는 열 B에서 다음과 같이 될 것입니다 :

1 
Nil 
24 
4 
4 
12 
3 
7 
2 
Nil 
8 

편집 : 해결, 신경 쓰지 마십시오.

With ActiveWorkbook.Sheets("Sheet1") 
    For rw = 1 To .Rows.Count 
     If (.Rows(rw).Columns("A:A").Value <> "") Then 
      .Rows(rw).Columns("A:A").Copy .Range("B" & rw) 
     End If 
    Next rw 
    .Columns("A:A").Delete 
End With 

답변

0
With ActiveWorkbook.Sheets("Sheet1").UsedRange 
    For Each Row In .Rows 
     If Row.Cells(1, 1) <> "" Then 
      Row.Cells(1, 2) = Row.Cells(1, 1) 
     End If 
    Next 

    .Columns("A:A").Delete 
End With 
0

당신은 열 변화에서 어떤 세포가 여기에 우리가이에 열 J에만

의 셀을 통해 어떤 변화를 따라 잡고있다, 방법 Worksheet_Change 사용할 때 방법을 발사하려면 예를 들어 빈 셀을 포함하지 않고 E 열에서 G 값을 복사합니다. 이이 명령 워크 시트 ("Sheet1의")를 사용하는 이전 값을 경우 우리는 먼저 열 G를 취소 범위.. ("G : G") ClearContents

Private Sub Worksheet_Change(ByVal Target As Range) 
idx = ActiveCell.Row 
idxStr = CStr(idx) 
labelIdx = "J" + idxStr 
Dim ii As Long 
Dim columnNumber As Long 
ii = 1 
columnNumber = 10 
If ActiveCell.Column = columnNumber And ActiveCell.Value <> "" Then 
    Worksheets("Sheet1").Range("F1") = Range(labelIdx).Value 
    Worksheets("Sheet1").Range("G:G").ClearContents 

    For Each cell In Worksheets("Sheet1").Range("E:E") 
     If cell.Value <> "" And cell.Value <> "COLUMN LABEL" Then 
      Worksheets("Sheet1").Range("G" + CStr(ii)).Value = cell.Value 
      ii = ii + 1 
     End If 

    Next cell 

End If 

End Sub 
관련 문제