我要插入一个新的表格行按钮。它需要将行添加到两个单独的表中。第二行中的公式需要引用另一张表中插入的行。
所以我尝试了以下操作来插入第二个表行:
Sub Macro2()
'
' Macro2 Macro
'
'
Range("Table2").Select
Selection.End(xlDown).Select
Selection.ListObject.ListRows.Add AlwaysInsert:=True
ActiveCell.Offset(1, 0).Select
ActiveCell.FormulaR1C1 = _
"=IF(AND('Sheet2'!R[-452]C[10]>=R1C4,'Sheet2'!R[-452]C[10]<=R1C5),'Sheet2'!R[-452]C[-1],"""")"
Range("C481").Select
End Sub
因此,我的公式旨在向table2第480行添加一行,该公式具有引用在sheet2 table1中添加的新行的公式,该行将是第13行(当前)。
有没有办法做到这一点? 目前,我手动将以下公式复制并粘贴到单元格中:
=IF(AND('Sheet2'!$M13>=$D$1,'Sheet2'!$M13<=$E$1),'Sheet2'!B13,"")
答案 0 :(得分:0)
我不确定表在表中的位置,并且由于在公式中您使用的是绝对地址,因此我能够猜出您要在公式中引用哪些列。例如,此代码将在Table1和Table2中创建新行之后,在Table2的第一列和最后一行中创建一个公式,引用Table1的第一列和最后一行。您可以根据需要调整公式。这里只有一个警告,那就是第一次运行代码时Excel将复制公式,因为空列中没有公式,如果删除其他行中的公式,则在运行时它不会再次执行该操作它第二次。
Sub CreateFormula()
Dim indx1 As Integer 'index of the row added to table1
Dim indx2 As Integer 'index of the row added to table2
Dim loRow1 As ListRow 'table row that will be added in table1
Dim loRow2 As ListRow 'table row that will be added in table2
Dim tbl1 As ListObject
Dim tbl22 As ListObject
Dim cell1 As Range
Dim cell2 As Range
'define tables first
Set tbl1 = ActiveSheet.ListObjects("Table1") 'Activesheet can be thisworkbook.worksheets("Sheet2")
Set tbl2 = ActiveSheet.ListObjects("Table2")
'Insert new rows
Set loRow1 = tbl1.ListRows.Add
Set loRow2 = tbl2.ListRows.Add
'get the index of the newly added rows
indx1 = loRow1.Index
indx2 = loRow2.Index
'indert the formula
Set cell1 = tbl1.DataBodyRange(indx1, 1) 'we will reference this in the formula
Set cell2 = tbl2.DataBodyRange(indx2, 1) 'we will put the formula in this cell
cell2.Formula = "=if(" & cell1.Address & ">0," & "1,0)"
End Sub