ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 提取达标记录,并以此为标准,提取同类记录,谢谢 ykcbf1100和chxw68、Qs18老师!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-9-10 15:47 | 显示全部楼层
原代码基础上改一下。

  1. Sub test()
  2.     Dim Arr2, ar, arr1()
  3.     Dim myr%, i%, j%, m%
  4.     Application.ScreenUpdating = False
  5.     Set d = CreateObject("Scripting.Dictionary")
  6.     With Sheet1
  7.         ar = Range("a1:d45")
  8.         ReDim arr1(1 To UBound(ar), 1 To 3)
  9.         ReDim brr(1 To UBound(ar), 1 To 4)
  10.         For i = 1 To UBound(ar)
  11.             If Val(ar(i, 4)) = 0 And Val(ar(i, 2)) > 4.5 Then
  12.                 m = m + 1
  13.                 arr1(m, 1) = ar(i, 1)  '代码
  14.                 arr1(m, 2) = ar(i, 3)  '行业
  15.                 arr1(m, 3) = ar(i, 2) '涨幅%
  16.                 d(CStr(arr1(m, 2))) = ""
  17.             End If
  18.         Next i
  19.         For i = 1 To UBound(ar)
  20.             s = ar(i, 3)
  21.             If d.exists(s) Then
  22.                 n = n + 1
  23.                 For j = 1 To UBound(ar, 2)
  24.                     brr(n, j) = ar(i, j)
  25.                 Next
  26.             End If
  27.         Next i
  28.         .Range("f2").Resize(m, 3) = arr1
  29.         .Columns(21).NumberFormatLocal = "@"
  30.         .Range("u2").Resize(n, 4) = brr
  31.     End With
  32.     Application.ScreenUpdating = True
  33.     'Beep
  34. End Sub
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-9-10 16:01 | 显示全部楼层

你要按需提取,必备提取明细,要不然怎么提取你需要的

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-10 16:09 | 显示全部楼层
ykcbf1100 发表于 2024-9-10 15:46
原代码小改一下。
原代码把B列为--也提取出来,是因为B列有文本,用ar(i,2)>4.5判断方式不对,
应该如此 ...

测试成功了,多谢老师!

TA的精华主题

TA的得分主题

发表于 2024-9-10 16:37 | 显示全部楼层
下雨消磨时间。

求助.rar

39.7 KB, 下载次数: 12

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-11 06:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-9-11 21:19 | 显示全部楼层
lhj323323 发表于 2024-9-10 15:17
老师:
下图里
两组蓝框,都是基于红框而生成的

哦,是一次性做完还是分两个步骤

TA的精华主题

TA的得分主题

发表于 2024-9-11 21:38 | 显示全部楼层
  1. Sub qs()
  2. Dim arr, i, a
  3. arr = Sheet1.Range("a1").CurrentRegion.Value
  4. ReDim crr(1 To UBound(arr), 1 To 3)
  5. For i = 2 To UBound(arr) '第一步提取D列为0,且B列>4.5的记录,并导入到F列
  6.    s = Val(arr(i, 2)): s2 = Val(arr(i, 4))
  7.     If s > 4.5 And s2 = 0 Then
  8.         n = n + 1
  9.         crr(n, 1) = arr(i, 1): crr(n, 2) = arr(i, 3): crr(n, 3) = arr(i, 2)
  10.     End If
  11. Next
  12. Sheet1.Range("j2").Resize(n, 3) = crr
  13. '第二步,再从A-D列提取C列是这3个(专用机械、医疗保键、化学制药)的记录,并导入到U列
  14. ReDim brr(1 To UBound(arr), 1 To 4)
  15. For i = 1 To n
  16.     For y = 2 To UBound(arr)
  17.         s = arr(y, 3)
  18.         If crr(i, 2) = s Then
  19.             m = m + 1
  20.             For x = 1 To 4
  21.                 brr(m, x) = arr(y, x)
  22.             Next
  23.         End If
  24.     Next
  25. Next
  26. Sheet1.Range("u19").Resize(m, 4) = brr '改成需要的位置
  27. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2024-9-11 21:39 | 显示全部楼层
试试。。。。。。。。

求助.rar

21.52 KB, 下载次数: 2

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-9-11 21:40 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-12 11:25 | 显示全部楼层
Qs18 发表于 2024-9-11 21:19
哦,是一次性做完还是分两个步骤

是一次性。                                 
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 23:30 , Processed in 0.046743 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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