Мне нужна вложенная петля для добавления формул к 4 определенным столбцам в моей таблице («Таблица 1»). Я бы хотел, чтобы мой цикл For имитировал предыдущий цикл For относительно именования этих четырех дополнительных столбцов («colNames»).Нужна петля для ввода формул/данных в столбцах таблицы excel
Нижняя часть этого кода работает просто отлично, но я хотел бы знать, как работать в цикле.
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
Итак, поправьте меня, если я ошибаюсь. Я до сих пор не пробовал это ... это отрицает необходимость моего первого цикла i, закодированного в моем вопросе? Из того, что я читаю, похоже, что с .ListColumns.Add включал оператор WITH. –
В вашем оригинале (как указано выше) была бы другая строка непосредственно после 'oLC.Name = colNames (i)' с чем-то вроде 'oLC.DataBodyRange.FormulaR1C1 = r1c1s (i)'. – Jeeped
Хорошо, я с вами, спасибо. Вы намного эффективнее. Я до сих пор не видел функции LBound и UBound. Работал отлично. –