【问题标题】:Extract a numeral with a specific number of digits from a string从字符串中提取具有特定位数的数字
【发布时间】:2020-07-30 12:24:10
【问题描述】:

问题与 Excel (Office365) 相关:

我正在寻找一种解决方案,可以从字符串中提取一个长度为 4 位的数字。

我所指的字符串类型的几个示例是:

“16016KT 9999 SCT030”

“PROB30 0500 FG BKN001”

“MOD TURB BLW 5000FT TILL302300”

“INTER 6000 SHRA SCT015”

在上述每个字符串中,都有不同长度的字母和数字的组合,并且没有固定的模式。 我感兴趣的字符序列是 4 位数字(BOLD)。不是,5000 英尺内的 5000。

4 位数字序列对于我将要评估的所有字符串都是唯一的。

谢谢!

【问题讨论】:

  • 到目前为止,您做了哪些努力?请包括在问题中。另外,所有这些数字是否都在同一个词索引中,是字符串中的第二个词?
  • @JvdV 如果没有正则表达式,您通常无法解决此问题。
  • @TimBiegeleisen 怎么来的? (顺便说一句,不知道那个插件,但这基本上是宏。我宁愿自己做 UDF)

标签: excel excel-formula office365


【解决方案1】:

你可以使用:

=IFERROR(TEXT(FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[.*0=0][string-length()=4]"),"0000"),"Non found")

【讨论】:

  • 感谢您的帮助.....您的解决方案仍然高于我的工资等级,但它有效。
【解决方案2】:

在更新版本的 Excel 上,您可以尝试:

=RegexpFind(A1, "\b[0-9]{4}\b", 0)

See here 了解如何在 Excel 中激活正则表达式支持。

【讨论】:

  • 您能否简要说明一下您的链接内容?链接腐烂等等......
  • Tim,这是我使用通配符等的原始方法。但是,我不知道如何在 Excel 中生成这种类型的代码(不包括通过 VBA)。我将跟进加载项....可能会在接下来的轨道上派上用场。干杯
【解决方案3】:

另一种解决方案:

=IFERROR(TEXT(UNIQUE(SEQUENCE(9999)/(FIND(" " & TEXT(SEQUENCE(9999),"0000") &" ",A2)>0),,1),"0000"),"")

【讨论】:

  • 谢谢当。根据上述受访者的说法,我现在将尝试解构该解决方案的另一个变体,以找出任何未来用途的机制。非常感谢。
【解决方案4】:

另一种选择

B1,公式复制下来:

=IFERROR(TEXT(0+MID(A1,SEARCH(" ???? ",A1)+1,4),"0000"),"not found")

【讨论】:

  • 与 JvdV 的解决方案一样......您的解决方案也同样有效。我将不得不花几分钟来计算公式结构。但是,嘿,它有效。非常感谢。
  • 问号 (?) 代表单个字符,而不仅仅是数字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 2020-07-24
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-10
相关资源
最近更新 更多