Excel:在动态范围内插入公式
背景: 根据几个输入列的大小,我希望有一个包含公式的列,可以根据这些输入列的大小进行调整。我知道如何使用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成为计算列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
这样,当您向表中添加更多行时,公式将应用于该行的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