【问题标题】:Enter value in cell, have display value result of formula在单元格中输入值,有公式的显示值结果
【发布时间】:2012-02-11 08:27:35
【问题描述】:

我确信对此有一个非常简单的答案(而且我不知道我是否有能力提出“正确”的问题,或者谷歌会给我答案)。

我有以下公式:

=DATE(YEAR(V1), MONTH(V1)+V2-1,8)

我希望能够在单元格中输入一个数字(例如 14)并运行该公式,但我在单元格中输入的数字应替换公式中的数字 8。因此,再次输入 14,将执行的公式为:

=DATE(YEAR(V1), MONTH(V1)+V2-1, 14)

回顾一下,工作流程是这样的:

  1. 我在单元格 A3 中输入值“14”。
  2. 上面的公式执行
  3. A3 的显示值类似于 2012 年 3 月 14 日(取决于我的 V1/V2 单元格值)

我可以在没有 VBA 的情况下执行此操作吗? (我是一名 .NET 程序员,所以 VBA 对我来说并不陌生,我只是觉得 Excel 应该能够在没有代码的情况下进行本机操作)。

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    否 - 因为您通过公式将 A3 中的值转换为 A3 中的新值。

    当这些单元格中的任何一个发生更改时(如果一次全部更改,则全部 5 个),下面的代码将更新 A1:A5 并得到您要求的结果

    1. 右键单击您的工作表标签
    2. 查看代码
    3. 复制粘贴下面的代码

      Private Sub Worksheet_Change(ByVal Target As Range)
      Dim rng1 As Range
      Dim rng2 As Range
      Set rng1 = Intersect(Range("a1:A5"), Target)
      If rng1 Is Nothing Then Exit Sub
      Application.EnableEvents = False
      For Each rng2 In rng1
          rng2.Value = Format(Evaluate("DATE(YEAR(V1), MONTH(V1)+V2-1," & CLng(rng2.Value) & ")"), "mm/dd/yyyy")
      Next rng2
      Application.EnableEvents = True
      End Sub
      

    【讨论】:

    • 完美工作。谢谢布雷特。
    猜你喜欢
    • 2014-08-11
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多