2014-09-29 2 views
0

한 시트에서 다른 시트로 데이터를 복사하는 데 다음 코드를 사용합니다. 새 데이터를 복사 할 때마다 새 행에 삽입됩니다. 현재/현재 행의 셀 D 및 E에 수식을 삽입하고 동적 셀 참조를 사용할 수 있어야합니다. 5 행이면 A5가되고 6 행이면 A6이됩니다.vba 공식을 삽입하고 동적 셀 참조 (현재 행의 셀 참조)를 가져 오겠습니까?

나는 ActiveCell.Formula와 DestRow를 사용해 보았지만 아무것도 작동하지 않습니다.

누군가이 일을 어떻게 할 수 있는지 보여 주실 수 있습니까? 미리 감사드립니다.

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    Application.DisplayAlerts = False 
    If Target.Column = Range("Z1").Column And Range("Z" & ActiveCell.Row).Value = "SUBMIT" Then 
     Dim ws1 As Worksheet, ws2 As Worksheet 
     Dim DestRow As Long 
     Set ws1 = Sheets("Home") 
     Set ws2 = Sheets("Statistics") 
     DestRow = ws2.Cells(Rows.Count, "A").End(xlUp).Row + 1 
     ws1.Range("B10").Copy 
     ws2.Range("A" & DestRow).PasteSpecial xlPasteValuesAndNumberFormats 
     ws1.Range("B15").Copy 
     ws2.Range("B" & DestRow).PasteSpecial xlPasteValuesAndNumberFormats 
     ws1.Range("B20").Copy 
     ws2.Range("C" & DestRow).PasteSpecial xlPasteValuesAndNumberFormats 
     ws2.Range("D" & DestRow).Formula = "=IF(ISTEXT(A5),IF(E5 <>""Yes"",CONCATENATE(""NS"")&RANDBETWEEN(0,9)&RANDBETWEEN(0,9)&RANDBETWEEN(0,9)&RANDBETWEEN(0,9)&RANDBETWEEN(0,9)&RANDBETWEEN(0,9),D5),"""")" 
     ws2.Range("E" & DestRow).Formula = "=IF(ISTEXT(A5),IF(ISTEXT(D5),""Yes"",""N/A""),"""")" 
     ws1.Range("Y7").Copy 
     ws2.Range("F" & DestRow).PasteSpecial xlPasteValuesAndNumberFormats 
     ws1.Range("H10").Copy 
     ws2.Range("H" & DestRow).PasteSpecial xlPasteValuesAndNumberFormats 
    End If 
    End Sub 

답변

0

수식에 DestRow을 포함시켜야합니다. 나는. 수식을 정의하는 두 줄을 다음과 같이 변경해야합니다.

ws2.Range("D" & DestRow).Formula = "=IF(ISTEXT(A" & DestRow & "),IF(E" & DestRow & " <>""Yes"",CONCATENATE(""NS"")&RANDBETWEEN(0,9)&RANDBETWEEN(0,9)&RANDBETWEEN(0,9)&RANDBETWEEN(0,9)&RANDBETWEEN(0,9)&RANDBETWEEN(0,9),D" & DestRow & "),"""")" 
ws2.Range("E" & DestRow).Formula = "=IF(ISTEXT(A" & DestRow & "),IF(ISTEXT(D" & DestRow & "),""Yes"",""N/A""),"""")"