Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2394|回复: 6

[已解决]用VBA数组for each 行与行循环比较几个数字

[复制链接]
发表于 2017-5-24 14:41 | 显示全部楼层 |阅读模式
本帖最后由 laoau138 于 2017-5-24 19:29 编辑

用VBA数组for each   行与行循环比较几个数字

最佳答案
2017-5-24 15:40
  1. Sub aaa()
  2. Dim i&, j&, k&, arr, brr, r&, c
  3. arr = Range("c6:h" & [c65536].End(3).Row)
  4. ReDim brr(1 To Application.Combin(UBound(arr), 2), 1 To 1)
  5. For i = 1 To UBound(arr) - 1
  6.   For k = i + 1 To UBound(arr)
  7.     For Each c In Application.Index(arr, i)
  8.       If Not IsError(Application.Match(c, Application.Index(arr, k), 0)) Then j = j + 1
  9.     Next c
  10.     r = r + 1
  11.     brr(r, 1) = j
  12.     j = 0
  13.   Next k
  14. Next i
  15. [i9].Resize(UBound(brr)) = brr
  16. End Sub
复制代码
用VBA数组for each   行与行循环比较几个数字.png

用VBA数组for each 行与行循环比较几个数字.rar

9.71 KB, 下载次数: 9

发表于 2017-5-24 15:40 | 显示全部楼层    本楼为最佳答案   
  1. Sub aaa()
  2. Dim i&, j&, k&, arr, brr, r&, c
  3. arr = Range("c6:h" & [c65536].End(3).Row)
  4. ReDim brr(1 To Application.Combin(UBound(arr), 2), 1 To 1)
  5. For i = 1 To UBound(arr) - 1
  6.   For k = i + 1 To UBound(arr)
  7.     For Each c In Application.Index(arr, i)
  8.       If Not IsError(Application.Match(c, Application.Index(arr, k), 0)) Then j = j + 1
  9.     Next c
  10.     r = r + 1
  11.     brr(r, 1) = j
  12.     j = 0
  13.   Next k
  14. Next i
  15. [i9].Resize(UBound(brr)) = brr
  16. End Sub
复制代码

评分

参与人数 3 +20 收起 理由
france723 + 8 来学习
周义坤 + 3 学习了
laoau138 + 9 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-5-24 19:29 | 显示全部楼层
回复

使用道具 举报

发表于 2017-5-24 20:40 | 显示全部楼层
楼上的将VBA跟函数相结合使用,得心应手,在下佩服
  1. Sub ek_sky()
  2. Dim arr As Variant, brr(1 To 10000, 1 To 1) As Variant
  3. Dim i As Integer, j As Byte, z As Integer, k As Byte
  4. Dim t As String, L As Byte
  5.   arr = Range("C6:H" & Cells(Rows.Count, 3).End(xlUp).Row)
  6.      For i = 1 To UBound(arr) - 1
  7.             t = ""
  8.           For j = 1 To UBound(arr, 2)
  9.             t = t & "," & arr(i, j)
  10.           Next j
  11.        For j = i + 1 To UBound(arr)
  12.           m = m + 1: L = 0
  13.          For k = 1 To UBound(arr, 2)
  14.            If t & "," Like "*," & arr(j, k) & ",*" Then
  15.              L = L + 1
  16.            End If
  17.          Next k
  18.          brr(m, 1) = L
  19.        Next j
  20.      Next i
  21. Range("I9").Resize(k, 1) = brr
  22. End Sub
复制代码

评分

参与人数 1 +9 收起 理由
laoau138 + 9 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-5-25 08:31 | 显示全部楼层
周义坤 发表于 2017-5-24 20:40
楼上的将VBA跟函数相结合使用,得心应手,在下佩服

你也是高手
回复

使用道具 举报

 楼主| 发表于 2017-5-25 08:41 | 显示全部楼层
回复

使用道具 举报

发表于 2017-5-25 14:27 | 显示全部楼层
周义坤 发表于 2017-5-24 20:40
楼上的将VBA跟函数相结合使用,得心应手,在下佩服

过奖了,我只是为了尽量按照用户的要求来写而已,让我自己写估计跟你的思路差不多。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 19:25 , Processed in 0.365854 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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