Excel 2016动态文本中提取店名的公式问题求助
Excel 2016:提取含四位数字的动态店名
问题描述
有两个动态文本字符串,需定位其中的四位数字(如示例中的8555),以此提取完整店名(如Amazing Stores 2584,店名长度不固定,无法使用RIGHT函数)。现有公式仅对第二个文本有效,对第一个无效,二者仅日期和店名后的数字存在差异。
原使用公式:
- 定位四位数字位置:
=FIND(LOOKUP(10^15,MID(A2,ROW(INDIRECT("1:"&LEN(A2))),5)+0),A2)+6(单元格B1) - 计算文本长度:
=LEN(A1)(单元格C1) - 提取店名:
=RIGHT(A1,C1-B1)
限制条件:
- 无法使用分列功能
- 文本长度动态变化,无固定值
- 店名起始位置不固定,无法直接使用
MID函数 - 使用Excel 2016,无法使用文本拆分功能
解决方案
原公式失效原因是LOOKUP查找的是5位数字,若文本中存在其他更长数字(如订单号)会导致定位错误。以下是适配Excel 2016的修正方案,所有数组公式需按Ctrl+Shift+Enter确认输入:
步骤1:定位四位数字的起始位置
在空白单元格(如B1)输入数组公式,找到文本中最后一组四位连续数字的起始位置:
=MAX(IF(ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1)-3)),4)),ROW(INDIRECT("1:"&LEN(A1)-3))))
步骤2:定位店名的起始位置
在空白单元格(如C1)输入数组公式,找到四位数字左侧最近的非字母/空格字符的位置,+1得到店名的起始点:
=MAX(IF((NOT(ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&B1-1)),1))))*(MID(A1,ROW(INDIRECT("1:"&B1-1)),1)<>" "),ROW(INDIRECT("1:"&B1-1))))+1
步骤3:提取完整店名
在空白单元格(如D1)输入公式,提取从店名起始位置到四位数字结束位置的内容:
=TRIM(MID(A1,C1,B1+3-C1+1))
简化版直接提取公式
若文本中仅存在一组四位数字,可直接用以下数组公式提取店名:
=TRIM(MID(A1,MAX(IF((NOT(ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&MATCH(TRUE,ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1)-3)),4)),0)-1)),1))))*(MID(A1,ROW(INDIRECT("1:"&MATCH(TRUE,ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1)-3)),4)),0)-1)),1)<>" "),ROW(INDIRECT("1:"&MATCH(TRUE,ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1)-3)),4)),0)-1)))+1,MATCH(TRUE,ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1)-3)),4)),0)+3-(MAX(IF((NOT(ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&MATCH(TRUE,ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1)-3)),4)),0)-1)),1))))*(MID(A1,ROW(INDIRECT("1:"&MATCH(TRUE,ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1)-3)),4)),0)-1)),1)<>" "),ROW(INDIRECT("1:"&MATCH(TRUE,ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1)-3)),4)),0)-1)))+1)+1)
内容的提问来源于stack exchange,提问作者Sky
相关产品推荐
相关产品推荐

