在excel中拆分@

时间:2017-11-13 04:39:38

标签: excel

BOS @ TOR 11/10/2017美国东部时间下午7点 LA @ TB 11/10/2017美国东部时间下午7点

以上是我希望在@上拆分的数据,而不是让@显示在我的列中。 第一个是离开,第二个是家。

=LEFT(L2,FIND("@",L2)-1)
=RIGHT(L2,FIND("@",L2)*1)

它归国:TOR,离开:BOS。完善!与LA和TB相同。但如果它的BOS @ LA 它将返回HOME @LA和ROAD BOS。我怎样才能删除@而不管字符数是多少?

2 个答案:

答案 0 :(得分:0)

当你遇到类似的问题时,=RIGHT(L2,FIND("@",L2))的问题("乘以一个"是多余的,顺便说一下):

BIGSTRING@X

@的位置取决于BIGSTRING而不是X的长度。 @的位置为10,BIGSTRING@X的最右边十个字符 X,而是IGSTRING@X

这意味着它适用于类似XYZZY@PLUGH的内容(@两侧的大小相同),但 NINECHARS@FOUR(大小不同)。

第一次计算是正确的。对于第二次计算,您应该删除BIGSTRING@的大小以获得要在右侧提取的所需字符数:

=RIGHT(L2,LEN(L2)-FIND("@",L2))

如果Excel足够聪明,可以提供MID公式函数的变体,其中缺少长度意味着"取剩余的字符串" (VBA有),你也可以使用=MID(L2,FIND("@",L2)+1)

但是,由于公式MID似乎需要长度,我只是选择上面的RIGHT变体。

答案 1 :(得分:0)

我认为你对=RIGHT(L2,FIND("@",L2)-1)正在做的事情感到困惑(我假设你在这个公式上发了错误,因为你的问题中的一个不能给你你提到的结果)。 FIND("@",L2)获取字符串中第一个@的位置,RIGHT获取所提供字符串右侧的 n 个字符。你会注意到你的当前公式只有在@在一个位置给出一个长度相同的数字加上你要获得的部分时才会起作用。即BOS@TOR @在第4个位置,TOR长3个字符,LA@TB @在第3个位置,TB长2个字符。

提议的解决方案:

使用公式

=MID(L2,FIND("@",L2)+1,LEN(L2))

MID是一个类似于LEFTRIGHT的公式,但它只需要一个附加参数;字符串的长度。 FIND("@",L2)+1获取第一个@之后的下一个字符的位置,字符串的长度可以是至少等于您想要获得的字符串长度的任何内容(如果它是's}更大,它仍然很好。

以下是使用SUBSTITUTE的另一个选项,假设M2是存储HOME值的位置:

=SUBSTITUTE(L2,M2&"@","",1)

这取而代之的是原始文本,并删除随附的@符号中的空值。最后一个参数表示它只删除" Home + @"的第一个实例。 (如果你知道只有一个,你可以完全忽略最后一个参数,以便公式变为=SUBSTITUTE(L2,M2&"@","")

使用文字到列

选择列,然后点击选项' Text to Columns'在“数据”标签中,选择“分隔”'然后单击下一步:

enter image description here

取消选中所有内容,然后选中最后一个选项'其他',在框中输入@,然后点击下一步:

enter image description here

点击完成:

enter image description here

注意:此方法会覆盖原始文本,因此如果要保留原始文本,请先在新列中复制文本,然后在该列上拆分。