我已经研究这个问题一段时间了,对于我拥有的特定日期+时间格式,我无法让自定义数字格式正确选择日期。
我有这些日期(几个例子):
6/21/2013 6:40 PM
5/28/2013 5:51 AM
6/11/2014 10:03 AM
12/3/2013 2:40 PM
还有这个自定义数字格式:
m/d/yyyy h:mm am/pm
在我看来,它应该能判断出这是一个日期,然后我需要计算出这个特定格式的两个日期之间的时间差。我有数百个这样的日期,因此手动将它们编辑为其他格式不是一个好选择。
例如,我想稍后对日期执行类似的操作:
=INT(D3-B3) & "d " & HOUR(D3-B3) & "h " & MINUTE(D3-B3) & "m"
其中 D3 和 B3 是给定格式的任意两个日期且 D3 > B3。
这样就可以得到两个日期之间的天数、小时数和分钟数,如下所示:
Xd Yh Zm
我尝试过其他格式,效果很好,但我需要那种格式。
我使用的模式有什么问题吗?
添加了示例 xlsx 文件https://itmb.co/zlw44
答案1
即使您的数据看起来像日期,实际上您TEXT
在工作表中看到的不是日期值(检查它的最快方法是查看水平对齐方式,默认情况下文本是左对齐,数字是右对齐)。
因此,您需要将数据转换为日期,最快的解决方案是使用:=DATEVALUE(A2)+TIMEVALUE(A")
函数。现在您将在单元格中获得值,只需将其格式化为所需的格式即可。
注意:仅当您的区域设置中的日期格式如下时,此功能才有效month/day/year
。
否则您需要:
- 更改日期格式,进行转换,将计算结果转换为值,然后将日期格式更改为原始格式
- 使用公式来改变日期部分的顺序(技巧例如这里)
答案2
您使用的模式或公式没有任何问题。该公式适用于我尝试过的几种日期格式。
验证 B 和 D 中的日期值的开头没有多余的空格或其他不可见的字符。
答案3
假设您的值实际上存储(未格式化)为日期,您可以使用以下数字格式进行简单的减法:
d"d" hh"h" mm"m"
答案4
因此,我通过将计算机的区域设置更改为来“解决”了这个问题en_US
,这样m/d/yyyy h:mm am/pm
格式就会被识别。
之后,我能够将语言环境更改为我的真实语言环境,并且它仍然可以识别我需要的日期格式。