调整ActiveCell.FormulaR1C1

嗨,我有一个问题,我有代码,我用macroslogging器:

ActiveCell.FormulaR1C1 = "=New_Order!RC[-42]+New_Order!RC[-41]+New_Order!RC[-40]" 

我怎样才能调整这个代码,所以它会像这样:

 'ActiveCell.Formula = Sheets("New_Order").Range(n & LastRow) + Sheets("New_Order").Range(O & LastRow) + Sheets("New_Order").Range(p & LastRow) 

我有一个名为New_Order在列N,O,P不同的表中的值我想要总结这些值,并自动填充工作表注册中的整个列。 完整的代码如下所示:

  Sub Registrereren() Application.Calculation = xlCalculationManual Application.EnableEvents = False Application.ScreenUpdating = False On Error Resume Next Dim oWkSht As Worksheet Dim LastColumn As Long Dim c As Date Dim myCell As Range Dim LastRow As Long Sheets("Registration").Activate Set oWkSht = ThisWorkbook.Sheets("Registration") LastColumn = oWkSht.Range("A" & Columns.Count).End(xlToRight).Column LastRow = oWkSht.Range("C" & Rows.Count).End(xlUp).Row c = Date Set myCell = oWkSht.Range("1:1").Find(What:=c, LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False, SearchOrder:=xlByColumns) If Not myCell Is Nothing Then myCell.Offset(1, 0).Select ActiveCell.FormulaR1C1 = "=New_Order!RC[-42]+New_Order!RC[-41]+New_Order!RC[-40]" 'ActiveCell.Formula = Sheets("New_Order").Range(n & LastRow) + Sheets("New_Order").Range(O & LastRow) + Sheets("New_Order").Range(p & LastRow) myCell.Offset(1, 0).Select Range(myCell.Offset(1), Cells(LastRow, myCell.Column)).Select Selection.FillDown End If Sheets("Main").Activate Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True Application.ScreenUpdating = True End Sub 

我做了一些假设,并作出了一些更正。 我假设您在registry的列“A”中具有与New_Order表中的行数相匹配的条目。

 Option Explicit Sub Registrereren() Application.Calculation = xlCalculationManual Application.EnableEvents = False Application.ScreenUpdating = False On Error Resume Next Dim oWkSht As Worksheet Dim LastColumn As Long Dim c As Date Dim myCell As Range Dim LastRow As Long Sheets("Registration").Activate Set oWkSht = ThisWorkbook.Sheets("Registration") LastColumn = oWkSht.Cells(1, oWkSht.Columns.Count).End(xlToLeft).Column LastRow = oWkSht.Cells(oWkSht.Rows.Count, "A").End(xlUp).row c = Date Set myCell = oWkSht.Cells(1, 1).Resize(, LastColumn).Find(What:=c, LookIn:=xlFormulas, _ lookat:=xlWhole, MatchCase:=False, SearchOrder:=xlByColumns) If Not myCell Is Nothing Then myCell.Offset(1, 0).Formula = "=New_Order!N1+New_Order!O1+New_Order!P1" Range(myCell.Offset(1), Cells(LastRow, myCell.Column)).Select Selection.FillDown End If Sheets("Main").Activate Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True Application.ScreenUpdating = True End Sub 

假设你想input的公式是:

= 'New_Order'!NR + 'New_Order'!OR + 'New_Order'!PR

其中R是持有该公式的单元格的同一行,则使用此公式FormulaR1C1

= 'New_Order'!RC14 + 'New_Order'!RC15 + 'New_Order'!RC16

replace这一行:

ActiveCell.FormulaR1C1 = "=New_Order!RC[-42]+New_Order!RC[-41]+New_Order!RC[-40]"

用这一行:

ActiveCell.FormulaR1C1 = "=New_Order'!RC14 + 'New_Order'!RC15 + 'New_Order'!RC16"