Excel 提取 2 个特定字符之间的字符串的公式

Excel formula to extract string between 2 specific character

我有一个数据 table 如下所示:

我正在使用以下论坛: =MID(LEFT(F2,FIND("D",F2)-1),FIND(" ",F2)+1,LEN(F2))

目标是在我的“访问”列中提取“D”字符后的数值。有些访问在“D”后有 1 位数字,有些是 2 位,最多为 3 位数字。但是,我在上面尝试使用的公式返回空白和#VALUE!只要。我认为 D 和 space 之间的数字字符可以工作,但后来我意识到并非所有人都会有 space(请参阅 C2D16)。谁能解释一下我做错了什么?

TIA

编辑

这里解释了下面公式的工作原理,

=MAX(IFERROR(MID(SUBSTITUTE($F2,"PREDOSE",""),ROW(:),3)/1,""))

首先,我们从字符串中删除或替换 PREDOSE 这个词,即使我们没有这个词,函数也会忽略它并保持原样

=SUBSTITUTE($F2," PREDOSE","")

接下来我们用 MID 函数包装公式,对于起始数字,我们使用 ROW 函数将字符串分成 10 段

=MID(SUBSTITUTE($F2," PREDOSE",""),ROW(:),3)

选择公式并按 F9 或者如果您转到“公式”选项卡并求值 您将看到它给我们一个数组

{"C2D";"2D1";"D1";"1";"";"";"";"";"";""}

因此我们需要忽略数组中的文本部分,因此我们可以乘以 1除以 1添加 0 或者我们可以使用 double minus(--),它 否定 文本值作为 #VALUE! 错误while 留下 数字部分

因此,为了排除错误值,我们将其包装在 IFERROR 函数

=IFERROR(--MID(SUBSTITUTE($F2," PREDOSE",""),ROW(:),3),"")

再次选择并按下 F9 将给我们一个数组 数字和空格

{"";"";"";1;"";"";"";"";"";""}

最后但并非最不重要,我们需要数字作为输出,因此MAX来拯救我们

=MAX(IFERROR(--MID(SUBSTITUTE($F2," PREDOSE",""),ROW(:),3),""))

并给出我们想要的输出!

只要您处理了错误,您原来的方法也能奏效。为了调查错误,例如#value,最好将公式分解成多个部分来定位问题。

=MID(F2,FIND("D",F2)+1,IFERROR(FIND(" ",F2)-FIND("D",F2)-1,LEN(F2)-FIND(" D",F2)))

这是一个我认为更简洁的公式

=MID(F1,FIND("D",F1)+1,IFERROR(FIND(" ",F1),LEN(F1)+1)-(FIND("D",F1)+1))

我认为这实际上代表了你正在尝试做的事情的思考过程。

分解:

=MID(F1,X,Y)

您想要 F1 的中间部分,从 X 开始,长度为 Y

X=FIND("D",F1)+1

起点(X)在第一个D

之后space
Y=IFERROR(FIND(" ",F1),LEN(F1)+1)-(FIND("D",F1)+1)

长度 (Y) 是从 space 字符的位置减去 X 或比整个字符串的长度多 1

另一个:

=-LOOKUP(0,-(MID(F2,FIND("D",F2)+1,{1;2;3})&"**0"))