删除单元格中的开头字符,同时保留删除尾随字符的公式

时间:2017-05-01 15:29:00

标签: excel excel-formula

这是我使用

的数据格式
Original        Expected
300342          300342
3003743         3003743
3000483a        3000483
3004375v2       3004375
3004375v3       3004375
3124275IE08     3124275
3124275IE11     3124275
321251b         321251
KBZ_KB3018238   3018238

以下代码更正了尾随字符,但不校正KBZ_KB的开头。我不确定如何更新代码,以便在找到起始字符时也将其删除。

=IFERROR(--LEFT(A2,MIN(IF(NOT(ISNUMBER(--MID(A2,ROW(INDIRECT("1:" & LEN(A2))),1))),ROW(INDIRECT("1:" & LEN(A2)))))-1),A2)

作为数组公式,需要在退出编辑模式时使用Ctrl-Shift-Enter而不是Enter来确认。如果正确完成,那么excel会将{}放在公式周围。

4 个答案:

答案 0 :(得分:1)

对于这样的事情,最简单的方法是将它分解为带有辅助列的单独单元格。您可以隐藏这些帮助列或将其剪切为隐藏的工作表(如果愿意),以便您只有原始和输出:

enter image description here

在单元格B2中并向下复制:

=MATCH(TRUE,INDEX(ISNUMBER(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)),),0)

在单元格C2中并向下复制:

=MATCH(FALSE,INDEX(ISNUMBER(--MID(A2,ROW(INDIRECT(B2&":"&LEN(A2)+1)),1)),),0)-1+B2-1

在单元格D2中并向下复制:

=IFERROR(--MID(A2,B2,C2),A2)

将整个公式放在一个单元格中会导致非常大的混乱,难以解释或更新。但是,如果你绝对必须在一个公式中使用它:

=IFERROR(--MID(A2,MATCH(TRUE,INDEX(ISNUMBER(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)),),0),MATCH(FALSE,INDEX(ISNUMBER(--MID(A2,ROW(INDIRECT(MATCH(TRUE,INDEX(ISNUMBER(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)),),0)&":"&LEN(A2)+1)),1)),),0)-1+MATCH(TRUE,INDEX(ISNUMBER(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)),),0)-1),A2)

请注意,这些都不是数组公式,不需要使用Ctrl + Shift + Enter

进行确认

答案 1 :(得分:1)

下面:

=LOOKUP(99^99,--MID(A1,MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),ROW($A$1:$A$100)))

更改公式中的A1(在两个地方)以匹配您的数据,但不要在ROW中更改A1($ A $ 1:$ A $ 100)

答案 2 :(得分:0)

你也可以调整你的数组公式,以达到预期的效果:

=IF(NOT(ISNUMBER(LEFT(A2,1))),MID(A2,MATCH(TRUE,ISNUMBER(1*MID(A2,ROW(INDIRECT("A1:A"&LEN(A2))),1)),0),LEN(A2)-MATCH(TRUE,ISNUMBER(1*MID(A2,ROW(INDIRECT("A1:A"&LEN(A2))),1)),0)),IFERROR(MID(A2,1,-1+MATCH(FALSE,ISNUMBER(1*MID(A2,ROW(INDIRECT("A1:A"&LEN(A2))),1)),0)),A2))

请注意,这是一个数组公式,您必须使用 Ctrl + Shift + 输入来确认它,而不是仅按下输入 - 键。 array formula

答案 3 :(得分:0)

检查此数组公式是否适用于您的数据:

=MID(A2,IFERROR(MIN(SEARCH(ROW($A$1:$A$9),A2)),1),MIN(IFERROR(ROW($A$1:$A$40)*100+MID(MID(A2,IFERROR(MIN(SEARCH(ROW($A$1:$A$9),A2)),1),LEN(A2)),ROW($A$1:$A$40),1),ROW($A$1:$A$40)))-1)