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

时间:2015-01-02 18:50:44

标签: string excel formulas

我在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

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

如果您的某个条目位于B1中,请使用公式

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

根据需要复制并粘贴。注意相对/绝对引用。

当然,VBA还有其他选项,但您特别要求公式。

如果你需要在“||”之间的后续项目,我发布的公式可以调整,但它可能会变得非常麻烦。 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)

它也很麻烦,但它适用于“任何”项目编号(当然有一个上限;我没有测试它)。 这是here的改编。 A6包含您要选择的项目#。在你的情况下,它是2.如果你放三个,你的第一行得到“6132”。必须修改此公式,以便找到第一个或最后一个项目。

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

答案 1 :(得分:0)

如果要忽略Text伪字段中的数字,则必须仔细解析ASCII 48-57中字符的拆分值。

Text Only parsing

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

根据需要填写。虽然它看起来很糟糕,但是中等数组公式的计算负荷会使它变得相形见绌,但是INDIRECT确实使它变得不稳定,所以得到你的剥离值并复制,粘贴特殊值以删除公式。

答案 2 :(得分:0)

如果愿意,也可以使用以下公式。它不会使用间接功能

= MID(MID(A1,FIND(“ ||”,A1,1)+ 2,FIND(“ ||”,A1,FIND(“ ||”,A1,1)+2) -FIND(“ ||”,A1,1)-2),1,IF(ISNUMBER(VALUE(MID(SUBSTITUTE(MID(A1,FIND(“ ||”,A1,1)+ 2,FIND(“ | |“,A1,FIND(” ||“,A1,1)+2)-FIND(” ||“,A1,1)-2),”“,¶”,LEN(MID(A1,FIND( “ ||”,A1,1)+ 2,FIND(“ ||”,A1,FIND(“ ||”,A1,1)+2)-FIND(“ ||”,A1,1)-2) )-LEN(SUBSTITUTE(MID(A1,FIND(“ ||”,A1,1)+ 2,FIND(“ ||”,A1,FIND(“ ||”,A1,1)+2)-FIND( “ ||”,A1,1)-2),“”,“”)))),FIND(“¶”,SUBSTITUTE(MID(A1,FIND(“ ||”,A1,1)+ 2,FIND( “ ||”,A1,FIND(“ ||”,A1,1)+2)-FIND(“ ||”,A1,1)-2),“”,¶“,LEN(MID(A1, FIND(“ ||”,A1,1)+ 2,FIND(“ ||”,A1,FIND(“ ||”,A1,1)+2)-FIND(“ ||”,A1,1)- 2))-LEN(SUBSTITUTE(MID(A1,FIND(“ ||”,A1,1)+ 2,FIND(“ ||”,A1,FIND(“ ||”,A1,1)+2)- FIND(“ ||”,A1,1)-2),“”,“”))))+ 1,50)))= TRUE,FIND(“¶”,SUBSTITUTE(MID(A1,FIND(“ | |“,A1,1)+ 2,FIND(” ||“,A1,FIND(” ||“,A1,1)+2)-FIND(” ||“,A1,1)-2),” “,”¶“,LEN(MID(A1,FIND(” ||“,A1,1)+ 2,FIND(” ||“,A1,FIND(” ||“,A1,1)+2)- FIND(“ ||”,A1,1)-2))-LEN(SUBSTITUTE(MID(A1,FIND(“ ||”,A1,1)+ 2,FIND(“ ||”,A1,FIND(“ ||“,A1,1)+2)-FIND(” ||“,A1,1)-2),”“,”“)))))-1,50))