首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel自动将日期解释为字符串--在美国和英国格式之间进行不可预测的切换

Excel自动将日期解释为字符串--在美国和英国格式之间进行不可预测的切换
EN

Stack Overflow用户
提问于 2022-10-30 10:13:00
回答 1查看 44关注 0票数 1

如需更清晰的问题描述,请参阅图片。

当将日期粘贴到excel中时,有时似乎会遵守日期的本地系统设置(设置在Win10 intl.cpl中):在我的示例中,英国格式,即DD-MM-YY,而其他时候则使用美国格式,即MM-DD-YY。我无法解决它所遵循的规则,因此很难准确地预测它将如何解释大量粘贴的日期集。

作为测试,我把字符串"02/11/2022 07:00“粘贴到excel中。它正确地将英国格式的日期解释为日期(在单元格B2中)为日期:2-11月22日07:00。

在源数据库中,我要从其中复制日期数据集,并将各种字符附加到某些日期,作为标记,遗憾的是,在复制之前不能删除这些标记。因此,日期可能看起来是:"02/11/2022 07:00*“(请注意后面的asterix)。我需要删除excel中的asterix以使该数据在excel中可用。

这就是它的精髓所在:

在第一种情况下(第3行),如果我使用excel工作表公式用左函数修剪asterix,则该字符串仍然是一个字符串,不被识别为日期。

在第二种情况下(第4行),如果我使用vba来用左修剪asterix,则字符串被识别为US格式(即不尊重本地设置),并且我得到了一个不正确的日期11-2月22日07:00。这里有两件奇怪的事:

  1. excel工作表左剪裁结果不被识别为日期,vba则识别;
  2. vba剪裁结果被确认为日期,但被解释为美国设置,即使本地设置在最初的“干净”字符串案例

中得到遵守。

在第三种情况下(第5行),如果我使用vba在一行VBA行中修剪和CDate字符串,excel识别日期并以英国格式正确识别它。但是,如果这是分两步完成的(在一行中修剪,粘贴到单元格,然后将结果字符串粘贴到date ),excel会在单元格获得字符串时进行干扰,而我在中间得到一个美国日期。

最令人困惑的是,如果我发布一个“干净的”日期字符串,excel会尊重当地的解释。如果我需要操作字符串以移除人工制品,并将已清理的字符串放入单元格中,则不符合本地解释。

注意:我理解区域单元格格式的不同,它只是告诉excel如何显示日期。这个问题与excel通过有时假设一个美国日期将字符串转换为一个数字值有关,而其他时候则是假设一个英国日期!

对于如何强制excel/vba在解释日期字符串时使用本地日期格式,有任何明确的建议吗?

EN

回答 1

Stack Overflow用户

发布于 2022-10-30 11:21:46

假设粘贴的字符串不包括所显示的可见引号

  • Row 1:正常行为
  • Row 2:字符串函数(如LEFT)返回的文本不会被自动转换。若要转换为日期值,请将结果包装为双元(--)、VALUE函数或DATEVALUE函数。
  • Row 3: VBA在转换不合格日期字符串
  • Row 4:CDate时以美国为中心。

f 214

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74252189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档