|
优化数字字符串处理的代码.zip
(17.7 KB, 下载次数: 8)
运算规则是:以第一参数为准,1.按第三参数的指定字节,去除重复数字;2.去除与第二参数相重复的所有数字【至于附件里的被减数和减数,只是用于主次之分的说明罢了】。
有老师帮忙创建了一个ZFCXJS的自定义函数,可惜只能用普通公式输入。除了B28:G32中黄色填充的计算结果不对【应该按照I29的要求--当被减数与减数任何一列没有数据时,计算结果应该显示空白】外,其它的计算结果都正确!代码如下:
Function ZFCXJS(st1, st2, Optional n% = 1) As String
Set d = CreateObject("scripting.dictionary")
For i = 1 To Len(st1) - n + 1 Step n
d(Mid(st1, i, n)) = Mid(st1, i, n)
Next
For i = 1 To Len(st2) - n + 1 Step n
d(Mid(st2, i, n)) = ""
Next
ZFCXJS = Join(d.items, "")
End Function
需要优化的地方:
1.当第一参数或第二参数任何一项没有数据时,计算结果应该显示空白;
2.当数据量过大,达到几万行以后,运行速度就会大减。希望在数据量很大时,能够采取如I25所要求的:增加按区域数组公式输入的功能。如:选定C5:C10000,输入 { =ZFCXJS(A5:A10000,B5:B10000,1)
3.大多数情况下,第一参数都是一个固定数字【如A5:A24或E5:E24显示的那样】,只有第二参数区域内的数字不同。能不能让第一参数既可以设置为区域,又可以是指定数值【如"0123456789"或“0102030405060708091011”】,第二参数为区域输入区域数组公式{ =ZFCXJS("0123456789",B5:B10000,1) 进行计算?
恳请老师们帮助解决。
|
|