Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Set ws = Worksheets("Sheet1") ' set the target worksheet name here
If Not Application.Intersect(ws.Range("B1"), Range(Target.Address)) Is Nothing Then ' set the cell to be watched
ws.Range("B2").FormulaR1C1 = "=R[-1]C+180" ' set the cell where you want the formula - The formula will need changing if you want to refrence another cell.
End If
End Sub
3条答案
按热度按时间nbysray51#
您可以复制并插入现有的栏吗?只要您的参照是静态的(例如$A$1,而不是A1),就会复制/贴上公式。如果您需要将公式下拉到列上,您可以使用$A1,但是如果栏参照是动态的,您最后会寻找错误的储存格或产生#REF错误。
通过将区域格式化为表格,可以更容易地使用插入的行来实现这一点,但插入应如上所述。
ncecgwcz2#
我不认为Excel自动填充在创建新列时会自动工作。您最好在编写公式时使用对B1的绝对或半绝对引用($B1、B$1或$B$1),创建新列,然后使用“黑色加号”通过自动填充扩展公式。另一种方法是将整个B列复制粘贴到其自身的左侧:如果你公式写得很好,它也会说话。
icomxhvb3#
正如在aclayden的回答中所评论的,您可以使用VBA来实现这一点
使用工作表更改事件,我们可以监视单元格的任何更改,如果有更改,则添加公式。
右键单击“工作表”选项卡,然后单击“查看代码”。
在“VBA项目”框中,您应该看到要监视的工作表,如果它不是正确的工作表,请双击所需工作表的名称。
现在应该有一个区域,可以在其中粘贴以下代码:
确保更改代码中的工作表名称和单元格引用以匹配您的重新配置,如果更改单元格引用,则需要更改公式。
您现在可以返回工作表并添加新列,此时应自动添加公式。