ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: micch

[分享] 写个文本合并函数练习,类似TEXTJOIN,老师们请勿笑话

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-3-25 16:34 | 显示全部楼层
和contxt 函数对比,有什么特点?

TA的精华主题

TA的得分主题

发表于 2019-3-25 16:45 | 显示全部楼层
我等啥都不会的,默默的看看就好,感觉脑袋也不够用,看半天都看不明白。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-25 17:13 | 显示全部楼层
zopey 发表于 2019-3-25 16:34
和contxt 函数对比,有什么特点?

没啥特点,就是练习着玩,可以合并字符串或者字符串数组。contxt我没用过,不懂

我没有新版本,所以不知道其他合并函数都有啥特点,每次遇到数字合并都是用sum+指数的方式合并,文本都是用辅助合并,所以写个自定义函数当textjoin用,其他合并函数我见都没见过

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-25 17:20 | 显示全部楼层
静看流年RSSQ 发表于 2019-3-25 16:45
我等啥都不会的,默默的看看就好,感觉脑袋也不够用,看半天都看不明白。

呃,我这已经是最初级的人了,就是自定义函数,可以启用宏,插入模块,然后把代码复制到模块里,当sum,max一样用的函数。

TA的精华主题

TA的得分主题

发表于 2019-3-25 17:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
micch 发表于 2019-3-25 17:13
没啥特点,就是练习着玩,可以合并字符串或者字符串数组。contxt我没用过,不懂

我没有新版本,所以不 ...

百度 “contxt” 都能找到 vba代码,老早就有了,非常经典的自定义函数。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-25 17:28 | 显示全部楼层
zopey 发表于 2019-3-25 17:21
百度 “contxt” 都能找到 vba代码,老早就有了,非常经典的自定义函数。

呃,找到了,我都看不懂contxt的代码。好像写的更全面一些,做了判断,我写的太简陋,没做判断,直接合并。确实不懂代码里变量属性的问题。等再学多点了,重新完善一下

TA的精华主题

TA的得分主题

发表于 2019-3-25 19:06 | 显示全部楼层
本帖最后由 Datous 于 2019-3-25 21:55 编辑
micch 发表于 2019-3-25 13:33
多谢,我也想可以省略参数来着,不过提示paramarray不能使用optional,这个不懂,所以只好先弄成参数不可 ...

我也凑凑热闹。

  1. Function StringsJoin(ParamArray MArray() As Variant) As String
  2. Dim strDelimit$, vntData, A
  3. Dim bytStart As Byte, strJoin$
  4. If UBound(MArray) = -1 Then
  5.     Exit Function
  6. Else
  7.     If Not IsArray(MArray(0)) Then
  8.         If UBound(MArray) = 0 Then Exit Function
  9.         strDelimit = MArray(0)
  10.         bytStart = 1
  11.     Else
  12.         strDelimit = " "
  13.         bytStart = 0
  14.     End If
  15.     On Error Resume Next
  16.     For A = bytStart To UBound(MArray)
  17.         For Each vntData In MArray(A)
  18.             strJoin = strJoin & strDelimit & vntData
  19.         Next
  20.     Next
  21. End If
  22. StringsJoin = Mid(strJoin, Len(strDelimit) + 1, Len(strJoin))
  23. End Function
复制代码

评分

6

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-25 19:22 | 显示全部楼层
ParamArray原来是这个意思,空的时候就对应 -1 吗??单个区域就是一个数组(1),多个区域就是数组(0,1,2....)  ????

了解了,多谢,我这半吊子看代码都看的费劲,on error 不会用。

最后mid(   , 2  这里从第二个字符开始截取,会把 “没有数据”的“没”字去掉,应该修正一下

TA的精华主题

TA的得分主题

发表于 2019-3-25 19:42 | 显示全部楼层
micch 发表于 2019-3-25 19:22
ParamArray原来是这个意思,空的时候就对应 -1 吗??单个区域就是一个数组(1),多个区域就是数组(0,1,2... ...

叫你说的,我也比较菜。

TA的精华主题

TA的得分主题

发表于 2019-3-25 21:37 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 16:07 , Processed in 0.033372 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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