【问题标题】:Cells Defaulting to Original Formula if Blank如果为空白,则单元格默认为原始公式
【发布时间】:2013-12-30 16:38:55
【问题描述】:

您好,感谢您花时间阅读(并回答)我的问题。

我正在尝试创建一个数据电子表格,其中一个功能是根据最初输入的日期(让我们调用日期 A,日期系列为日期 B、日期 C 等)。该系列之后的每个后续日期都是从其前身添加的,因此日期 B 距日期 A 14 天,日期 C 距日期 B 7 天,依此类推。只需使用 =A1+XX 就很简单了,其中 XX 是天数,等等。

两难:

  • 每个日期都必须具有手动覆盖的能力,并且系列中的日期可以反映该更改。换句话说,如果日期 B 和 C 之间有 15 天的计数,并且日期 B 从 2014 年 1 月 1 日被手动覆盖并更改为 2014 年 1 月 15 日,那么日期 C 也应该从 2014 年 1 月 15 日更改至 2014 年 1 月 30 日
  • 如果用户改变主意并删除手动输入的日期,则应恢复使用原始公式来获取日期。换句话说,如果用户只是从单元格中删除数据,即。单元格是空白的,原来的公式现在应该回到原位以获取数据。
  • 我还想将公式生成的任何日期突出显示为粗斜体和不同的颜色(即蓝色)

我设法得到了颜色变化和所有公式的布局,但我不确定如果输入手动数据然后删除,我该如何恢复公式。我假设 IF ELSE 可以通过 VBA 执行此操作,但不确定如何。

有人可以帮忙吗?提前谢谢!

【问题讨论】:

    标签: excel vba date default formula


    【解决方案1】:

    不使用 VBA 的一种方法是这样。

    您可以在放置公式的单元格(公式单元格或 FC)旁边放置一个单元格(我称之为“手动覆盖单元格”或 MOC)。如果用户想输入,他可以在 MOC 中输入。然后,FC 将包含一个 isblank 函数,该函数检查 MOC 是否包含任何值。如果有值,该值将覆盖 FC 的输出。如果 MOC 为空白,则公式将覆盖。

    类似于 =if(isblank(MOC),(FC-1)+xx,MOC) 其中 (FC -1) 是系列中 FC 的前一个值。

    这行得通吗?

    【讨论】:

    • 我可以那样做,是的,但是会有点乱。实际的电子表格实际上有 20 多列和几千行。如果可能的话,我想减少实际工作表上的“混乱”(和文件膨胀),并让 VBA 自动进行我需要的更改。好建议!
    • 如果选择单元格来更改值是一个选项,您可以使用 Worksheet_SelectionChange。根据您的情况,其他事件处理程序也可能有所帮助。
    猜你喜欢
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    相关资源
    最近更新 更多