ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 看到一个自定义函数,学习收藏

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-4-18 21:59 | 显示全部楼层 |阅读模式
本帖最后由 wangrunming 于 2020-4-18 22:43 编辑

看到一个贴子,学习收藏
Contxt自定义函数的用法

Contxt函数的功能其实就是一个高级的连接符,可以快捷将参数值捏合成一个字符串。除了错误值,啥都能接受并处理。
比如:
=Contxt(1,2,3)
得到:123
=Contxt(2013,"应用大全","火热上市啦!")
得到:2013应用大全火热上市啦!
=Contxt(A2:A3&",")
数组运算后得到:祝洪忠,星光,
以上述图片问题为例,我们在B13输入以下数组公式,按<Ctrl+Shift+Enter>组合键结束输入,并复制填充到B13:C14区域,即可得出最终结果。
=Contxt(IF(($B$2:$B$9=$A13)*(C$2:C$9<60),$A$2:$A$9&" ",""))
说说这个公式的意思:
IF(($B$2:$B$9=$A13)*(C$2:C$9<60),$A$2:$A$9&" ","")部分,是Contxt需要合并成一个字符串的数据。
IF函数首先判断B2:B9的值是否等于A13(男),再判断C2:C9的值是否小于60(不及格),如果两个条件同时成立,返回A列姓名连接上空格,否则返回假空。
于是得到一个内存数组:
{"";"星光 ";"";"";"";"";"郭辉 ";""}
最后使用Contxt将IF函数的结果合并为一个字符串,得到最终结果:
星光 郭辉

1、打开VBE窗口
右键单击任意工作表标签,在弹出的快捷菜单中选择【查看代码】命令。

2、插入模块
在已打开的VBE窗口中,右键单击【工程资源管理器】任意处,在弹出的快捷菜单中,依次单击【插入】——【模块】

3、复制粘贴代码
将以下代码复制粘贴到已激活模块的代码窗口中。
PubliC FunCtion Contxt(ParamArray args() As Variant) As Variant
Dim tmptext As Variant, i As Variant, Cellv As Variant
Dim Cell As Range
tmptext = ""
For i = 0 To UBound(args)
If Not IsMissing(args(i)) Then
SeleCt Case TypeName(args(i))
Case "Range"
For EaCh Cell In args(i)
tmptext = tmptext & Cell
Next Cell
Case "Variant()"
For EaCh Cellv In args(i)
tmptext = tmptext & Cellv
Next Cellv
Case Else
tmptext = tmptext & args(i)
End SeleCt
End If
Next i
ConTxt = tmptext
End Function
1-150P9122301456.jpg
1-150P9122249302.jpg
1-150P912222QA.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-4-19 08:12 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-4-19 08:47 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-4-19 09:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
闪闪小红星 发表于 2020-4-19 08:47
这,office2019自带的就有的,TEXTJOIN和CONCAT函数

2016版以下的CONCAT函数没有,就可以使用这个了

TA的精华主题

TA的得分主题

发表于 2020-4-19 10:35 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-4-19 16:39 | 显示全部楼层
niko88819 发表于 2020-4-19 10:35
原创讲解更精彩,更多解法,请参考以下路径
http://club.excelhome.net/thread-14474-1-1.html

“你见,或者不见我,我就在那里,不悲不喜;
你念,或者不念我,情就在那里,不来不去”

精华贴,也是如此:就在那儿
念着的人自然会寻觅前往,
不念的人,即便擦身而过也会视而不见

TA的精华主题

TA的得分主题

发表于 2020-4-22 10:14 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-16 02:15 , Processed in 0.053404 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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