作者:白云飞羽_389 | 来源:互联网 | 2023-05-29 10:45
我想用9来将9列的值连接成1列 价值之间.问题是有些列对于某些行是空的,因此使用= CONCATENATE()函数非常难看,因为你需要检查= if(A2 =""; ...)每个9列.
有没有更聪明的方法在excel中组合这些多列,只使用其中包含值的单元格?也许使用VBA?
为了举例说明,该表看起来像:
| A | B | C | D | E | F | G | H | I |
|------+------+---+-------+---------+---+-----+-----+-----|
| lion | king | | | animals | | | | dog |
| lion | | | queen | | | cat | jet | |
1.行的输出应该是:"狮子|王|动物|狗"和2.行:"狮子|女王|猫|喷射"
有人可以帮忙吗?
非常感谢!
1> Sam..:
你可以使用一个简单的UDF:
Function MyConcat(ConcatArea As Range) As String
For Each x In ConcatArea: xx = IIf(x = "", xx & "", xx & x & "|"): Next
MyCOncat= Left(xx, Len(xx) - 1)
End Function
将上面的代码复制到标准代码模块中,并在工作表中使用,如下所示:
=MyConcat(A1:J1)
在没有使用凌乱的SUBSTITUTE/IF函数的情况下,实际上并没有使用工作表公式.
编辑(OP请求)
要删除重复项:
Function MyConcat(ConcatArea As Range) As String
For Each x In ConcatArea: xx = IIf(x = "" Or InStr(1, xx, x & "|") > 0, xx & "", xx & x & "|"): Next
MyCOncat= Left(xx, Len(xx) - 1)
End Function