ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 如何使用UDF和SUB来统计每行数据系列和一个区域数据系列对比后的非公共数字的个数

如何使用UDF和SUB来统计每行数据系列和一个区域数据系列对比后的非公共数字的个数

作者:绿色风 分类: 时间:2022-08-18 浏览:84
楼主
xmyjk
Q:依次取H3h30区域内每个数字串,同C3c22单元格区域内所有数字串进行比较,求得C3c22内与该数字串不含公共数字的数字串个数。



A:UDF代码:
  1. Function diff(stra, target As Range)
  2. Dim arr, brr, i As Long, j As Long, n As Long, crr

  3. brr = target.Value
  4. arr = Split(stra, " ")

  5. For i = 1 To UBound(brr)
  6.    For j = 0 To UBound(arr)
  7.       crr = Filter(Split(brr(i, 1), " "), arr(j))
  8.       If UBound(Filter(Split(brr(i, 1), " "), arr(j))) >= 0 Then n = n + 1: Exit For
  9.    Next
  10. Next

  11. diff = UBound(brr) - n
  12. End Function


SUB代码:
  1. Sub diff1()
  2. Dim arr, brr, i As Long, j As Long, n As Long, n1 As Long, n2 As Long, crr, p As Long, drr, m As Long

  3. Range("k3:k30").Clear
  4. n1 = [h65536].End(3).Row
  5. n2 = [c65536].End(3).Row
  6. brr = Range("c3:c" & n2).Value
  7. arr = Range("h3:h" & n1).Value
  8. ReDim drr(1 To UBound(arr), 1 To 1)

  9. For p = 1 To UBound(arr)
  10.    For i = 1 To UBound(brr)
  11.       crr = Split(arr(p, 1), " ")
  12.       For j = 0 To UBound(crr)
  13.          If UBound(Filter(Split(brr(i, 1), " "), crr(j))) >= 0 Then n = n + 1: Exit For
  14.       Next
  15.    Next
  16.    drr(p, 1) = UBound(brr) - n: n = 0
  17. Next

  18. [k3].Resize(UBound(drr, 1), 1) = drr

  19. End Sub


过程+自定义函数后的程序.rar
2楼
海洋之星
弦月的VBA,太牛了

免责声明

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

评论列表
sitemap