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

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

我有一个在工作中创建的任务日志,用于对我每天要做的事情进行优先排序。

在一列中,我添加了一个公式,根据我是否将任务分配为紧急或不紧急、重要或不太重要(填充为12或)来自动计算 Covey 象限数字。我还有一列用于分配截止日期。我想自动分配截止日期,并且我编写了一个公式来执行此操作,但该函数意味着明天我的截止日期将会改变。以下是我希望实现的目标:34TODAY

  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

为了实现这一目标,我想建议两种解决方案。

解决方案 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 中写入此公式 = Today()。
  2. 对于解决方案 1,按Alt+F11打开VBA编辑器,找到“Microsoft Excel 对象”。
  3. 右键单击它,找到插入,然后找到模块。
  4. 复制并粘贴两个宏。

对于解决方案 2, 按着这些次序。

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

请记住,每次单击时,宏都会将 A1 单元格中的日期从易失性转换为静态,再转换为易失性。

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

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

我确信这对你有帮助。

相关内容