当数据输入到另一个单元格时,需要今天的日期自动填充单元格

当数据输入到另一个单元格时,需要今天的日期自动填充单元格

我希望每当数据输入单元格 B5-B39 时,单元格 C5-C39 都会自动填充今天的日期。

我曾尝试使用它来使其发挥作用=TODAY(),但不知道如何构建公式。

答案1

我认为最简单的方法是使用用户定义函数。该函数将在其引用的任何单元格发生变化时更新,因此您无需将其与任何事件联系起来。

解决您问题的功能是:

Function Updating_Date(dependent_cell as Range) As Date
  Updating_Date = Date
End Function

将该代码放入工作簿中的模块后,您只需将其输入然后复制下来即可=Updating_Date(B5)C5这样,只要 C 列中的值发生变化,C5 中的日期就会更新。

为了使日期仅在 B 列单元格不为空时显示,您可以在 C 列单元格中应用 if 公式,正如我在你问的另一个问题。只需输入与我在此处显示的相同的条件(即) ,如果条件为真,ISBLANK(B5)则返回值为空字符串( ),如果条件为假,则返回值为 UDF()。""Updating_Date(B5)

答案2

每当单元格“A”发生变化时,以下操作就会将今天的日期放入单元格“B”中:

Private Sub Worksheet_Change(ByVal Target As Range)
' Auto Date
Dim Cell As Range
For Each Cell In Target
    If Cell.Column = Range("A:A").Column Then
        If Cell.Value <> "" Then
            Cells(Cell.Row, "B").Value = Int(Now)
        Else
            Cells(Cell.Row, "B").Value = ""
        End If
    End If
Next Cell
End Sub

此代码需要放在您希望发生此行为的工作表的 VBA 模块中。

答案3

无需 VBA 即可完成此操作。我需要根据 B 列中输入的值,用今天的日期填充 C 列。此公式可正确插入。

=IF(ISBLANK(B2)," ",NOW())

我将其放在 C2 单元格中,因为这是我的 C 列的起始位置。您可以将其放在您开始的任何列的单元格中。然后,只需确保我的 B2 引用被替换为您要输入值的列和单元格。例如,如果您的起始单元格是 F3,您应该将公式更改为

=IF(ISBLANK(F3), " ",NOW()). 

如果相应的日期单元格是 K3,请将公式放在此处。(一旦公式位于第一个单元格中,您就可以将其拖到该列的其余单元格中。)

此公式将日期单元格保留为空,直到“开始”单元格输入值。输入该值后,将添加日期。如果删除该值,Excel 将自动删除该日期。所以它并不完美,但如果您需要更复杂的东西,您可能需要 Excel 专家或为您处理此事的程序。

答案4

AFIK,您需要通过 VBA 执行此操作。您可以创建一个函数来监视工作表上的更改,仅过滤掉单元格 B5-B39 上的更改并相应地更新 C 中的单元格。

更新:您可能知道如何使用 alt-F11 进入 VBA。

双击名为 Sheet1 的 Excel 对象或您感兴趣的任何工作表(在左上角的树列表中)以获取该工作表的代码。

从两个下拉列表中选择“工作表”和“更改”。这样你就得到了如下代码:

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

变量“目标”现在可用,它是对发生变化的单元格的引用。

在这些行之间添加一些代码:

debug.Print Target

然后按 ctrl-G 显示即时窗口

在工作表中进行一些更改并切换回代码,您将看到输入的数据出现在“即时”窗口中。

现在将代码改为这样if Target.,你会看到与 Target 变量相关的可能属性的下拉列表。

经过一些改变,你可以得到这个:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 2 And (Target.Row > 4 And Target.Row < 40) Then
        Debug.Print Target.Value
    End If

End Sub

现在仅打印您感兴趣的范围内的更改。

如果您想知道如何更改单元格中的值,您可以手动录制宏并检查代码。希望您现在有足够的知识可以继续。如果没有,请告诉我。

相关内容