Excel精英培训网

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

[已解决]求帮写个提取包含指定条件数组的自定义函数代码

[复制链接]
发表于 2021-1-21 10:44 | 显示全部楼层 |阅读模式
A1-D1内4个数字不是固定的,有可能有的单元格为空,只有2个或3个数字;C1内数组也不是固定的,但不会为空。

从C1中提取包含A1-D1数字的数组到C6,要求A1-D1的数字只能是一个(重复的算一个)。

从C1中提取包含A1-D1数字的数组到C8,要求有A1-D1的任意两个数字(重复的算一个)。

从C1中提取包含A1-D1数字的数组到C10,要求有A1-D1的任意三个数字(重复的算一个)。


请老师帮忙用vba自定义函数帮写下代码,谢谢!

最佳答案
2021-1-21 15:23
Function demo(r1 As Range, r2 As Range, k As Integer)
   Dim arr: arr = r1
   For i = 1 To 4
      If arr(1, i) <> "" Then n = n + 2 ^ arr(1, i)
   Next
   s = r2.Value
   For i = 1 To Len(s)
      si = Mid(s, i, 1)
      If si = " " Then
         If cnt = k Then demo = demo & Mid(s, i - 4, 4) & " "
         v = 0: cnt = 0
      Else
         If (2 ^ si Or v) <> v Then
            If (2 ^ si Or n) = n Then cnt = cnt + 1
            v = v Or 2 ^ si
         End If
      End If
   Next
End Function

祝順心,南無阿彌陀佛!


1.rar

19.17 KB, 下载次数: 8

发表于 2021-1-21 15:23 | 显示全部楼层    本楼为最佳答案   
Function demo(r1 As Range, r2 As Range, k As Integer)
   Dim arr: arr = r1
   For i = 1 To 4
      If arr(1, i) <> "" Then n = n + 2 ^ arr(1, i)
   Next
   s = r2.Value
   For i = 1 To Len(s)
      si = Mid(s, i, 1)
      If si = " " Then
         If cnt = k Then demo = demo & Mid(s, i - 4, 4) & " "
         v = 0: cnt = 0
      Else
         If (2 ^ si Or v) <> v Then
            If (2 ^ si Or n) = n Then cnt = cnt + 1
            v = v Or 2 ^ si
         End If
      End If
   Next
End Function

祝順心,南無阿彌陀佛!


log.png

demo.rar

30.82 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2021-1-22 10:54 | 显示全部楼层
cutecpu 发表于 2021-1-21 15:23
Function demo(r1 As Range, r2 As Range, k As Integer)
   Dim arr: arr = r1
   For i = 1 To 4

谢谢版主大人,你一出手真是天下无敌
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 08:53 , Processed in 0.356527 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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