我在Excel中有一大堆单元格,看起来像这样:
FName LName, Loc JB
缩写是不好的,所以:First Name, Last Name, Location, Job.
我需要移动它使它看起来像这样:
FName LName || LOC || JB
事项:
- 必须去掉名称后面的,
- 必须大写位置(2或3个字母,不一致地大写)。
- JB的长度从1到4个字符不等。我只需要把最后一点倒进去。
- 它们之间至少用一个空格隔开(第一个是逗号和空格)。
我想要一个宏来做这个,因为我必须相对频繁地做它,手工做200行是一种痛苦。任何帮助吗?
听起来您只需要在下一列中添加一个公式。如果您的值在以单元格A1开始的列A中,请尝试:
=LEFT(A1,FIND(",",A1)-1)&" || "&UPPER(MID(A1,FIND(",",A1)+2,FIND(" ",A1,FIND(",",A1)+2)-FIND(",",A1)-2))&" || "&RIGHT(A1,LEN(A1)-FIND(" ",A1,FIND(",",A1)+2))
这个公式取逗号左边的所有数并加上" || "
。然后查找下一个空格,从逗号后两个字符开始搜索。使用该索引,它可以提取位置并使其大写。然后再加入" || "
。知道了这个空间的索引,我们就可以抓住右边的所有东西来抓住任务。同样的逻辑可以应用于VBA,但这可能是一个更快的解决方案,更容易在计算机之间传递。
您不一定需要宏。你可以用一系列right()'s left()'s mid()'s和find()'s来做。还需要对loc使用Upper()
例如,如果您的数据在列A中,要在列B中获得姓和名的列,在B1中您可以使用:
=LEFT(A1,FIND(",",A1)-1)
这将返回直到但不包括逗号的所有内容。对于Loc,假设在C1中的Loc和JB之间有一个逗号,您将使用:
=UPPER(MID(A1,FIND(",",A1)+2,FIND(",",A1,FIND(" ",A1)+1)-FIND(" ",A1)-3))
这将返回字符串中间的大写版本,从第一个逗号后2个字符开始(因此您不会得到空格),并以小于第一个和第二个逗号之间的差2结束。如果没有逗号,您可以执行类似的搜索集来查找最后一个空格的位置。
最后一个IN d1是:
=RIGHT(A1,LEN(A1)-FIND(" ",A1,FIND(",",A1)+2))
在澄清逗号和空格后编辑。