首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用excel提取文本

用excel提取文本
EN

Stack Overflow用户
提问于 2021-02-16 21:42:32
回答 1查看 51关注 0票数 0

我每天都收到一些我需要分开的短信。我有数百行类似于下面的摘录:

代码语言:javascript
复制
COMMODITY PRICE DIFFERENTIAL: FEB50-FEB40 (APR): COMPANY A OFFERS 1000KB AT $0.40

我需要从文本中提取单个片段,因此对于每个单独的单元格,我的结果需要日期、月份、公司、大小和价格。在这种情况下,结果将是:

代码语言:javascript
复制
FEB50-40
APR
COMPANY A
100
0.40

我正在努力解决的问题是一致性。例如,一行可能有FEB50-FEB40、另一个FEB5-FEB40FEB50-FEB4。另一个给我带来困难的例子是,一些行可能有'COMPANY A'和另一个'COMPANYA' (一个单词而不是两个)。

有什么想法吗?我一直在尝试下面的组合,但我不能得到一致的结果。

代码语言:javascript
复制
=TRIM(MID(SUBSTITUTE($D7," ",REPT(" ",LEN($D7))), (5)*LEN($D7)+1,LEN($D7))) 
=MID($D7,20,21-10)
=TRIM(RIGHT(SUBSTITUTE($D6,"$",REPT("$",2)),4))

有时我会

代码语言:javascript
复制
FEB40-50(' OR 'FEB40-FEB5' 

当它应该是

代码语言:javascript
复制
'FEB40-FEB50'`

感谢你能帮助我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-16 21:58:59

在这种情况下,您可能会达到公式的极限,但是使用Power Query,您仍然可以工作。

在我看来,您希望应用以下逻辑从该字符串中提取文本:

代码语言:javascript
复制
COMMODITY PRICE DIFFERENTIAL: FEB50-FEB40 (APR): COMPANY A OFFERS 1000KB AT $0.40

在第一个(

  • text之后和第一个AT

  • text之间的
  • 文本之间,在
  • 文本之间,在单词OFFERS之后,在AT
  • text之前,在‘AT`’

之后

这些可以很容易地转换成Power中的几个“拆分”场景。

由自定义分隔符(即冒号和空格)拆分的ocurrence

  • remove

  • (即冒号和空格),对于每个OFFERS

  • split第一列,

  • (拆分新的第一列--即空格和括号--用于leftmost

  • Replace ),第二列中没有任何内容,

  • 用分隔符拆分第三列,用分隔符AT

拆分第四列。

屏幕截图在重命名列和将查询加载到工作表之前,在Power编辑器中显示输入数据和结果。

加载查询后,可以在输入表中添加/删除数据,只需刷新查询即可获得结果。没有公式,只需点击带状命令。

您可以进一步从列中删除"KB“,将其转换为一个数字,再除以100。您的业务处理逻辑将驱动您想要做的事情。一步一步就行了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66232607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档