问题描述
我每天都会收到一些需要分开的文本。我有数百行类似于下面的摘录:
!!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-FEB40
或 FEB5-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 编辑器中的输入数据和结果。
加载查询后,您可以在输入表中添加/删除数据,只需刷新查询即可获得结果。无需公式,只需点击功能区命令即可。
您可以通过从列中删除“KB”,将其转换为数字,再除以 100 来进一步进行此操作。您的业务处理逻辑将驱动您想要执行的操作。一步一个脚印。