Excel公式 – 计算两个时间戳之间的天数,小时数,分钟数和秒数

我有一个vba脚本,在用户运行时在单元格A8中留下时间戳记,如下所示:

ActiveSheet.Range("A8").Value = Format(Now(), "dd/mm/YYYY hh:mm:ss") 

这将在单元格A8中显示以下内容(格式为date:

 10/12/2016 9:15:10 AM 

接下来,我希望能够确定自上次用户运行macros/ vba代码以来已有多less天,几小时,几分钟和几秒钟。

我也在单元格B8中使用= NOW()捕获当前date/时间。

单元格B8也被格式化为date并显示如下:

 12/18/16 12:45 

我的公式应该比较A8中的时间戳与当前的时间和date,单元格B8。

 =INT(A8-B8)&" days "&TEXT(A8-B8,"h"" hrs ""m"" mins """) 

我注意到date格式在这里是不一致的,我不知道这是否重要?

出于某种原因,我没有得到所需的结果,我得到这个错误与我的公式:

值!

请有人告诉我我要去哪里错了?

另外,如果可能的话,我不想一次显示几天,几小时,几分钟和几秒钟,就像这样:

 0 days, 0 hours, 0 minutes, 0 seconds 

我真正想要的是如果时间戳less于60秒,显示如下:

 55 seconds ago Then something like: 20 minutes ago then: 1 hour ago then : 2 days ago 

谢谢

首先应该是B8-A8 ,而不是相反,因为B8应该大于A8。 这个改变应该使你的初始配方工作。

其次,你想要的公式:

 =IF(B8-A8>=1,INT(B8-A8)&" days ago",IF(HOUR(B8-A8)>=1,HOUR(B8-A8)&" hours ago",IF(MINUTE(B8-A8)>=1,MINUTE(B8-A8)&" minutes ago",IF(SECOND(B8-A8)>=1,SECOND(B8-A8)&" seconds ago", " just now")))) 

ps:根据@ YowE3K的评论,为了这个工作,你的单元格A8B8应该设置为Datetypes,否则你应该在公式中使用正确的格式来格式化它们。 第一个选项应该更容易。