如何将易变的Excel公式设为静态,特别是包含TODAY函数的公式?


0

我有一个我在工作中创建的任务日志,以优先考虑我的日常待办事项。

在一个专栏中,我已经添加了一个公式自动计算基于与否我已经指定为紧急或不紧急和重要或不太重要的任务(其中填充为Covey的象限号码1234)。我还有一个专栏来指定截止日期。我想自动指定截止日期,我写了一个公式来做到这一点,但TODAY功能意味着明天,我的截止日期会改变。以下是我要完成的任务:

  1. 我希望根据G列中的象限和今天的日期自动计算到期日期。
  2. 我希望明天打开工作簿时,截止日期保持不变。
  3. 当我明天进入一个新任务时,我想要使用TODAY函数再次自动计算到期日,然后在第二天再次保持静态,依此类推。

我一直在网上疯狂地研究这个话题已经有一段时间无济于事了。我发现很多建议使用CTRL +自动将今天的日期输入单元格,这不是我想要的。

请查看下面的公式,如果有任何方法可以实现我的目标,宏,vba,公式或其他方式,请告诉我。因为我正在学习宏和vba,请在你的指示中非常详细。

=IF(ISBLANK(E4),"",IF([@QUADRANT]=1, TODAY()+1,IF([@QUADRANT]=2, TODAY()+7,IF([@QUADRANT]=3, TODAY()+3, IF([@QUADRANT]=4, TODAY()+30)))))

1
您可以在一天结束时复制该列,并使用paste.special:values将其粘贴到新列中吗?这样你就可以为明天准备原始专栏...只是一个建议,因为我不知道你的数据是什么样的......
Solar Mike

编写一个返回所需截止日期的VBA函数。然后在工作表的OnChange事件中,注意用户d在截止日期列中输入字母。发生这种情况时,运行该函数并将单元格的值替换为计算日期。然后,只要您想要一个静态但正确计算的截止日期,请输入“d”,它将为您输入。
Twisty Impersonator

我修改了我的答案,找到两个解决方案,将帮助您解决问题。
Rajesh S

Answers:


0

我想建议两个解决方案,以实现目标。

解决方案1:

将这些VBA代码用作模块。首先将单元格A1中的当前日期转换为静态日期值,而保存工作簿和第二个宏将静态日期值转换为易失性。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    With Sheet1.Range("A1")
        .Value = .Value
    End With

End Sub


Private Sub Workbook_Open()

     With Sheet1.Range("A1")
        .Value = "=Today()"
    End With

    End Sub

解决方案2:

代替两个不同的宏,您可以创建一个切换按钮,将“挥发性日期”转换为“静态”,再次转换为“挥发性日期”值。

    Private Sub CommandButton1_Click()

     If CommandButton1.Caption = "Convert Static" Then

      With Sheet1.Range("A1")
      .Value = .Value
      End With

   CommandButton1.Caption = "Convert Volatile"

   ElseIf CommandButton1.Caption = "Convert Volatile" Then

    With Sheet1.Range("A1")
            .Value = "=Today()"
        End With

  CommandButton1.Caption = "Convert Static"
  End If

  End Sub

注意:请按照以下步骤完成作业。

  1. 在执行公式的工作表1中,在单元格A1中写下此公式=今天()。
  2. 对于解决方案1,按Alt + F11打开VBA编辑器,找到“Microsoft Excel对象”。
  3. 右键单击鼠标,找到Insert then Module。
  4. 复制并粘贴两个宏。

对于解决方案2,请执行以下步骤。

  1. 在工作表1中,单击“ 开发人员”选项卡,找到“设计模式”,左侧为“插入”。
  2. 查找ActiveX控件,第一个是命令按钮,单击它并在空白区域中绘制按钮。
  3. 右键单击“命令”按钮,“查找属性”,“查找标题”并将其更改为“转换静态”。
  4. 返回Sheet,双击Command按钮,VBA编辑器将打开。
  5. 复制并粘贴VBA代码,转到文件菜单,单击关闭并返回到Excel。
  6. 再次单击顶部的“设计”按钮将其取消激活。
  7. 单击命令按钮,将单元格A1中的易失性日期值更改为静态,并将命令按钮的标题也更改为,转换为易失性。
  8. 如果要将单元格值A1更改为静态,请再次单击它。

请记住,在每个单击宏上,将A1单元格中的日期转换为静态到静态。

请注意, 在您的公式中使用单元格A1而不是TODAY()。

您可以在任何BLANK CELL中自由编写= Today()公式,但不要忘记相应地修改单元格地址。

我相信这会对你有所帮助。


1
我的评论在不久前给了你的解决方案....
太阳能迈克

对不起@SolarMike ,,,我没有注意到它,我的是不同的,我建议粘贴在同一个单元格。
Rajesh S

1
所以,你的方式实际上删除了公式,所以它明天不会工作...
太阳能迈克

@SolarMike,是的,建议3个选项是今天转换()易失性到静态,这是OP的需求,因为静态公式永远不会更新。
Rajesh S

1
所以你不明白«等等等等等等等等等等等各种各样的人也希望它能以明天的方式继续工作 - 你希望它能够工作一次然后再一次 - 它需要每天工作一次并保存当天的信息然后准备好在第二天重复...
太阳能迈克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.