如何将文本从字母数字值的Excel单元格导出到另一列?

我在B列有几个单元格条目。它们看起来类似于:

1050670||Target Optical 4226||6132||7132 1051752||Wal-Mart Vision Ctr 305095||6132||7132 1052470||Wal-Mart Vision Ctr 301891||6132||7132 1054354||Naval Ambulatory Care Ctr||6132||7132 

我需要一个只能提取包含名称的文本的公式。 理想情况下,它会看起来只有:

 Target Optical Wal-Mart Vision Ctr Wal-Mart Vision Ctr Naval Ambulatory Care Ctr 

任何帮助是极大的赞赏。

如果您想忽略Text伪字段中的数字,则必须严格parsingASCII 48-57中字符的拆分值。

仅文本解析

B1中那个丑陋的公式是,

 =TRIM(LEFT(MID(A1, FIND("||", A1)+2, FIND("¶", SUBSTITUTE(A1, "||", "¶", 2))-FIND("||", A1)-2)&0, MIN(INDEX(ROW(INDIRECT("1:"&LEN(MID(A1, FIND("||", A1)+2, FIND("¶", SUBSTITUTE(A1, "||", "¶", 2))-FIND("||", A1)-2)&0)))+((CODE(MID((MID(A1, FIND("||", A1)+2, FIND("¶", SUBSTITUTE(A1, "||", "¶", 2))-FIND("||", A1)-2)&0),ROW(INDIRECT("1:"&LEN(MID(A1, FIND("||", A1)+2, FIND("¶", SUBSTITUTE(A1, "||", "¶", 2))-FIND("||", A1)-2)&0))),1))<48)+(CODE(MID(UPPER(MID(A1, FIND("||", A1)+2, FIND("¶", SUBSTITUTE(A1, "||", "¶", 2))-FIND("||", A1)-2)&0),ROW(INDIRECT("1:"&LEN(MID(A1, FIND("||", A1)+2, FIND("¶", SUBSTITUTE(A1, "||", "¶", 2))-FIND("||", A1)-2)&0))),1))>57))*1E+99,,))-1)) 

根据需要填写。 尽pipe看起来很糟糕,但是中等数组公式中的计算负载会让它变矮,但是INDIRECT确实会使其变得不稳定,所以得到剥离值并复制,粘贴特殊值以删除公式。

如果其中一个条目在B1中,则使用公式

 =MID(B1,FIND("||",B1)+2,FIND("||",B1,FIND("||",B1)+2)-FIND("||",B1)-2) 

根据需要复制和粘贴。 注意相对/绝对参考。

当然,VBA还有其他的select,但是你特别要求一个公式。

如果您之后需要“||”之间的项目,我公布的公式可能会适应,但可能会变得非常繁琐。 VBA可以更简单。 或者你可以使用

 =MID(B1,FIND(CHAR(1),SUBSTITUTE(B1,"|",CHAR(1),(A6-1)*2))+1,FIND(CHAR(1),SUBSTITUTE(B1,"|",CHAR(1),A6*2))-FIND(CHAR(1),SUBSTITUTE(B1,"|",CHAR(1),(A6-1)*2))-2) 

这也很麻烦,但它适用于“任何”项目号(当然有一个上限,我没有testing)。 这是从这里改编的。 A6包含您要select的项目#。 在你的情况下,它是2.如果你把三,你获得“6132”你的第一行。 为了find第一个或最后一个项目,必须修改这个公式。

编辑 :这些公式不会删除目标字段结尾处的数字。 我错过了这一点,但我会留下答案,因为它可能对其他读者有用。 通过Jeeped查看解决scheme。