Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel:在动态范围内插入公式_Excel - Fatal编程技术网

Excel:在动态范围内插入公式

Excel:在动态范围内插入公式,excel,Excel,背景: 根据几个输入列的大小,我希望有一个包含公式的列,可以根据这些输入列的大小进行调整。我知道如何使用VBA实现这一点,但我真的很想知道是否有其他方法可以实现这一点 详情如下: 这是一个基本设置,其中a列和B列为值,C列由一个简单公式组成,其中C2的具体范围为公式=A2+B2。现在,我可以通过使用公式>名称管理器并插入公式rng_A=OFFSETSheet1来创建A列和B列的动态范围$A$2;;;COUNTASheet1$A$2:$40澳元;rng_B=抵销表1$B$2;;;COUNTAShe

背景:

根据几个输入列的大小,我希望有一个包含公式的列,可以根据这些输入列的大小进行调整。我知道如何使用VBA实现这一点,但我真的很想知道是否有其他方法可以实现这一点

详情如下:

这是一个基本设置,其中a列和B列为值,C列由一个简单公式组成,其中C2的具体范围为公式=A2+B2。现在,我可以通过使用公式>名称管理器并插入公式rng_A=OFFSETSheet1来创建A列和B列的动态范围$A$2;;;COUNTASheet1$A$2:$40澳元;rng_B=抵销表1$B$2;;;COUNTASheet1$B$2:$B$40;像这样:

这对于可以使用命名范围动态显示以下数据的图表非常方便:

现在,如果我在A列中插入两个新数字,图表会自动将它们添加到行中:

问题是:

如果我想在图表中添加C列,也可以通过添加一个新的命名范围轻松完成,但我必须在范围C8和C9中插入两个新公式。是否有可能使C列成为由公式组成的动态范围?不使用公式填充整个列,例如=IFA8=;;这里是A8+B8:

还是使用VBA代码段

谢谢你的任何建议

使用a选择您的范围,然后插入>表格,并将C设为计算列

这样,当您向表中添加更多行时,公式将应用于该行中的C列。

使用选择范围,然后插入>表,并使C成为计算列


这样,当您向表中添加更多行时,公式将应用于该行的C列。

请考虑仅使用类似于此的事件过程

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Rng As Range

    If Target.Cells.CountLarge = 1 Then
        Set Rng = Range(Cells(2, "A"), Cells(Rows.Count, "A").End(xlUp).Offset(0, 1))
        If Not Application.Intersect(Target, Rng) Is Nothing Then
            Application.EnableEvents = False
            With Target
                Set Rng = Range(Cells(.Row, "A"), Cells(.Row, "C"))
            End With
            With Rng
                .Cells(3).Value = .Cells(1).Value + .Cells(2).Value
            End With
            Application.EnableEvents = True
        End If
    End If
End Sub

无论何时对a或B进行更改,总计都会在C列中进行。如果只有B列有值,则可以调整公式以写入零,或清空单元格。

考虑只使用类似于此的事件过程

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Rng As Range

    If Target.Cells.CountLarge = 1 Then
        Set Rng = Range(Cells(2, "A"), Cells(Rows.Count, "A").End(xlUp).Offset(0, 1))
        If Not Application.Intersect(Target, Rng) Is Nothing Then
            Application.EnableEvents = False
            With Target
                Set Rng = Range(Cells(.Row, "A"), Cells(.Row, "C"))
            End With
            With Rng
                .Cells(3).Value = .Cells(1).Value + .Cells(2).Value
            End With
            Application.EnableEvents = True
        End If
    End If
End Sub

无论何时对a或B进行更改,都会在C列中进行总计。如果只有B列有值,则可以调整公式以写入零,或清空单元格。

在工作表代码中,使用更改事件:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Or Target.Column = 2 Then
Range("C" & Target.Row).Formula = "=A" & Target.Row & "+B" & Target.Row
End If
End Sub

在图纸代码中,使用更改事件:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Or Target.Column = 2 Then
Range("C" & Target.Row).Formula = "=A" & Target.Row & "+B" & Target.Row
End If
End Sub