ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何利用vba自定义多区域值合并的函数?

如何利用vba自定义多区域值合并的函数?

作者:绿色风 分类: 时间:2022-08-17 浏览:128
楼主
kevinchengcw
Q: 如何利用vba自定义多区域值合并的函数?
A: 代码如下:
  1. Function XX(Rng As String, Optional Seperator As String)  '定义函数,参数一是一个或多个区域地址的文本型字符串,参数二是可选参数,类型为文本型的连接间隔字符串
  2. Dim RA As Range, R As Range, Str$
  3. On Error GoTo Skip  '设置出错跳转
  4. Application.Volatile  '设置为易失性函数
  5. If IsMissing(Seperator) Then Seperator = ""  '如果分隔符未输入的话置为空值
  6. Str = ""   '初始化结果字符串
  7. For Each RA In Application.Caller.Parent.Range(Rng).Areas  '循环输入地址的各个区域
  8.     For Each R In RA.Cells  ’循环区域中的各个单元格
  9.         If R.Address = Range(Rng)(1).Address Then   '如果是整个区域中的第一个单元格,则将单元格的值赋值给变量
  10.             Str = R.Value
  11.         Else   '如果不是第一个单元格,则将单元格的值依分隔符分隔串接在变量后面
  12.             Str = Str & Seperator & R.Value
  13.         End If
  14.     Next R
  15. Next RA
  16. XX = Str   '返回结果字符串
  17. Exit Function   '正常退出函数
  18. Skip:  '出错时跳转至此
  19. XX = "Error"  '返回出错字符
  20. End Function
用法如下:
  1. =XX("单元格区域1,单元格区域2, ... ,单元格区域N"[, "分隔符"])
单元格区域地址用双引号括起来,不同的单元格区域之间用逗号分隔,分隔符可选,不写时默认是空字符""。
举例1:(指定区域内容将串接成一串)
  1. =("a1:c2,h2:n15,p1:p8")
举例2:(指定区域内容将以:分隔串接成一串
  1. =("a1:c2,h2:n15,p1:p8",":")
2楼
亡者天下
继续跟K哥学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap