NOW()
我在电子表格的许多地方使用了该函数,它基本上是一个清单文档。
所以我的要求是,对于每个步骤,它都应该记录完成该步骤的日期时间。但是每当使用 Now() 时...所有之前更新的带有日期时间的单元格也会再次更新。因此,到最后,我无法获得完成每个步骤的详细时间。
这就是我到目前为止所创造的:
- 每个步骤都使用一个复选框。步骤完成后,单击复选框,单元格 A1 将更新为“已完成”。
在单元格 B1 中,我放置了以下函数,它将检查 A1 中的值。如果是“已完成”,则它将使用当前日期时间更新 B1 的值使用 Now()
=IF(A1="Completed";NOW();"")
请告诉我解决方案。还有没有其他替代方案。
答案1
这是我经常要做的事情,但我所知道的唯一选择并不理想:
您可以照常复制单元格,但使用“选择性粘贴”并取消选中除“数字”或您想要粘贴的任何内容之外的所有内容。
或者,您可以“通过代理复制粘贴”,即复制并粘贴到常规文本框中(记事本、您喜欢的浏览器的地址栏、打开的 shell 窗口,无论哪种方式最方便)。然后复制该文本并将其粘贴到单元格中。
我通常选择第二种方法,因为它实际上比“选择性粘贴”快得多(因为您可以使用键盘快捷键)。
编辑:
我误解了这个问题。如果你正在寻找一种以编程方式实现的方法,那么是可以。你只需要使用.value
单元格的属性。
我已经在 LibreOffice Calc 中测试过了,可以正常工作。我怀疑它也可以在 OpenOffice Calc 中工作,因为它改编自我在评论中链接的 OpenOffice 代码片段:
Sub GetDate
Dim myTable as Object, mySheet as Object, _
curDate as Date, curTime as Date
Const TRRange = "A2:F2" 'Template row range
Const ColPosDate = 0 'Date column position
Const ColPosTime = 5 'Time column position
mySheet = ThisComponent.Sheets(0)
myTable = mySheet.getCellRangeByName(TRRange)
'curDate and curTime should be identical as they're both just NOW() cells
' --one formatted (for display) as date and the other as time
curDate = myTable.getCellByPosition(ColPosDate,0).value
curTime = myTable.getCellByPosition(ColPosTime,0).value
print curDate
End Sub