每个单元格中都有一列包含以下公式的列,用于计算每个单元格左侧两个单元格之间的公里数差:
=IF(AND(INDIRECT(ADDRESS(ROW(),COLUMN()-2))<>"", INDIRECT(ADDRESS(ROW(), COLUMN()-1))<>""), INDIRECT(ADDRESS(ROW(),COLUMN()-1))-INDIRECT(ADDRESS(ROW(),COLUMN()-2)), "")
我的问题是,每次我在现有数据之间插入新行时,该行的所有单元格都是空的,我需要手动将此代码放入空单元格中。
我是否可以将列中的每个单元格(不包括标题)设置为特定公式即使我插入新行?
我尝试将列设置为表格,并且每当我插入新行时它都能成功自动完成单元格,但是,我还有其他列也想自动完成,如果我将多个列设置为表格,Excel 不会让我插入新行。
答案1
这是一个小演示,您可以根据自己的实际架构进行调整。在演示中:
- 感兴趣的列是列乙
- 如果插入多行,则不会发生任何事情
- 如果在数据区域下方插入一行,则不会发生任何事情
- 如果删除了一行,则什么也不会发生
- 如果在数据中间插入一行,则列中的单元格乙将用上面的公式或下面的公式填充
- 如果新单元格上方或下方没有公式,则什么也不会发生
在工作表代码区域插入以下子代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, r1 As Range, r2 As Range
Set r = Target
If r.Rows.Count > 1 Then Exit Sub
If r.Columns.Count <> Cells.Columns.Count Then Exit Sub
If r.Row = 1 Then Exit Sub
Set r1 = Intersect(r, Columns(2))
If r1.Value <> "" Then Exit Sub
If r1.Offset(-1, 0).HasFormula Then
Application.EnableEvents = False
r1.Offset(-1, 0).Copy r1
Application.EnableEvents = True
Exit Sub
End If
If r1.Offset(1, 0).HasFormula Then
Application.EnableEvents = False
r1.Offset(1, 0).Copy r1
Application.EnableEvents = True
Exit Sub
End If
End Sub
答案2
我本来想直接发布这个视频,但显然我必须输入至少 30 个字符。
那“这是一个很简单的方法。”该死,那只有 29 个。
对于任何感兴趣的人,“插入图片”图标不接受 .mov,但有一个非常整洁的网站它将视频文件转换为动画 GIF。