VBA公式创build使用variables的名称而不是值

我试图创build一个代码,这将允许我从一个名为“原始数据”的工作表拉平6行的平均值,并将其转储到另一个工作表中的单元格中,然后从“原始数据' 等等。

EG平均值(“RawData”!A1:A6)

然后

平均(“原始数据”!A7:A12)在新表A2中

等等

到目前为止,我已经设法使代码循环以我想要的方式,但我无法在新的工作表A1和A2中写入实际的公式。

到目前为止我已经尝试过:

Dim address13 As String address13 = "'Raw Data'" & "!" & Cells(start_row, RPM1300).Address & ":" & _ Cells(end_row, RPM1300).Address ActiveCell.Offset(0, -4).Select '1300 ActiveCell.Formula = "=Average(""" & address13 & """)" 

然而,这返回正确的公式,但与“”周围 – 使其无用。

我也试过了:

  Sheets("Raw Data").Select Dim address9 As Range Set address9 = Range(Cells(start_row, RPM900).Address(), Cells(end_row, RPM900).Address()) Sheets("New Sheet").Select rCell.Activate ActiveCell.Offset(0, -5).Select ActiveCell.Formula = "=Average(address9)" 

但是,这只是返回公式中variablesaddress9的名称,而不是实际的范围。

请注意,RPM1300,RPM900,start_row,end_row和rCell都是variables,以便代码循环并粘贴到正确的位置。

任何帮助都会大大降低

尝试replace你的线路:

 ActiveCell.Formula = "=Average(""" & address13 & """)" 

附:

 ActiveCell.Formula = "=AVERAGE(" & address13 & ")" 

原因 :variablesaddress13已经被定义为一个String ,这就是为什么你不需要额外的"在括号内。

代码(使用你的第一个方法:)

 Dim address13 As String address13 = "'Raw Data'!" & Cells(start_row, RPM1300).Address & ":" & _ Cells(end_row, RPM1300).Address ActiveCell.Offset(0, -4).Select ActiveCell.Formula = "=AVERAGE(" & address13 & ")" 

注意 :尽量避免使用SelectActiveCell ,而应使用引用的RangesWorksheets

例如,假设您从单元格A1开始,并希望此公式位于单元格A5中,则可以使用:

 Range("A1").Offset(4, 0).Formula = "=AVERAGE(" & address13 & ")" 

这可能是您的Excel版本中的一个错误。 代替

  ActiveCell.Formula = "=Average(""" & address13 & """)" 

尝试使用

  ActiveCell.Formula = '=Average("' & address13 & '")' 

(用双引号括起来的单引号,然后只用1个双引号)。

代替

  ActiveCell.Formula = "=Average(""" & address13 & """)" 

尝试

 ActiveCell.Formula = "=Average("& chr(34) & address13 & chr(34) & ")" 

至less在这里(34)返回你想要的报价。 这可能会调整,如果需要的话。 只要改变()中的数字

尝试使用这个:

 Sub CellValue() Dim adr As String Dim sht As String sht = "'Raw Data'" adr = "A1:A3" ActiveCell.Formula = "=AVERAGE(" & sht & "!" & adr & ")" End Sub 

希望能帮助到你 :)

这个公式会给你相同的结果,你可以通过拖动单元格句柄来自动填充它。

= AVERAGE(OFFSET('原始数据'!$ A $ 2,ROW(A1)* 6-7,0,6,1))

在这里输入图像说明 填写两个公式

 Sub FillFormulas() Const BASE_FORMULA = "=AVERAGE('Raw Data'!@Address)" Dim lastRow As Long, x As Long Dim Formulas With Worksheets("Raw Data") lastRow = .Range("A" & .Rows.Count).End(xlUp).Row / 6 End With ReDim Formulas(1 To lastRow, 1 To 1) With Worksheets("New Sheet") For x = 1 To lastRow Formulas(x, 1) = Replace(BASE_FORMULA, "@Address", .Cells((x * 6) - 5, 1).Resize(6).Address) Next .Range("A1").Resize(lastRow).Formula = Formulas .Range("C1").Resize(lastRow).Formula = "=AVERAGE(OFFSET('Raw Data'!$A$2,ROW(A1)*6-7,0,6,1))" End With End Sub