作者:绿色风
分类:
时间:2022-08-18
浏览:166
楼主 xyh9999 |
一、用VBA法求一个字符串中包含另一个字符串的个数:
- Function LqcOccu(cChar1, cSS)
- 'cSS中包含几个cChar1,区分大小写.当您需要不区分大小写时可将输入的2个参数都用Ucase()转成全大写输入即可.
- '例:? LqcOccu("lqc", "1234lqc456lqc789") 返回2
- Char1Len = Len(cChar1)
- If Char1Len = 0 Then
- LqcOccu = 0
- Exit Function
- End If
- Temp1 = Replace(cSS, cChar1, "")
- SsLen = Len(cSS)
- Temp1Len = Len(Temp1)
- LqcOccu = Round((SsLen - Temp1Len) / Char1Len, 0)
- End Function
二、用工作表函数法求一个字符串中包含另一个字符串的个数:
- =IF(LEN(B6)=0,0,(LEN(C6)-LEN(SUBSTITUTE(C6,B6,"")))/LEN(B6))
'即求C6中包含B6的个数
ET发贴20100802B.rar |
2楼 xyh9999 |
辛苦版主了,我不太会用后,以后要有什么不规范的还请您多多包函. |
3楼 gouweicao78 |
公式的:- =IF(B6="",0,(LEN(C6)-LEN(SUBSTITUTE(C6,B6,"")))/LEN(B6))
|
4楼 liuguansky |
两种方法得到的结果对重复文本默认设置是一样的: 比如查找aa在"?*aaaa*?"这样的文本中,两种方法的结果均只为2. 如果这个自定义函数能增加一个变量来设置是否对重复值的运算采用逐文本<即此例结果为3>还是舍文本<即例结果为2>判断就好了。 |
5楼 xyh9999 |
哈哈,没看太明白. |
6楼 xyh9999 |
那个逐文本的要求是不是附件中的这个意思?
Lqc20100802B逐文本与否.rar |
7楼 xyh9999 |
哈哈,在VBA中用Range("B6")=""来判断B6是否为空比用Len(Range("B6"))=0来判断B6是否为空所用的时间更长,在工作表函数中还不知道 =IF(B6="",0,(LEN(C6)-LEN(SUBSTITUTE(C6,B6,"")))/LEN(B6)) 与 =IF(LEN(B6)=0,0,(LEN(C6)-LEN(SUBSTITUTE(C6,B6,"")))/LEN(B6)) 哪个运行时间更长,我还没学会怎么来测试。 |
8楼 hyl_2010 |
Public Function 计数(r As Range, rr As Range) ' m = r.Value i = rr.Value For c = 1 To Len(i) If InStr(m, Mid(i, c, 1)) Then c1 = c1 + 1 End If Next 计数 = c1 End Function |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一