2 个问题
我如何从这个单元格中获取较早的日期,例如,我将所有这些笔记都放在一个单元格中
2020-04-07 17:35:43 - 标记质量检查完成:按要求创建
SNOW ID =Csdsd 注释:申请数据已注册 2020-04-03 12:13:45 - 标记 ~ 注释:质量检查
问题是我想要获得 2020-04-03 12:13:45 仅在单元格的最低部分我该怎么做?
还有第二个问题,如果我在一个单元格中只有这个怎么办
2020-04-03 12:13:45 - Mark ~ 备注:质量检查
我只想获取日期和时间 2020-04-03 12:13:45
请帮忙
答案1
假设您的日期/时间始终采用显示的格式(并且字符串中没有其他具有相同格式的内容),如果您有O365通过该SEQUENCE
函数,您可以使用以下公式:
=MIN(--MID(A1,AGGREGATE(15,6,SEARCH("????-??-?? ??:??:??",MID(A1,SEQUENCE(255),19))*SEQUENCE(255),ROW(INDEX($A:$A,1,1):INDEX($A:$A,SUM(--ISNUMBER(SEARCH("????-??-?? ??:??:??",MID(A1,SEQUENCE(255),19)))),1))),19))
如果你没有该SEQUENCE
功能,你可以使用:
=MIN(--MID(A1,AGGREGATE(15,6,SEARCH("????-??-?? ??:??:??",MID(A1,ROW(INDEX($A:$A,1,1):INDEX($A:$A,255,1)),19))*ROW(INDEX($A:$A,1,1):INDEX($A:$A,255,1)),ROW(INDEX($A:$A,1,1):INDEX($A:$A,SUM(--ISNUMBER(SEARCH("????-??-?? ??:??:??",MID(A1,ROW(INDEX($A:$A,1,1):INDEX($A:$A,255,1)),19)))),1))),19))
无论字符串中有多少个日期,公式都应该有效
笔记: 如果您的字符串可能超过 255 个字符,请相应地更改ROW(INDEX(…
或SEQUENCE(…
函数中的因子。(或将其替换为LEN(A1)
)
笔记2:早期版本的 Excel 可能要求将其输入为大批公式,按住ctrl+shift并点击enter
答案2
这是你的第二问题。这个小 UDF 将扫描字符串并检索第一个例子您需要的格式的日期/时间:
Public Function GrabDate(s As String) As String
Dim L As Long, i As Long, subS As String
Dim pattrn As String
pattrn = "####[-]##[-]##[ ]##[:]##[:]##"
L = Len(s)
For i = 1 To L
subS = Mid(s, i, 19)
If subS Like pattrn Then
GrabDate = subS
Exit Function
End If
Next i
GrabDate = ""
End Function
您也许可以修改它来解决您的第一个问题。