【问题标题】:Split String Based on Array in excel在excel中基于数组拆分字符串
【发布时间】:2022-01-20 02:27:31
【问题描述】:

我有如下图所示的 excel 单元格

WYONG RD BRYANT DR TUGGERAH 2259 CENTRAL COAST (LGA) NSW

我想在一个列中抓取任何类型的 Road、Street、Drive、Highway 等,然后在另一列中抓取相交的道路。所以对于上面的单元格,我想要的输出是:

第 1 列:WYONG RD

第 2 栏:科比博士

下面的代码将两条路合并为一列,但我想将它们分开,但在如何分离时遇到了一些困难。

=INDEX(IFERROR(LEFT(H2,SEARCH({" DR"," HWY"," ST"," CRK"," BND"," LN"," AV"," AVE"," MTWY"," RD"," CT"},H2)+3),""),MATCH(MAX(LEN(IFERROR(LEFT(H2,SEARCH({" DR"," HWY"," ST"," CRK"," BND"," LN"," AV"," AVE"," MTWY"," RD"," CT"},H2)+2),""))),LEN(IFERROR(LEFT(H2,SEARCH({" DR"," HWY"," ST"," CRK"," BND"," LN"," AV"," AVE"," MTWY"," RD"," CT"},H2)+2),"")),0)))

【问题讨论】:

  • 你能提供更多关于多样性的例子吗?
  • WILLANDRA RD LILLIHINA AVE 200 CROMER 2099 NORTHERN BEACHES (LGA) NSW BLAXLAND RD NR CNR ROSE ST CAMPBELLTOWN 2560 CAMPBELLTOWN (LGA) NSW
  • 我建议这是 vba 的工作。这不是你的选择吗?

标签: arrays excel string excel-formula split


【解决方案1】:

使用 MS365,您可以使用:

A3中的公式:

=LET(X,FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s"),TRIM(FILTERXML("<t><s>"&TEXTJOIN(" ",,IF(MMULT(--(X={"DR";"HWY";"ST";"CRK";"BND";"LN";"AV";"AVE";"MTWY";"RD";"CT"}),SEQUENCE(11,,,0)),X&"</s><s>",X))&"</s></t>","//s")))

【讨论】:

    【解决方案2】:

    我试图检查您的公式,但不幸的是,它给我带来了错误。因此,我花了一些时间,想出了以下解决方案:

    假设输入字符串在A2 单元格中,输出在B2C2 单元格中。因此,公式可以如下:

    对于B2

    =LEFT(A2,
    MIN(IFERROR(SEARCH(" DR",  A2)+2,1000000),
        IFERROR(SEARCH(" HWY", A2)+3,1000000),
        IFERROR(SEARCH(" ST",  A2)+2,1000000),
        IFERROR(SEARCH(" CRK", A2)+3,1000000),
        IFERROR(SEARCH(" BND", A2)+3,1000000),
        IFERROR(SEARCH(" LN",  A2)+2,1000000),
        IFERROR(SEARCH(" AV",  A2)+2,1000000),
        IFERROR(SEARCH(" AVE", A2)+3,1000000),
        IFERROR(SEARCH(" MTWY",A2)+4,1000000),
        IFERROR(SEARCH(" RD",  A2)+2,1000000),
        IFERROR(SEARCH(" CT",  A2)+2,1000000)))
    

    对于C2

    =LEFT(SUBSTITUTE(A2,B2&" ",""),
    MIN(IFERROR(SEARCH(" DR",  SUBSTITUTE(A2,B2&" ",""))+2,1000000),
        IFERROR(SEARCH(" HWY", SUBSTITUTE(A2,B2&" ",""))+3,1000000),
        IFERROR(SEARCH(" ST",  SUBSTITUTE(A2,B2&" ",""))+2,1000000),
        IFERROR(SEARCH(" CRK", SUBSTITUTE(A2,B2&" ",""))+3,1000000),
        IFERROR(SEARCH(" BND", SUBSTITUTE(A2,B2&" ",""))+3,1000000),
        IFERROR(SEARCH(" LN",  SUBSTITUTE(A2,B2&" ",""))+2,1000000),
        IFERROR(SEARCH(" AV",  SUBSTITUTE(A2,B2&" ",""))+2,1000000),
        IFERROR(SEARCH(" AVE", SUBSTITUTE(A2,B2&" ",""))+3,1000000),
        IFERROR(SEARCH(" MTWY",SUBSTITUTE(A2,B2&" ",""))+4,1000000),
        IFERROR(SEARCH(" RD",  SUBSTITUTE(A2,B2&" ",""))+2,1000000),
        IFERROR(SEARCH(" CT",  SUBSTITUTE(A2,B2&" ",""))+2,1000000)))
    

    请注意,第二个公式依赖于第一个公式输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 2014-07-31
      相关资源
      最近更新 更多