很难使用 Right、Left、Mid、LEN 和 FIND 提取子字符串

问题描述 投票:0回答:1

我正在尝试使用不同的函数从子字符串中解析数据。
看例子:

Data                                         MIDFUNCTION                     Nmbr                  Date
**NM1*IL*1*EEKS*MILBORD****MI*123456789~**   EEKS*MILBORD****MI*123456789~   BORD****MI*123456789
**DTP*472*D9*20240212~ **                                                                          20240212~

对于我使用的 mid 函数:

 MID(A15,FIND("NM1*IL*1*",A15)+9,LEN(A15)-FIND("NM1*IL*1*",A15))
我使用的名字:
LEFT(D15,FIND("*",D15)-1)
对于我使用的正确功能:
RIGHT(A15,FIND("****MI*",A15))
对于我无法排除波浪线的日期,我使用了:
RIGHT(A3,FIND("*D9*",A3))

我想要的是根据数据字段中的数据使用find和Len进行提取...mid功能似乎可以工作但不排除不需要的东西

我正在尝试提取名字、姓氏、号码以及下一行的日期并排除波浪线。

function excel-formula substring
1个回答
0
投票

我建议真正一步一步地做到这一点,使用中间单元格来获得中间结果。首先获取数据中的所有关键位置,只有当您拥有所有这些位置时,才根据这些位置设计您的

mid
提取。

我会使用这些公式。我假设数据位于 A 列中,并从 A2 开始。然后我将按如下方式分配列:

# A B C D E F G H J K
1 数据 首先开始 先结束 最后结束 起始编号 结束编号 开始日期 名字 姓氏 数量 日期
2 ...

使用这些公式:

  • B2 中:
    =FIND("*1*",A2)+3
  • 在C2中:
    =FIND("*",A2,B2)+1
  • D2:
    =FIND("*",A2,C2)
  • E2 中:
    =FIND("*MI*",A2,D2)+4
  • 在 F2 中:
    =FIND("~",A2,E2)
  • G2:
    =FIND("*D9*",A2)+4
  • H2:
    =IFERROR(MID(A2,B2,C2-B2-1),"")
  • 在 I2 中:
    =IFERROR(MID(A2,C2,D2-C2),"")
  • 在 J2 中:
    =IFERROR(MID(A2,E2,F2-E2),"")
  • K2:
    =IFERROR(DATE(MID(A2,G2,4),MID(A2,G2+4,2),MID(A2,G2+6,2)),"")

这是我得到的结果:

拥有如此多的中间单元可能看起来有点大材小用,但如果这样做的话,可以更容易地发现问题出在哪里。一切正常后,您可以隐藏 B-G 列。

© www.soinside.com 2019 - 2024. All rights reserved.