我在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
非常感谢任何帮助。
答案 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中字符的拆分值。
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))