Excel精英培训网

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

[已解决]求助:依据某一条件,提取相关的行

[复制链接]
发表于 2016-8-23 20:35 | 显示全部楼层 |阅读模式
依据某一条件提取相关行.png

问题描述如上图所示。左边是原始的数据,右边是想要实现的效果,求高人出手相救

先谢过了!
最佳答案
2016-8-23 21:39
本帖最后由 Excel学徒123 于 2016-8-24 09:39 编辑

见下代码,具体见附件

  1. Option Explicit

  2. Sub test()
  3.     Dim arrSrc, arrRst()
  4.     Dim irow%, irow_1%, icol%, icnt%, icol_1%
  5.     arrSrc = Range("a2").CurrentRegion.Value
  6.     For irow = 3 To UBound(arrSrc)
  7.         If arrSrc(irow, 4) = 2221 And _
  8.             Month(arrSrc(irow, 1)) = 6 _
  9.                 And Year(arrSrc(irow, 1)) = 2016 Then
  10.                 For irow_1 = 3 To UBound(arrSrc)
  11.                     If arrSrc(irow, 1) = arrSrc(irow_1, 1) And _
  12.                             arrSrc(irow, 2) = arrSrc(irow_1, 2) And _
  13.                                 arrSrc(irow, 3) = arrSrc(irow_1, 3) Then
  14.                         icnt = icnt + 1
  15.                         ReDim Preserve arrRst(1 To 5, 1 To icnt)
  16.                         For icol_1 = 1 To 5
  17.                             arrRst(icol_1, icnt) = arrSrc(irow_1, icol_1)
  18.                         Next
  19.                     End If
  20.                 Next
  21.         End If
  22.     Next
  23.     Range("i13").Resize(UBound(arrRst, 2), 5) = Application.Transpose(arrRst)
  24. End Sub
复制代码
发表于 2016-8-23 20:47 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2016-8-23 21:10 | 显示全部楼层
请看附件~谢谢!

求助:依据某一条件提取相关行的信息.zip

8.3 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2016-8-23 21:10 | 显示全部楼层
Excel学徒123 发表于 2016-8-23 20:47
没有附件

请看附件~

求助:依据某一条件提取相关行的信息.zip

8.3 KB, 下载次数: 1

回复

使用道具 举报

发表于 2016-8-23 21:39 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Excel学徒123 于 2016-8-24 09:39 编辑

见下代码,具体见附件

  1. Option Explicit

  2. Sub test()
  3.     Dim arrSrc, arrRst()
  4.     Dim irow%, irow_1%, icol%, icnt%, icol_1%
  5.     arrSrc = Range("a2").CurrentRegion.Value
  6.     For irow = 3 To UBound(arrSrc)
  7.         If arrSrc(irow, 4) = 2221 And _
  8.             Month(arrSrc(irow, 1)) = 6 _
  9.                 And Year(arrSrc(irow, 1)) = 2016 Then
  10.                 For irow_1 = 3 To UBound(arrSrc)
  11.                     If arrSrc(irow, 1) = arrSrc(irow_1, 1) And _
  12.                             arrSrc(irow, 2) = arrSrc(irow_1, 2) And _
  13.                                 arrSrc(irow, 3) = arrSrc(irow_1, 3) Then
  14.                         icnt = icnt + 1
  15.                         ReDim Preserve arrRst(1 To 5, 1 To icnt)
  16.                         For icol_1 = 1 To 5
  17.                             arrRst(icol_1, icnt) = arrSrc(irow_1, icol_1)
  18.                         Next
  19.                     End If
  20.                 Next
  21.         End If
  22.     Next
  23.     Range("i13").Resize(UBound(arrRst, 2), 5) = Application.Transpose(arrRst)
  24. End Sub
复制代码

依据某一条件提取相关行的信息.rar

18.39 KB, 下载次数: 10

回复

使用道具 举报

 楼主| 发表于 2016-8-23 21:57 | 显示全部楼层
Excel学徒123 发表于 2016-8-23 21:39
见下代码,具体见附件

感谢老司机带飞!
回复

使用道具 举报

发表于 2016-8-23 22:07 | 显示全部楼层
gsmgreen 发表于 2016-8-23 21:57
感谢老司机带飞!

不谢,给个最佳就好了
回复

使用道具 举报

 楼主| 发表于 2016-8-23 22:13 | 显示全部楼层
Excel学徒123 发表于 2016-8-23 22:07
不谢,给个最佳就好了

如果想在不同的sheet中进行提取(比如以一个叫“sheet1”中的sheet作为),需要如何修改呢?是修改arrSrc = Range("a2").CurrentRegion.Value 这一句中的a2吗?
回复

使用道具 举报

 楼主| 发表于 2016-8-23 22:15 | 显示全部楼层
gsmgreen 发表于 2016-8-23 22:13
如果想在不同的sheet中进行提取(比如以一个叫“sheet1”中的sheet作为),需要如何修改呢?是修改arrSrc ...

刚才自己尝试出来了~是在a2前面加上sheet1!就行~
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 02:25 , Processed in 0.308585 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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