文本分隔符的符号(怎样用分隔符连接文本)

我们经常会遇到要用逗号(或者其他连接符)连接文本,但是好像excel里并没有非常方便的连接文本的功能,我们来看下面一个简单的例子:

文本分隔符的符号(怎样用分隔符连接文本)(1)

我们想把A1:A3的文本字符串用逗号连接起来,只能用字符连接符&,如上面的B2的公式,而concatenate这个函数只能连接字符,不能用特定的符号连接,如果想连接的话,那只能把特定的符号写入单元格,然后在用concatenate函数,现在的问题是如果我们连接几个单元格字符还好,如果需要连接很多个单元格,再用这样的方法就很繁琐,效率低,就像下面的图片,根本停不下来。

文本分隔符的符号(怎样用分隔符连接文本)(2)

excel 没有方便的功能,我们只能通过vba开发一个自定义函数来满足我们特定的需求,则看下面的图片

完成了相同的连接功能,但是公式书写起来就方便了很多,没有那么麻烦,其中这个join函数就是我们自己开发的自定义函数

这个join函数是怎么实现的那?

我们来看下它的代码:

Option Explicit

Public Function Join(rng As Range, delimiter As String) As String

Dim cell As Range

For Each cell In rng

Join = Join & cell.Text & delimiter

Next cell

' 去掉最后1个分隔符

Join = Left(Join, Len(Join) - Len(delimiter))

看不懂没有关系,我们来庖丁解牛的讲解一下这个自定义的函数是怎么运作的.

Public Function Join(rng As Range, delimiter As String) As String

这个函数有2个参数,第一参数是单元格区域,第2个参数是字符分隔符,返回的结果就是用给定的字符分隔符连接所引用的单元格区域的文本。

下面的函数语句才是真正建立起我们想要的结果字符串

For Each cell In rng

这里我们主要通过循环单元格区域rng,把每一个文本用字符分隔符不断累加连接并返回join函数

Join = Join & cell.Text & delimiter

假如我们表格里有这样的3个文本:

A1 = one

然后像下面这样写join函数

=Join(A1:A3,",")

下面我们把每一步生成的结果分解一下:

A1

对于A1单元格来说, Join = "", cell.Text = "one", and delimiter = ",".

所以这行代码:

Join = Join & cell.Text & delimiter

变成了下面的结果:

Join = "" & "one" & ","

A2

现在语句的内容是, Join = "one,", cell.Text = "two", and delimiter = ",".

通过下一次的循环,变成了下面的结果,可以看到第一个和第二个文本连接起来了:

Join = "one," & "two" & ","

A3

第三次循环,生成了我们最终的想要的结果:

Join = "one,two," & "three" & ","

现在循环已经结束了,但得到的结果是 Join = "one,two,three,".

然而我们不想要最后一个逗号分隔符,所以我们必须想办法把它去掉,我们可以执行下面的语句来完成去掉最后一个逗号

Join = Left(Join, Len(Join) - Len(delimiter))

我们分别把相应的内容添加进去,效果如下:

Join = Left("one,two,three,", 14 - 1)

最后留个问题给大家思考一下,为什么不用

Join =Left(Join, Len(Join) – 1)?

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页