ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 124|回复: 13

[求助] 按关键词,行号位置提取数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-10-4 13:36 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
要求:A,B列是数据源,D,E列是检索条件,G,H,I列是返回结果
怎么根据D,E列的检索条件,在A,B列里检索符合条件自动返回到G,H,I列
比如张三,2-21:意思就是检索A,B列的第2到21行返回到H,I列,然后2-21总共有20行,G列就返回20个张三
如果有重复的话需要删除,比如李四,19-25,因为张三已经有19,20,21行了,所以李四就要按22-25的算

_17280200112468.png

函数.zip

11.11 KB, 下载次数: 22

TA的精华主题

TA的得分主题

发表于 2024-10-4 14:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
供参考...
2024-10-04_140902.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-4 14:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

没有这个函数

TA的精华主题

TA的得分主题

发表于 2024-10-4 15:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

需要下载这个才能用
截屏2024-10-04 15.10.56.png

TA的精华主题

TA的得分主题

发表于 2024-10-4 15:52 | 显示全部楼层
本帖最后由 leepoison 于 2024-10-4 07:53 编辑
  1. =LET(a,DROP(REDUCE("",D1:D3,LAMBDA(x,y,VSTACK(x,VSTACK(IFNA(HSTACK(y,CHOOSEROWS(A:B,ROW(INDIRECT(SUBSTITUTE(OFFSET(y,,1),"-",":"))))),y))))),1),REDUCE({"姓名","号码","套餐"},UNIQUE(CHOOSECOLS(a,2)),LAMBDA(m,n,VSTACK(m,VSTACK(TAKE(FILTER(a,CHOOSECOLS(a,2)=n),1))))))
复制代码


image.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-4 16:06 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-10-4 16:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
a184218000 发表于 2024-10-4 08:06
太厉害了大神,结果是对的,但是我直接就看不懂了

看不懂也正常,到最后我自己都有点看不懂了。

TA的精华主题

TA的得分主题

发表于 2024-10-4 19:29 | 显示全部楼层
  1. Option Explicit
  2. Sub test()
  3.   Dim arr1, arr2, arr3, arr4(), x, k, y, z
  4.   Dim arr5(1 To 10000, 1 To 3), a, kk
  5.   arr1 = Range("A1").CurrentRegion
  6.   arr2 = Range("D1").CurrentRegion
  7.   For x = 2 To UBound(arr2)
  8.     arr3 = Split(arr2(x, 2), "-")
  9.     k = k + 1
  10.     ReDim Preserve arr4(1 To k)
  11.     arr4(k) = arr3(0)
  12.      k = k + 1
  13.     ReDim Preserve arr4(1 To k)
  14.     arr4(k) = arr3(1)
  15.   Next x
  16.   For y = 2 To UBound(arr4) - 1
  17.       If arr4(y + 1) < arr4(y) Then
  18.           arr4(y + 1) = arr4(y) + 1
  19.       End If
  20.   Next y
  21.   For z = 2 To UBound(arr2)
  22.      For a = arr4((z - 1) * 2 - 1) To arr4((z - 1) * 2)
  23.         kk = kk + 1
  24.         arr5(kk, 1) = arr2(z, 1)
  25.         arr5(kk, 2) = arr1(a, 1)
  26.         arr5(kk, 3) = arr1(a, 2)
  27.      Next a
  28.   Next z
  29.   [G2].Resize(kk, 3) = arr5
  30. End Sub
复制代码
QQ五笔截图未命名.jpg

函数.rar

16.64 KB, 下载次数: 0

TA的精华主题

TA的得分主题

发表于 2024-10-4 21:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
=DROP(HSTACK(REDUCE("",D1:D3,LAMBDA(x,y,VSTACK(x,TEXTSPLIT(REPT(y&"-",TEXTAFTER(OFFSET(y,,1),"-")*1-TEXTBEFORE(OFFSET(y,,1),"-")*1),,"-",TRUE)))),REDUCE("",E1:E3,LAMBDA(x,y,VSTACK(x,OFFSET(A1:B1,TEXTBEFORE(y,"-")*1-1,,TEXTAFTER(y,"-")*1-TEXTBEFORE(y,"-")*1))))),1)

image.png

写的老长了,有点不好意思发

TA的精华主题

TA的得分主题

发表于 2024-10-4 21:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
供参考...
2024-10-04_215720.jpg

点评

比我写的好多好,好思路,学习了,感谢  发表于 2024-10-5 05:19
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-10-5 08:29 , Processed in 0.037573 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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