Excel:为列中的每个单元格设置默认公式

Excel:为列中的每个单元格设置默认公式

每个单元格中都有一列包含以下公式的列,用于计算每个单元格左侧两个单元格之间的公里数差:

=IF(AND(INDIRECT(ADDRESS(ROW(),COLUMN()-2))<>"", INDIRECT(ADDRESS(ROW(), COLUMN()-1))<>""), INDIRECT(ADDRESS(ROW(),COLUMN()-1))-INDIRECT(ADDRESS(ROW(),COLUMN()-2)), "")

插入新行时没有公式的空单元格

我的问题是,每次我在现有数据之间插入新行时,该行的所有单元格都是空的,我需要手动将此代码放入空单元格中。

我是否可以将列中的每个单元格(不包括标题)设置为特定公式即使我插入新行

我尝试将列设置为表格,并且每当我插入新行时它都能成功自动完成单元格,但是,我还有其他列也想自动完成,如果我将多个列设置为表格,Excel 不会让我插入新行。

答案1

这是一个小演示,您可以根据自己的实际架构进行调整。在演示中:

  1. 感兴趣的列是列
  2. 如果插入多行,则不会发生任何事情
  3. 如果在数据区域下方插入一行,则不会发生任何事情
  4. 如果删除了一行,则什么也不会发生
  5. 如果在数据中间插入一行,则列中的单元格将用上面的公式或下面的公式填充
  6. 如果新单元格上方或下方没有公式,则什么也不会发生

在工作表代码区域插入以下子代码:

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。

在此处输入图片描述

相关内容