2012-05-04 4 views
0

데이터가 열 H2에 있습니다. . 같은 스프레드 시트의 다른 곳에 복사하고 싶습니다. 하지만 어디에서 복사합니까? 한 번에 하나의 열을 변경합니다. 아래의 각 열은 매크로로 채워집니다.한 열의 데이터를 복사하여 첫 번째 빈 열에 붙여 넣으십시오.

내 기존 매크로가이 데이터 열을 B31과 같은 빈 열로 검색하고 붙여 넣습니다. 10 개의 새로운 데이터가있을 때 다음에 매크로를 실행할 때 C31의 C 열 (다음 빈 행)에 붙여 넣기를 원합니다. 다음 번에 D31 ....... 등. 내 매크로는 반복적으로 H2 : H11의 데이터를 가져 와서 B31에 붙여 넣습니다. 그러나 매크로를 다시 실행할 때마다 해당 열을 덮어 씁니다. 이전에 매크로를 실행하여 데이터가 이미있는 B 열을 "보고"있지 않습니다. 코드의 문제점은 무엇입니까?

Range("H2:H11").Select Selection.Copy 
Range("A31").Select 
Range("A31:M31").End(xlToLeft).Offset(0, 1).Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveCell.Rows("1:10").EntireRow.Select 
Application.CutCopyMode = False 
+0

인가 다음과 같습니다 첫 번째 패스 후에 B31에 데이터가 있습니까? – Sam

+0

나는 원하는 경우 게시 할 수있는 대체 솔루션이 있습니다. – Sam

+0

예, B31은 이전 데이터를 덮어 쓰면서 새 데이터를 계속 입력합니다. FYI, A31에는 "헤더"정보가 들어 있으므로 a31부터 시작하여 빈 칸이 아니라고보고, 하나의 셀 및 붙여 넣기 위로 이동합니다. 공백이 아닌 경우에도 마찬가지입니다. 대체 솔루션도 게시하십시오! – CJG

답변

1
Range("A31:M31").End(xlToLeft).Offset(0, 1).Select  

해야

Range("M31").End(xlToLeft).Offset(0, 1).Select 

대체 솔루션은 (내가, 내 MS PC에 미안하지 않아요으로 내가 그것을 테스트하지했습니다)

dim lRow as Long 'Output Row 
lRow = 31   'Start at row 31 

    For i = 2 to 13 'Column B to Column M 

     'Count if there is any values in the columns 
     '(if there is a header then change the 0 to 1) 

     If Application.WorksheetFunction.CountA(ActiveSheet.Columns(i)) = 0 Then 

      For Each c in Range("H2:H11") 'Cycle through output values 

      ActiveSheet.Cells(lRow, i).value = c.Value 'Assign values 

      lRow = lRow + 1 'Increment row number 

      next c 

     exit for 'exit column loop 

     end if 

    next i 
+0

아마도 내 방법은 일을하는 가장 좋은 방법은 아니지만 최대한 매크로를 복사하여 붙여 넣으려고합니다. – Sam

+0

짧고 한 줄의 해결책으로 해결되었습니다 ... 크게 감사드립니다. – CJG

관련 문제