我需要一个工作表函数或公式或 VBA 用户定义函数来获取数字列表的总和,结果将位于列表顶部,而不是像 Excel 中的自动求和功能那样位于列表底部。此外,两个单独的列中会有许多数字列表,因此我不想为每个数字列表编写公式。此外,在图像中,黄色单元格在现实生活中将是空白的。
答案1
使用=SUM(START:END)
、复制/粘贴和/或宏
为了节省在第一个“结果单元格”中为每个列表键入公式的时间,您可以使用=SUM(B4:B10)
。例如:
然后将此公式复制并粘贴到其他“结果单元格”中,公式将更新引用。当然,这假设您要求和的列表长度相同。
如果你反复运行此操作(例如报告)录制宏将有助于实现该过程的自动化。
录制宏时,宏录制器会记录 Visual Basic for Applications (VBA) 代码中的所有步骤。这些步骤包括键入文本或数字、单击功能区或菜单上的单元格或命令、设置单元格、行或列的格式,甚至从外部源(例如 Microsoft Access)导入数据。
如果您想编写自己的宏,那么值得看一下.Select
和ActiveCell.Formula[A/R1C1]
,如下所示:
Worksheets("yourworksheet").Range("ResultCell").Formula = "=SUM(Range1:Range2)"
ResultCell
根据需要更换和插入。
进一步阅读
那里有很多资源;你可能需要考虑公式资源(摘自 wikibooks)。摘自该页面:
电子表格中使用的公式会自动按照用户认为合适的方式处理数据。公式从电子表格中的某些区域获取数据,对其进行处理,然后根据公式的编写位置将输出放入电子表格的新区域中。公式可以简单到“=SUM(A10,A11)”(获取 A 行第 10 和第 11 个单元格中的信息并输出总和),也可以复杂到用户希望的程度。用于创建公式的函数(例如 SUM)由电子表格软件预先指定。
值得做一些背景阅读,因为它可以使解决未来的问题变得简单得多。
微软有一个关于添加值的不同方式的页面也是;但SUM
在这种情况下你应该没问题。
答案2
创建此宏
Sub MacroSumDownward()
' Keyboard Shortcut: Ctrl+d
'
Selection.FormulaR1C1 = "=SUM(R[1]C:R[99999]C)"
End Sub
您可以录制任何宏并为其分配快捷方式,然后复制上述内容:
Selection.FormulaR1C1 = "=SUM(R[1]C:R[99999]C)"
R[99999] 选择列中的任意单元格并将其包含在总和中,您可以根据数据中的最大行数进行更改,
并删除任何其他指令,只需保留
Sub Macro()
Selection.FormulaR1C1 = "=SUM(R[1]C:R[99999]C)"
End sub
当你想要运行它时,只需选择每列上方的单元格(同时选择),然后使用你分配给宏的快捷方式(我使用Ctrl+d
它将执行总和,
最好使用不同的列,除非你有固定的行数(或者只是保留比你在宏中写的最大行数更多的空间)