使用公式从字符之间提取子字符串

Extracting a substring from between characters using formula

我有包含以下数据的行

Delivered - signed for by XXX - on 05 Aug 2019 at 15:06

我只想从中提取日期。我一直在使用 "on" 和 "at" 作为我的搜索词,因为它们在日期前后的每一行中只出现一次。

每次我尝试这样做时,我都会 return 我只需要 2019 年 8 月 5 日的日期和时间。

我用的公式是这样的。

=MID(A2,SEARCH("on",A2)+2,SEARCH("at",A2)-1)

我注意到,当我将第一部分设为 +1 时,虽然我正在搜索 "on" 这个词,但公式的结果也会给我 "n"。

我也试过了

=MID(LEFT(A4,FIND("on",A4)+2),FIND("at",A4)-1,LEN(A4))

然而,这只会给我留下一个空白单元格。

如果签名者的名字中有 ON(例如 Jason),我也会解决这个问题。该公式将从日期前 "on" 之前的名称中提取 "on"。

感谢任何帮助,毫无疑问它让我激动不已。

试一试:

=LEFT(MID(A2,FIND("on ",A2)+3,99),FIND("at",MID(A2,FIND("on ",A2)+3,99))-2)

尝试

=MID(A2,SEARCH("on ",A2)+3,SEARCH(" at ",A2)-SEARCH("on ",A2)-3)

希望对您有所帮助

如果所有条目的日期格式都相同 ("dd mmm yyyy"),您可以尝试:

=MID(A1,SEARCH(" on ",A1)+4,11)

如果您想要日期值而不是文本,只需将 DATEVALUE 放在前面:

=DATEVALUE(MID(A1,SEARCH(" on ",A1)+4,11))

C6 = 已交付 - 由 XXX 签收 - 2019 年 8 月 5 日 15:06

=左(右(C6;20);11)

SEARCH return是搜索文本的第一个字符的位置,因此您需要根据搜索文本的长度对其进行调整。另外,MID 的第三个参数是return 的字符数,而不是停止的位置,因此您需要从第二次搜索中减去第一次搜索的结果。最后,我会搜索“on”和“at”来消除名称问题,TRIM为了安全起见,结果是:

=TRIM(MID(A2,SEARCH(" on ",A2)+4,SEARCH(" at ",A2)-SEARCH(" on ",A2)-4))