如需更清晰的问题描述,请参阅图片。
当将日期粘贴到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。这里有两件奇怪的事:
中得到遵守。
在第三种情况下(第5行),如果我使用vba在一行VBA行中修剪和CDate字符串,excel识别日期并以英国格式正确识别它。但是,如果这是分两步完成的(在一行中修剪,粘贴到单元格,然后将结果字符串粘贴到date ),excel会在单元格获得字符串时进行干扰,而我在中间得到一个美国日期。
最令人困惑的是,如果我发布一个“干净的”日期字符串,excel会尊重当地的解释。如果我需要操作字符串以移除人工制品,并将已清理的字符串放入单元格中,则不符合本地解释。
注意:我理解区域单元格格式的不同,它只是告诉excel如何显示日期。这个问题与excel通过有时假设一个美国日期将字符串转换为一个数字值有关,而其他时候则是假设一个英国日期!
对于如何强制excel/vba在解释日期字符串时使用本地日期格式,有任何明确的建议吗?
发布于 2022-10-30 11:21:46
假设粘贴的字符串不包括所显示的可见引号
LEFT
)返回的文本不会被自动转换。若要转换为日期值,请将结果包装为双元(--
)、VALUE
函数或DATEVALUE
函数。CDate
时以美国为中心。f 214
https://stackoverflow.com/questions/74252189
复制相似问题