Excel formula 在文本字符串中的引号之前提取不同长度的文本,有时需要在字符串中包含多个实例(Excel)

Excel formula 在文本字符串中的引号之前提取不同长度的文本,有时需要在字符串中包含多个实例(Excel),excel-formula,excel-2007,Excel Formula,Excel 2007,在我想放在前面的描述末尾,我有大量的数据和各种测量值。由于长度不同,文本到列的转换将无法工作,而且我还无法找到如何获得mid/len/left/right/search组合以生成所需的结果 我的数据如下(一个单元格中的每一行): 三通黄铜2英寸 三通黄铜2英寸X 1英寸 三通黄铜3英寸X 2英寸 三通黄铜DWV 2“ 三通铜1英寸 铜三通1英寸X 1-1/2英寸 铜三通1-1/2英寸X 3/4英寸 我的最终目标是将所有测量值放在前面(仍然是一个单元格中的每一行): 2“三通黄铜 2“X 1”三通

在我想放在前面的描述末尾,我有大量的数据和各种测量值。由于长度不同,文本到列的转换将无法工作,而且我还无法找到如何获得mid/len/left/right/search组合以生成所需的结果

我的数据如下(一个单元格中的每一行):

三通黄铜2英寸
三通黄铜2英寸X 1英寸
三通黄铜3英寸X 2英寸
三通黄铜DWV 2“
三通铜1英寸
铜三通1英寸X 1-1/2英寸
铜三通1-1/2英寸X 3/4英寸

我的最终目标是将所有测量值放在前面(仍然是一个单元格中的每一行):

2“三通黄铜
2“X 1”三通黄铜
3“X 2”三通黄铜
2“三通黄铜DWV
1“三通铜
1“X 1-1/2”铜三通
1-1/2英寸X 3/4英寸铜三通

一旦分开,我就可以连接/串在一起,没有问题。我基本上只需要一种方法,将前面的所有内容“放在一个单独的列中,如果有2或3个实例”,我需要它们分别放在各自单独的列中,或者与任何其他度量值放在同一列中

我正在运行Excel2007(很快就会向老板要求更新版本…)


谢谢

此公式将根据需要解析数据:

=MID(A1,FIND("""",A1)-AGGREGATE(15,6,FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))/(FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))>0),1)+1,999) & " " & LEFT(A1,FIND("""",A1)-AGGREGATE(15,6,FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))/(FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))>0),1))
它将使用

AGGREGATE(15,6,FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))/(FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))>0),1)
然后在“单词”前面的空格处拆分字符串

然后使用
&
将这两个返回值连接起来


注:

这假设“测量”中都有

它还假设应该在找到
之前的第一个空格处进行拆分。因此
1-1/4”
将在
1-
1/4”之间的空格处进行拆分


对于2007年,您需要使用以下数组公式:

=MID(A1,FIND("""",A1)-SMALL(IF(FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))>0,FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))),1)+1,999) & " " & LEFT(A1,FIND("""",A1)-SMALL(IF(FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))>0,FIND("""",A1)-FIND("}}}",SUBSTITUTE(A1," ","}}}",ROW(INDIRECT("1:" & LEN(A1) - LEN(SUBSTITUTE(A1," ",""))))))),1))

作为数组公式,在退出编辑模式时需要使用Ctrl-Shift-Enter而不是Enter进行确认。如果操作正确,Excel将放入
{}
关于公式。

谢谢Scott。聚合函数是否仅在更高版本的excel中可用?我尝试了此方法,但在excel 2007中聚合没有提示。我已打电话升级到更现代的版本,希望这样,我可以使用您的解决方案。