ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何返回单元格不按顺序匹配与否结果?

如何返回单元格不按顺序匹配与否结果?

作者:绿色风 分类: 时间:2022-08-17 浏览:90
楼主
liuguansky
Q:如何在三个单元格中查找三个单元格的内容,要一个单元格匹配一个单元格,但是不论顺序,可以匹配的返回"组",不能匹配的返回空?
A:用如下自定义函数代码可以实现:

  1. Function ZZu(rng1 As Range, rng2 As Range) As String
  2.   Application.Volatile
  3.   Dim arr1, arr2, i%, j%, arr0
  4.   ZZu = ""
  5.   arr0 = Array("1,2,3", "1,3,2", "2,1,3", "2,3,1", "3,1,2", "3,2,1")
  6.   If rng1.Count = rng2.Count And rng1.Count = 3 Then
  7.     arr1 = rng1.Value
  8.     arr2 = rng2.Value
  9.     For i = 0 To 5
  10.       arr = Split(arr0(i), ",")
  11.       s = 0
  12.       For j = 1 To 3
  13.         If arr2(1, CInt(arr(j - 1))) Like "*" & arr1(1, j) & "*" Then s = s + 1
  14.       Next j
  15.       If s = 3 Then ZZu = "组": Exit For
  16.     Next i
  17.   End If
  18. End Function


或者:

  1. Function Zu(rng1 As Range, rng2 As Range) As String
  2.   Application.Volatile
  3.   Dim arr1, arr2, arrt() As Integer, i%, j%, arrm() As Integer, arrn() As Integer
  4.   Zu = ""
  5.   If rng1.Count = rng2.Count And rng1.Count = 3 Then
  6.     arr1 = rng1.Value: arr2 = rng2.Value
  7.     ReDim arrt(1 To 3, 1 To 3)
  8.     For i = 1 To 3
  9.       For j = 1 To 3
  10.         If arr2(1, j) Like "*" & arr1(1, i) & "*" Then
  11.           arrt(i, j) = 1
  12.           Else: arrt(i, j) = 0
  13.         End If
  14.     Next j, i
  15.     ReDim arrm(1 To 3): ReDim arrn(1 To 3)
  16.     For i = 1 To 3
  17.       arrm(i) = Application.Sum(Application.Index(arrt, 0, i))
  18.     Next i
  19.     For i = 1 To 3
  20.       arrn(i) = Application.Sum(Application.Index(arrt, i, 0))
  21.     Next i
  22.     If Application.Min(Application.Min(arrm), Application.Min(arrn)) > 0 Then Zu = "组"
  23.   End If
  24. End Function
2楼
kevinchengcw
收下了,楼主继续加油!

免责声明

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

评论列表
sitemap