我想得到一个结果,比如说 1 月底(即 31 日)单元格 B1 中 A1 - A10 的总和。这很简单,IF = 31/1/17 等。但我需要这个数字保持在该结果处,并且不会随着 A1 - A10 的值发生变化或今天超出该日期而改变。
这可能吗,因为我需要在 12 个月的 10 列上进行此项操作?
答案1
@Rob,假设您有 A1 到 A10 范围内的数据,并且您想要在当前日期为 2017 年 1 月 31 日时自动计算总数,例如您在 2017 年 1 月 15 日编写了此公式。
在空白单元格中的任意位置写入计算日期值,例如在 D1 中写入 31/01/2017。并在 A11 中写入以下任何公式。
=IF(TODAY()=D1,SUM(A1:A10),"过期")
=SUMPRODUCT(--(D1=TODAY())*A1:A10)
一旦当前日期与计算日期匹配,Excel 就会在 A11 中生成总和。
现在下一步正如您所写的,即使日期过期或者您更改数据范围 A1 到 A10 中的值,您希望结果仍保留在单元格中。
对于这个最简单的棘手的解决方案是复制单元格 A11,将指针仅放在 A11 中,并且点击选择性粘贴和点击选项值。您在 A11 中找到相同的值,或者您的答案在任何条件下都将保持不变。
其背后的原因是,当您复制并粘贴值时,Excel 将从单元格 A11 中删除公式。
希望对您有所帮助,无需考虑任何类型的 VBA 代码。
答案2
@抢,我故意没有发布自动化方法,但因为你是如此不同,所以这里我带来了简单的 VBA 代码将对数据范围求和,如果关键单元格(D1)有当前日期。
此外,此代码将按照您的要求转换单元格的值,最终结果必须保持不变。
注意:您可以将此代码与命令按钮单击事件或工作表更改事件一起使用。这里我使用了命令按钮作为示例。希望这对您有所帮助,并且这次您对我的答案投了赞成票。
Private Sub CommandButton1_Click()
Range("A11").Value = "=IF(ISBLANK(D1),0,IF(D1=TODAY(),SUM(A1:A10)))"
Range("A11").Copy
Range("A11").PasteSpecial xlPasteValues
Application.CutCopyMode = False
End Sub