【问题标题】:Extracting text in excel在excel中提取文本
【发布时间】:2021-02-16 21:42:32
【问题描述】:

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

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

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

FEB50-40
APR
COMPANY A
100
0.40

我正在努力解决的问题是一致性。例如,一行可能有FEB50-FEB40、另一行有FEB5-FEB40FEB50-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' 

应该是什么时候

'FEB40-FEB50'`

感谢能提供帮助的人。

【问题讨论】:

  • 您的问题和您的previous one 一样不清楚。为什么大小输出是 100 而不是 1000?
  • 所以如果 Date 总是在第一个冒号和第一个左括号之间,那么这个 sn-p 将返回日期: [=MID(LEFT(A1,FIND("(",A1)- 1),FIND(":",A1)+1,LEN(A1))]。创建类似的或其他的部分。调整空格。
  • @BigBen 大小无关紧要。 100 或 1000 是文本而不是数字,我只是对在单独的单元格中分离提取 100 感兴趣。

标签: excel parsing text trim left-recursion


【解决方案1】:

在这种情况下,您可能会遇到公式的限制,但使用 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 来进一步实现这一点。您的业务处理逻辑将推动您想要做的事情。一步一步来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 2016-08-26
    相关资源
    最近更新 更多