Excel精英培训网

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

[已解决]筛选后取值

[复制链接]
发表于 2014-9-30 11:40 | 显示全部楼层 |阅读模式
想实现:
1--从源数据中筛选出“部分”及“降期“的数据后,到第一个sheet中查找到
2--从第一个sheet中查到后,就复制插入整行至它的上一行。
下面代码只能定位到筛选后的第一个数据,第2行数据不知道怎么获取?


Sub test()
Dim id As String
Dim myrow As Integer
Dim x As Integer

Sheets("源数据").Activate
ActiveSheet.Range("A:N").AutoFilter Field:=14, Criteria1:=Array("部分", "降期"), Operator:=xlFilterValues
id = ActiveSheet.Range("C2:C10000").SpecialCells(xlCellTypeVisible).Value
Sheets("逾期明细表0925").Activate
myrow = Range("A:A").Find(id, LookIn:=xlValues).Row
Rows(myrow & ":" & myrow).Select
Selection.Copy
Selection.Insert shift = xlDown

End Sub

最佳答案
2014-9-30 14:16
  1. Sub test()
  2.     Dim arr, brr, i1%, i2&
  3.     Application.ScreenUpdating = False
  4.     arr = Sheet2.Range("A1").CurrentRegion.Value
  5.     For i1 = 2 To UBound(arr)
  6.         If arr(i1, 14) = "部分" Or arr(i1, 14) = "降期" Then
  7.             brr = Sheet1.Range("A1").CurrentRegion.Value
  8.             For i2 = UBound(brr) To 2 Step -1
  9.                 If arr(i1, 3) = brr(i2, 1) Then
  10.                      Sheet1.Rows(i2).Insert
  11.                      Sheet1.Rows(i2 + 1).Copy Sheet1.Rows(i2)
  12.                 End If
  13.             Next
  14.         End If
  15.     Next
  16.     Application.ScreenUpdating = True
  17. End Sub
复制代码

Test.rar

55.61 KB, 下载次数: 13

附件

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-9-30 13:29 | 显示全部楼层
  1. Sub test()
  2.     Dim arr, brr, i1%, i2&
  3.     Application.ScreenUpdating = False
  4.     arr = Sheet2.Range("N1:N" & Sheet2.Cells(Rows.Count, "N").End(xlUp).Row).Value
  5.     For i1 = 2 To UBound(arr)
  6.         If arr(i1, 1) = "部分" Or arr(i1, 1) = "降期" Then
  7.             brr = Sheet1.Range("Y1:Y" & Sheet1.Cells(Rows.Count, "Y").End(xlUp).Row).Value
  8.             For i2 = UBound(brr) To 2 Step -1
  9.                 If arr(i1, 1) = brr(i2, 1) Then
  10.                      Sheet1.Rows(i2).Insert
  11.                      Sheet2.Rows(i1).Copy Sheet1.Rows(i2)
  12.                 End If
  13.             Next
  14.         End If
  15.     Next
  16.     Application.ScreenUpdating = True
  17. End Sub
复制代码
不知道是不是这个意思,行比较多,有点卡哈
回复

使用道具 举报

 楼主| 发表于 2014-9-30 14:01 | 显示全部楼层

同时,第5列也要有相同的操作。

xdragon 发表于 2014-9-30 13:29
不知道是不是这个意思,行比较多,有点卡哈

谢谢,不过不是这个意思哦。
就是在“源数据”找到了第4&5两列符合了要求后,用C列的身份证号去第1个sheet中找,找到了的话就复制一条一样的数据:
如第4列的111111111身份证号码符合条件,到第1个sheet中找到第一个111111111在第14行,然后复制整个14行的数据插入到14行的上面。
EM截图_201493014148.png
回复

使用道具 举报

发表于 2014-9-30 14:16 | 显示全部楼层    本楼为最佳答案   
  1. Sub test()
  2.     Dim arr, brr, i1%, i2&
  3.     Application.ScreenUpdating = False
  4.     arr = Sheet2.Range("A1").CurrentRegion.Value
  5.     For i1 = 2 To UBound(arr)
  6.         If arr(i1, 14) = "部分" Or arr(i1, 14) = "降期" Then
  7.             brr = Sheet1.Range("A1").CurrentRegion.Value
  8.             For i2 = UBound(brr) To 2 Step -1
  9.                 If arr(i1, 3) = brr(i2, 1) Then
  10.                      Sheet1.Rows(i2).Insert
  11.                      Sheet1.Rows(i2 + 1).Copy Sheet1.Rows(i2)
  12.                 End If
  13.             Next
  14.         End If
  15.     Next
  16.     Application.ScreenUpdating = True
  17. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 03:31 , Processed in 0.293755 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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