在excel中提取文本

问题描述

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

!!python/object:networkx.classes.digraph.DiGraph
_adj: 
  a:
    b:
      name: ab
      field_1: test
      field_2: test
    c:
      name: ac
      field_1: test
      field_2: test
  b:
    c: 
      name: bc
      field_1: test
      field_2: test
_node: 
  a: 
    name: AAA
    field_1: test
  b: 
    name: BBB
    field_1: test
  c: 
    name: CCC
    field_1: test


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

commodity PRICE DIFFERENTIAL: FEB50-FEB40 (APR): COMPANY A OFFERS 1000KB AT $0.40

我正在努力解决的问题是一致性。例如,一行可能有 FEB50-40 APR COMPANY A 100 0.40 、另一行 FEB50-FEB40FEB5-FEB40。另一个让我感到困难的例子是某些行可能有 FEB50-FEB4 和其他 'COMPANY A'一个词而不是两个词)。

有什么想法吗?我一直在尝试以下组合,但无法获得统一的结果。

'COMPANYA'

有时我会

=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))

什么时候该

FEB40-50(' OR 'FEB40-FEB5' 

感谢能够提供帮助的人。

解决方法

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

如我所见,您希望应用以下逻辑从该字符串中提取文本:

COMMODITY PRICE DIFFERENTIAL: FEB50-FEB40 (APR): COMPANY A OFFERS 1000KB AT $0.40
  • 第一个 : 之后和第一个 ( 之前的文本
  • 括号内的文字
  • 在单词 OFFERS 之后和 AT 之前的文本
  • 'AT` 后的文本

这些可以很容易地转化为 Power Query 中的几个“拆分”方案。

  • 按自定义分隔符 : - 即冒号和空格 - 为每次出现分割
  • 删除第一列
  • ( 分割新的第一列 - 即空格和括号 - 用于最左边
  • 用第二列中的任何内容替换 )
  • 按分隔符 OFFERS 拆分第三列
  • 按分隔符 AT 拆分新的第四列

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

加载查询后,您可以在输入表中添加/删除数据,只需刷新查询即可获得结果。无需公式,只需点击功能区命令即可。

enter image description here

您可以通过从列中删除“KB”,将其转换为数字,再除以 100 来进一步进行此操作。您的业务处理逻辑将驱动您想要执行的操作。一步一个脚印。