需要一个循环在Excel表格列中input公式/数据

我需要一个嵌套的循环来添加公式到我的表(“Table1”)4个特定的列。 我想我的For循环模仿前面的For循环关于这些相同的4个额外的列(“colNames”)的命名。

这段代码的底部工作得很好,但我想知道如何将其工作到一个循环。

Sub attStatPivInsertTableColumns_2() Dim lst As ListObject Dim currentSht As Worksheet Dim colNames As Variant, formNames As Variant '<~~ NOTE: As Varient, this is your go to when working with arrays Dim oLC As ListColumn, oLData As Variant Dim i As Integer, d As Integer Set currentSht = ActiveWorkbook.Sheets("Sheet1") Set lst = ActiveSheet.ListObjects("Table1") colNames = Array("AHT", "Target AHT", "Transfers", "Target Transfers") For i = 0 To UBound(colNames) Set oLC = lst.ListColumns.Add oLC.Name = colNames(i) Next i ***Below is the code that needs to be looped*** 'lst.ListColumns("Target AHT").DataBodyRange.FormulaR1C1 = "=350" 'lst.ListColumns("Target Transfers").DataBodyRange.FormulaR1C1 = "=0.15" 'lst.ListColumns("AHT").DataBodyRange.FormulaR1C1 = "=([@[Inbound Talk Time (Seconds)]]+[@[Inbound Hold Time (Seconds)]]+[@[Inbound Wrap Time (Seconds)]])/[@[Calls Handled]]" 'lst.ListColumns("Transfers").DataBodyRange.FormulaR1C1 = "=[@[Call Transfers and/or Conferences]]/[@[Calls Handled]]" End Sub 

这是我到目前为止,但我遇到了错误,为什么可能是显而易见的原因:

 formNames = Array("=([@[Inbound Talk Time (Seconds)]]+[@[Inbound Hold Time (Seconds)]]+[@[Inbound Wrap Time (Seconds)]])/[@[Calls Handled]]", "=350", "=[@[Call Transfers and/or Conferences]]/[@[Calls Handled]]", "=0.15") For d = 0 To UBound(formNames) For i = 0 To UBound(colNames) Set oLData = lst.ListColumns(i).DataBodyRange.FormulaR1C1 = "d" Next i Next d 

构造一个更多的变体数组,其中包含要用来填充新表格列的公式/值。

 Sub insertTableColumn() Dim lst As ListObject Dim currentSht As Worksheet Dim h As Long, hdrs As Variant, r1c1s As Variant hdrs = Array("AHT", "Target AHT", "Transfers", "Target Transfers") r1c1s = Array("=([@[Inbound Talk Time (Seconds)]]+[@[Inbound Hold Time (Seconds)]]+[@[Inbound Wrap Time (Seconds)]])/[@[Calls Handled]]", _ 350, _ "=[@[Call Transfers and/or Conferences]]/[@[Calls Handled]]", _ 0.15) Set currentSht = ActiveWorkbook.Sheets("Sheet1") Set lst = ActiveSheet.ListObjects("Table1") With lst 'ActiveSheet.ListObjects("Table1") For h = LBound(hdrs) To UBound(hdrs) .ListColumns.Add .ListColumns(.ListColumns.Count).Name = hdrs(h) .ListColumns(.ListColumns.Count).DataBodyRange.FormulaR1C1 = r1c1s(h) Next h End With End Sub 

我也用h = LBound(hdrs) To UBound(hdrs) Step 2hdrs(h+1)作为公式/值的单个数组。