2014-09-29 142 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""),"""")" 
相關問題