gpt4 book ai didi

vba - 将列公式保留在表标题中

转载 作者:行者123 更新时间:2023-12-02 22:55:56 24 4
gpt4 key购买 nike

是否可以将我需要应用于列的公式保存或应用于列标题或某种元数据,以便当我向 Excel 表添加新行时,公式将应用于列?

场景:

我正在创建一个模板表,它最初没有行。在单独的工作表(或同一工作表)上,一旦用户选择要在表中生成的行数,我就会使用 VBA 动态地将行添加到表中。

这个想法是我在开始时表中可能没有任何行,或者用户可能手动删除了行。当我以编程方式添加新行时,我也希望将公式应用于单元格。我使用的大多数公式都是以下三种类型中的一种:

结构化表引用、SUM、AVERAGE 等 Excel 函数以及自定义函数名称。

更新:

这是我尝试过的:

1> 尝试将公式应用于标题本身。结果: header 自行更改,并出现 #REF! 错误。我认为这种行为是正确的。所以这是一个不可行的选择。

2> 尝试创建一行并将公式应用于该行。这可行,但问题是,我不想从一个虚拟行开始。

3> 使用 VBA 代码向表中添加行

ActiveWorkbook.Worksheets("Sheet3").ListObjects("Table2").ListRows.Add AlwaysInsert:=True

在 for 循环内。新行保留了视觉样式表,但似乎没有保留公式。只是空白单元格。

最佳答案

公式可以在标题单元格通信网中吗?

enter image description here

然后使用 VBA 添加当前行的公式:

Sub test()
Dim headerCells As Range
Set headerCells = Range("B2:E2")

OnNewRow 3, headerCells
End Sub

Sub OnNewRow(newRow As Integer, headerCells As Range)
Dim headerCell As Range, targetCell As Range, formulaFromComment As String
For Each headerCell In headerCells
formulaFromComment = GetFormulaFromComment(headerCell)
If (formulaFromComment = "") Then _
GoTo NextHeaderCell
Set targetCell = Intersect(headerCells.Worksheet.Rows(newRow), _
headerCell.EntireColumn)
AddFormula newRow, targetCell, formulaFromComment
NextHeaderCell:
Next
End Sub

Sub AddFormula( _
newRow As Integer, _
targetCell As Range, _
formula As String)

formula = Replace(formula, "{ROW}", newRow)
targetCell.formula = formula
End Sub

Function GetFormulaFromComment(headerCells As Range) As String
' TODO
GetFormulaFromComment = "=SUM($C${ROW}:$E${ROW})"
End Function

关于vba - 将列公式保留在表标题中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25743857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com