背景:数据来自一个数据库,其日期采用欧洲格式 (DD/MM/YYYY)。“创建”列 (A 列) 也有一个 24 小时格式的时间戳。旁边是“已识别”列 (B 列),只有一个日期,可能与“创建”日期不同。
我的输出需要是一个新的“创建”列,其中只有美国格式的日期(没有时间戳),我知道如何做。我使用 LEFT 在新列中仅捕获欧洲日期。(C 列)然后在另一个新列中,我使用 =Date(value(right(A2,4)),value(mid(A2,4,2)),value(left(a2,2))) 将日期重新排列为美国格式(MM/DD/YYYY)。(D 列)
以上都很好。但问题就出在这里,我需要对“已识别”数据进行相同的日期转换,将其放入自己的列(列 E)。并非每一行数据都有“已识别”日期。
在没有“已识别”日期的情况下,我希望我的日期公式能够识别错误(显示为#VALUE)并复制转换后的“创建”日期。
我尝试使用 IF、OR 和 IsError 语句,但似乎无法找到有效的语句。
任何建议都将不胜感激。我还尝试使用 =If(iserror) 创建另一列 (F) 来读取我转换后的“已识别”列,如果出现错误,则获取转换后的“创建”日期,如果不是错误,则获取转换后的“已识别”日期,但是这给了我一个空单元格。
我已经创建了一个简单的示例 Excel 表,但是我没有看到在哪里上传/附加 Excel 文件的选项?
答案1
细胞公式E2
...
老方法,使用 IF
=IF(ISBLANK(B2),D2,DATE(VALUE(RIGHT(B2,4)),VALUE(MID(B2,4,2)),VALUE(LEFT(B2,2))))
现代方式,使用 IFERROR
=IFERROR(DATE(VALUE(RIGHT(B2,4)),VALUE(MID(B2,4,2)),VALUE(LEFT(B2,2))),D2)
如果B2
为空则DATE
您所处的函数E2
会产生错误。
旧方法使用IF
函数来测试单元格是否B2
为空,如果是,则直接将单元格中的内容作为结果传递D2
。如果测试失败,则IF
函数直接使用该函数计算所需结果DATE
。
现代方法并不关心导致DATE
错误的原因,而只关心是否存在错误。如果没有错误,IFERROR 函数将使用第一个参数 - 函数DATE
- 如果有错误,它将使用第二个参数 - D2
- 作为结果。
现代方法更可取。其他错误(例如B2
包含随机文本)将导致DATE
E2 中的函数出现问题。该IF
版本无法正确处理此类错误,而IFERROR
可以。