对新行使用预先存在的函数

对新行使用预先存在的函数

我有一个包含 X 列和 N 行的 Excel 文档。

行的最后一列执行SUM前 X-1 列的操作。我遇到的问题是,此 Excel 文档的用户会逐步向文档中添加行,因此,新行的最后一列中尚不存在该函数。

我需要一种方法来让这个函数动态地存在于新行中(用户不懂 Excel 并且没有能力将函数拖到一行下来)。

答案1

不幸的是,无法完成基本操作的用户非常普遍。您可能会采取某种措施来完全重写公式(诚然,这有点过头了),但看看您是否可以在 Worksheet_SelectionChange 事件中采用这个想法。或者启用宏也可能会使他们陷入困境。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 LastRow = ActiveSheet.UsedRange.Rows.Count
 Range("D2:D" & LastRow).Formula = "=SUM(INDIRECT(""A""&ROW()&"":C""&ROW()))"
End Sub

用于小计

Range("D2:D" & LastRow).Formula = "=SUBTOTAL(9,(INDIRECT(""A""&ROW()&"":C""&ROW())))"

答案2

您可能可以使用 VBA 使其真正动态化,但我认为仅仅向单元格添加公式就有点过头了。您可以做的是让单元格看起来是空的,直到将数据添加到相关单元格,然后将该单元格向下拖动数百或数千行。

例如,=IF(LEN(A1)=0,"",A1+B1)如果 A1 不包含数据,则显示一个空单元格,但如果包含数据,则执行 A1+B1 函数。如果您将其拖到最后一行下方,则该列将显示为空白,直到将数据添加到 A 列的下一个单元格。

您还可以使用其他几个公式来检查正在使用的单元格,例如=ISBLANK(A1)OR =ISTEXT(A1),具体取决于您想要如何检查数据。我认为 LEN 函数最容易使用。您还可以执行类似这样的操作,=IF(LEN(A1)+LEN(B1)=0,"",A1+B1)如果其中一个单元格有数据,则运行公式,或者=IF(OR(LEN(A1)=0,LEN(B1)=0),"",A1+B1)只有两个单元格都有数据,才运行公式。

对于大多数公式,将其扩展到几千行只会使文件大小增加几 KB。如果您有非常长的公式,或者您要拖拽很多公式,那么文件大小会显著增加。

答案3

我必须查看您的工作表,但听起来您可以使用数据透视表。用户只需输入数据,报告就会动态生成和汇总。查看 YouTube 以获取有关如何使用数据透视表的一些说明和演示。

相关内容