Excel宏转换单元格数据为多列



我在Excel中有一大堆单元格,看起来像这样:

FName LName, Loc JB

缩写是不好的,所以:First Name, Last Name, Location, Job.

我需要移动它使它看起来像这样:

FName LName || LOC || JB

事项:

  1. 必须去掉名称后面的,
  2. 必须大写位置(2或3个字母,不一致地大写)。
  3. JB的长度从1到4个字符不等。我只需要把最后一点倒进去。
  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))

在澄清逗号和空格后编辑。

相关内容

最新更新