上下文:
根据一些输入列的大小,我想创建一列带有可调整为那些输入列的大小的公式的列。我知道如何使用VBA做到这一点,但我真的很想知道是否还有另一种方法可以做到这一点。
详细信息:
这是一个基本设置,其中A列和B列是值,C列由一个简单公式组成,其中范围C2特别具有公式=A2+B2
。现在,我可以通过使用Formulas > Name Manager
并插入公式rng_A=OFFSET(Sheet1!$A$2;;;COUNTA(Sheet1!$A$2:$A$40);)
和rng_B=OFFSET(Sheet1!$B$2;;;COUNTA(Sheet1!$B$2:$B$40);)
来使A和B列成为动态范围,如下所示:
这对于图表很方便,您可以在其中使用命名范围来动态显示数据,如下所示:
现在,如果我在A列中插入两个新数字,则图表将自动将它们添加到行中:
问题:
如果我想在图表中添加C列,则可以通过添加新的命名范围来轻松完成,但是我必须在C8和C9范围内插入两个新公式。是否可以通过任何方式使C列成为由公式组成的动态范围? 不在此处用=IF(A8="";"";A8+B8)
之类的公式填充整列:
还是使用VBA代码段?
谢谢您的任何建议!
答案 0 :(得分:2)
答案 1 :(得分:1)
考虑只使用这样的事件过程。
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列具有值,则可以对公式进行调整以写入零,或者将单元格空白。
答案 2 :(得分:1)
在工作表代码中,使用change事件:
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