Excel精英培训网

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

[已解决]谢谢sliang28老师。跨列提取包含单一指定关键词的所有记录

[复制链接]
发表于 2013-8-21 08:58 | 显示全部楼层 |阅读模式
本帖最后由 lhj323323 于 2013-8-21 11:03 编辑

老师:

跨列提取包含指定关键词的所有记录

在上传的附件中有详细的说明,请老师看看,先谢谢了

提取单一标准的记录.rar (48.04 KB, 下载次数: 13)
发表于 2013-8-21 09:51 | 显示全部楼层
你第一次点公司,查找到的华能,把华能的数据复制到表三,假如你第二次点公司,还是要复制华能的数据吗?
回复

使用道具 举报

 楼主| 发表于 2013-8-21 09:53 | 显示全部楼层
lyf7276 发表于 2013-8-21 09:51
你第一次点公司,查找到的华能,把华能的数据复制到表三,假如你第二次点公司,还是要复制华能的数据吗?

当我第二次点公司时,结果表的数据,除了标题行之外,其余内容已清空了。
回复

使用道具 举报

发表于 2013-8-21 10:00 | 显示全部楼层
意思是你第一次点公司时,得到 的是浦发银行的数据。你第二次点公司时,你是想得到哪的数据?是随机抽取性质为公司的数据,还是按顺序抽取,还是公司就只点一次了,以后再也不点了?
回复

使用道具 举报

 楼主| 发表于 2013-8-21 10:15 | 显示全部楼层
本帖最后由 lhj323323 于 2013-8-21 10:17 编辑
lyf7276 发表于 2013-8-21 10:00
意思是你第一次点公司时,得到 的是浦发银行的数据。你第二次点公司时,你是想得到哪的数据?是随机抽取性质 ...


我每一次双击一个单元格时,就是一次全新的操作,每一次操作提取的是【全部】符合条件的数据,都是导入到结果表的第二行起。

意思是第一次点公司时,得到 的是浦发银行的数据。当我第二次点公司时,如果浦发银行的数据仍然符合提取条件,就肯定要再次提取它,因为我第二次点公司时,原有的结果表数据已清空了,
不是随机抽取性质为公司的数据,是按顺序抽取,
sheet1表中的数据是可以重复点的。
回复

使用道具 举报

发表于 2013-8-21 10:31 | 显示全部楼层    本楼为最佳答案   
  1. Option Explicit

  2. Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  3. Dim arr0, i, j, k, Tempvalue, arr
  4. arr0 = Sheets("数据源").Range("B2:V407")
  5. ReDim arr(1 To UBound(arr0), 1 To UBound(arr0, 2))
  6. For i = 1 To UBound(arr0)
  7.     For j = 3 To UBound(arr0, 2) Step 3
  8.         If Replace(arr0(i, j), " ", "") = Replace(Target.Value, " ", "") Then
  9.             Tempvalue = Tempvalue + 1
  10.             For k = 1 To UBound(arr0, 2)
  11.                 arr(Tempvalue, k) = arr0(i, k)
  12.             Next k
  13.             Exit For
  14.         End If
  15.     Next j
  16. Next i
  17. Sheets("结果表").Range("B2:V407") = arr
  18. Range("A1").Select
  19. End Sub
复制代码
回复

使用道具 举报

发表于 2013-8-21 10:48 | 显示全部楼层
你看是这样的吗?

提取单一标准的记录.zip

96.4 KB, 下载次数: 11

回复

使用道具 举报

 楼主| 发表于 2013-8-21 10:48 | 显示全部楼层
suye1010 发表于 2013-8-21 10:31

老师:

不好意思,现在通过其它途径验证出有点不对

我以提取[资产管理公司]为例,按您写的语句,一共提取了五个公司,而实际上是应有15家公司,比如上海机杨、沧州大化等

点评

你的数据里面有些问题,应该先把数据的格式都统一好. 数据里面有多余的空格之类的. 如果格式不统一,处理起来总会有漏网之鱼的.  发表于 2013-8-21 11:24
回复

使用道具 举报

 楼主| 发表于 2013-8-21 11:06 | 显示全部楼层
lyf7276 发表于 2013-8-21 10:48
你看是这样的吗?

老师,您的版本高了哈,我打不开,能否将语句直接贴出来?
回复

使用道具 举报

发表于 2013-8-21 11:08 | 显示全部楼层
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 Then
xinzi = Target.Value
m = Sheets(3).Cells(Rows.Count, 2).End(xlUp).Row
Sheets(3).Rows("2:" & m + 1).Delete
n = Sheets(2).Cells.Find("*", , , , , xlPrevious).Row
For i = 2 To n
If Application.WorksheetFunction.IsError(Application.Match(xinzi, Sheets(2).Rows(i), 0)) = False Then
x = Sheets(3).Cells.Find("*", , , , , xlPrevious).Row
Sheets(2).Rows(i).Copy Sheets(3).Range("a" & x + 1)
End If
Next
End If
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 11:28 , Processed in 0.354379 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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