白话Excel函数公式 Office易学宝微视频教程合集(Excel+Word+PPT)
笨办法学VBA(从入门到精通) 高效办公必会的Office实战技巧
财务总监的Excel私房课 Excel数据透视表实战秘技
Excel图表神技
查看: 1742|回复: 2

[函数公式] 自定义合并单元格文本函数

[复制链接]
发表于 2013-5-7 15:05:14 | 显示全部楼层 |阅读模式
  1. Public Function COMBINE(Target As Range, dot As String) As String
  2. Dim t$, rng As Range  
  3. t = "" '给文本赋一个空值
  4. For Each rng In Target '遍历选中的单元格
  5.     t = t & rng.Value & dot  '文本=文本+单元格内容+连接符
  6. Next rng
  7. COMBINE = t '返回结果
  8. End Function
复制代码

第一次发帖,技术水平不高,还望大家原谅。
excel自带的CONCATENATE函数与“&”连接符功能一样,而且不能多选单元格,基本是个废掉的功能。但是日常工作有时需要连接大量的文本,以前都是用函数+辅助列,然后一个个循环相连的,很不方便。
前几个星期刚刚买了本EH的《别怕,VBA其实很简单》,看完后然后自己试着做了一个自定义函数,见代码。
可以连接所选范围内所有字符,可以自定义分隔符。不过由于初学,还不知道怎么定义默认选项,所以不需要连接符时需要用“”来代替而不能省略。还望各位高手们多多指教!

回复

使用道具 举报

发表于 2013-5-9 09:19:14 | 显示全部楼层
应该稍微修改一下:
  1. COMBINE = VBA.Left(t, Len(t) - 1)  '返回结果
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-9 10:45:21 | 显示全部楼层
本帖最后由 pxiceplay 于 2013-5-9 16:35 编辑
岁月无恒 发表于 2013-5-9 09:19
应该稍微修改一下:

对哦,最后多了个分隔符号,多谢指导!

再次优化了一下:
[code=vb]Public Function COMBINE(Target As Range, dot As String) As String
Dim t$, rng As Range
t = ""
For Each rng In Target
    t = t & rng.Value & dot
Next rng
COMBINE = Left(t, Len(t) - Len(dot))
End Function[/code]

这样就不会因为分隔符的变化而导致误删或者少删了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 入学

本版积分规则

快速回复 返回顶部 返回列表