Excel 以当前日期为准
我有两个单元格A1和A2。我想要的是,如果A2的值大于零(0),则A1采用当前日期mm/dd/yyyy。为此,我在A1中使用了以下公式:Excel 以当前日期为准,excel,date,if-statement,formula,Excel,Date,If Statement,Formula,我有两个单元格A1和A2。我想要的是,如果A2的值大于零(0),则A1采用当前日期mm/dd/yyyy。为此,我在A1中使用了以下公式: =IF(E2>0;(TODAY())) 因此,如果A2中的单元格是例如60,则A1将是11/03/2015。 如果我保存并在第二天重新打开,A1中的值将自动更改为新日期。这是我不喜欢的,因为我想用这种方法来记录我每天的开支。因此,如果我在A2中键入一个金额,我希望A1给我当前日期并保留它 那么,如何才能获得当前日期,而不用担心每次重新打开文件时它们都会
=IF(E2>0;(TODAY()))
因此,如果A2中的单元格是例如60,则A1将是11/03/2015
。
如果我保存并在第二天重新打开,A1中的值将自动更改为新日期。这是我不喜欢的,因为我想用这种方法来记录我每天的开支。因此,如果我在A2中键入一个金额,我希望A1给我当前日期并保留它
那么,如何才能获得当前日期,而不用担心每次重新打开文件时它们都会更改?您要查找的是宏,而不是公式。我假设您正在对列而不是行执行此操作。例如:A1和B1,而不是A1和A2 有什么区别 宏:可在事件上触发一次 公式:给定一个输入,它会不断地重新评估结果 步骤1)按Alt+F11,这将在VBA中打开代码编辑器 步骤2)将下面的代码复制并粘贴到公式所在的“工作表”中 步骤3)将工作簿另存为启用宏的电子表格。(xlsm) 注意:此宏仅在一次修改一行时执行,您可以通过删除第一个“if”语句的“Target.Rows.Count=1”部分将其更改为在多个单元格上工作 注2:如果希望在对第2列进行更改时重新计算日期,则可以删除最后一个嵌套的“if”语句。(又名B列,在VBA中,列通过数字而不是字母引用)
注3:如果您确实需要它通过行工作,请尝试通过使用调试器单步执行该宏并重新构建它来理解该宏。键入行而不是列。您必须使用VBA。正如您所注意到的,在任何地方使用
=Today()
都会更新到文件打开的当天。使用VBA,您可以拥有一个宏,该宏等待列a更改,然后获取结果并将值粘贴到其上。尝试在宏记录器中执行此操作(执行公式、复制和粘贴值),然后发回任何想法。老实说,我不熟悉VBA。你能给我更多关于如何做的信息吗?也许是一篇文章,这样我就可以读到它了?提前感谢您的帮助。@pnuts A1和A2是列!!不是细胞。。。一个单元格由行和列的名称共同决定!!!谢谢你的意见。我会让你知道这一点:)非常感谢。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
If (Target.Columns.Count = 1 And Target.Column = 2 And Target.Rows.Count = 1) Then
'Check every row, currently this will get executed once
For Each cell In Target.Cells
'Make sure the value is a number
If (IsNumeric(cell.Value)) Then
'Make sure the value is greater than 0
If (cell.Value > 0) Then
'Check to make sure the date column is empty, so it only ever gets written once
'Note: You can remove the if statement below, if you want it to get re-evaluated every time you make a change
If (Target.Worksheet.Cells(cell.row, 1).Value = "") Then
'Using the current modified row, set column 1 to Today
'Note: Now() is the same as Today in VBA
Target.Worksheet.Cells(cell.row, 1).Value = Now()
End If
End If
End If
Next cell
End If
End Sub