2016-06-29 3 views
0

행 G, H 및 I에서 15 행 아래로 데이터를 가져 오려고합니다 (데이터가없는 경우 중지). "주문 시트"는 열 8에서 열 M, Q 및 R의 "데이터"라는 시트에 붙여 넣습니다.데이터가 재전송되지 않고 입력되지 않을 때 시트에서 시트로 데이터를 가져 오는 매크로 루프

나는이 데이터가 매일 바뀌기 때문에 매크로 기록을 시도했지만 녹음 된 매크로는 그대로 유지되고 매크로에 IF 공식을 배치하는 방법을 알지 못합니다. 원본 셀의 데이터. 언젠가 데이터는 주문서에서 15 행에서 50 행, 다음 15 행에서 71 행 (항상 15에서 시작)입니다. 얼마나 많은 행이 있더라도 모든 행을 처리 할 수 ​​있도록 200 행의 매크로를 수행하면 시트 셀에 아무 것도 없을 때 데이터 시트에 0이 놓입니다. 주문 시트 셀에 숫자가 없으면 비워 두는 것이 좋습니다.

"주문서 '항목

R

에 G M 행/ H Q/ I 내지 (주문서 상하 데이터 시트 8 행 아래로 행 (15)에서 시작)"데이터 시트 "에 붙여 예컨대 R10

에 Q9/ I17에 M8/ H16에 G15 아이디어와 같은 기본적인 레코더 매크로를 참조하십시오. 여기

ActiveWindow.SmallScroll Down:=-15 
Range("M8").Select 
ActiveCell.FormulaR1C1 = "='Order Sheet'!R[7]C[-6]" 
Range("M8").Select 
Selection.AutoFill Destination:=Range("M8:M159"), Type:=xlFillDefault 
Range("M8:M159").Select 
ActiveWindow.SmallScroll Down:=-135 
Range("Q8").Select 
ActiveCell.FormulaR1C1 = "='Order Sheet'!R[7]C[-9]" 
Range("Q8").Select 
Selection.AutoFill Destination:=Range("Q8:Q159"), Type:=xlFillDefault 
Range("Q8:Q159").Select 
ActiveWindow.SmallScroll Down:=-132 
Range("R8").Select 
ActiveCell.FormulaR1C1 = "='Order Sheet'!R[7]C[-9]" 
Range("R8").Select 
Selection.AutoFill Destination:=Range("R8:R159"), Type:=xlFillDefault 
Range("R8:R159").Select 
ActiveWindow.SmallScroll Down:=-123 
Range("I3").Select 
+0

참조로 설정하면 스크롤이 필요하지 않으므로 select (예 : range ("R8"). formulaR1C1 ='예를 사용하지 마십시오. 데이터 범위를 정의하려면'range ("R1000000") .end (xlUp) .Row를 봐야합니다. –

+0

값을 한 번 복사하거나 (1 회) 원본 셀을 업데이트 할 때 참조를 배치 하시겠습니까? 업데이트 되었습니까? – arcadeprecinct

+0

안녕하세요. @arcadeprecinct 한 번 복사하여 새 시트에서 해당 데이터를 사용할 수 있기를 바랍니다. 다음 날 새로운 데이터를 얻으면 매크로를 다시 실행하여 데이터 시트를 업데이트 할 계획입니다. – Bradley

답변

1

사전에

덕분에 모든 값을 복사하는 방법입니다 G15 아래 M8에 아래로

Dim sourceSht As Worksheet 'sheet you want to copy from 
Dim targetSht As Worksheet 'sheet you want to copy too 
Dim sourceRng As Range 'what you want to copy 
Dim targetRng As Range 'where you want to copy to 
Dim lastRow As Long 'the last row that holds data 

Set sourceSht = Sheets("Order Sheet") 
Set targetSht = Sheets("Data") 

With sourceSht 
    lastRow = .Cells(.Rows.Count,7).End(xlUp).Row '7 is the column number 
End With 

Set sourceRng = sourceSht.Range("G15:G" & lastRow) 
Set targetRng = targetSht.Range("M8").Resize(sourceRng.Rows.Count, 1) ' Range("M8:M"& lastRow - 7) would also be possible 
targetRng.Value = sourceRng.Value 
당신은 열 인덱스와 행 번호를 개최 변수를 소개 할 수 있습니다

(15와 8처럼). 또한 한 번에 더 많은 데이터를 복사하기 위해 범위에 둘 이상의 열이 포함될 수도 있습니다.

+0

안녕하세요. @arcadeprecinct 위의 정보를 제공해 주셔서 감사 드리며,이 정보가 참조한 정보는 제 이해와 지식에 많은 도움이됩니다. 매크로를 실행하려고했지만 아래 줄에 오류가 있습니다. lastRow = .Cells (.Rows.Count, 7) .End (xlUp) '7은 열 번호입니다. 노란색으로 강조 표시됩니다. – Bradley

+1

@Bradley'lastRow'를 계산할 때'.Row'를 잊어 버렸습니다. 지금 작동해야합니다. '.Row'가 없으면 셀 자체가 아니라 행 인덱스 – arcadeprecinct

+0

@arcadeprecinct가 훌륭하게 작동합니다. 같은 방식으로 열 Q와 R을 채우기 위해 마지막 두 줄을 복사하고 편집하여 멋지게 작동합니다. 도움을 감사하십시오! – Bradley