Excel精英培训网

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

[已解决]根据条件做出筛选

[复制链接]
发表于 2015-4-11 00:06 | 显示全部楼层 |阅读模式
本帖最后由 zss7758258 于 2015-4-11 07:31 编辑

不包含方式的提取.png

包含方式的提取.png

根据 i 1 i 2 单元格的条件,做出筛选结果到E列,
请分别给出2个宏代码,
图片演示的是:筛选D2单元格到E2的结果
麻烦老师们了,谢谢

2种方式的提取.zip (164.37 KB, 下载次数: 9)
发表于 2015-4-11 01:04 | 显示全部楼层    本楼为最佳答案   
  1. Sub 不包含方式的提取()
  2.     Call 获取数据源("不包含方式的提取", False)
  3. End Sub

  4. Sub 包含方式的提取()
  5.     Call 获取数据源("包含方式的提取", True)
  6. End Sub

  7. Sub 获取数据源(SheetName As String, include As Boolean)
  8.     Dim raw As Variant
  9.     With Sheets(SheetName)
  10.         raw = .Range("D2:D" & .Cells(Rows.Count, 1).End(xlUp).Row).Value
  11.         .Range("E2").Resize(UBound(raw)).ClearContents
  12.         .Range("E2").Resize(UBound(raw)) = GetFilterString(raw, include, .Range("i1").Value, .Range("i2").Value)
  13.     End With
  14. End Sub

  15. Function GetFilterString(RawData As Variant, FilterString As Boolean, BeginStr As String, EndStr As String)
  16.     Dim i As Long
  17.     For i = 1 To UBound(RawData)
  18.         If InStr(RawData(i, 1), BeginStr) > 0 Then
  19.             If FilterString = False Then
  20.                 RawData(i, 1) = Split(Split(RawData(i, 1), BeginStr)(1), EndStr)(0)
  21.             Else
  22.                 RawData(i, 1) = BeginStr & Split(Split(RawData(i, 1), BeginStr)(1), EndStr)(0) & EndStr
  23.             End If
  24.         Else
  25.             RawData(i, 1) = ""
  26.         End If
  27.     Next
  28.     GetFilterString = RawData
  29. End Function
复制代码

2种方式的提取.zip

170.38 KB, 下载次数: 10

回复

使用道具 举报

 楼主| 发表于 2015-4-11 07:30 | 显示全部楼层
xdragon 发表于 2015-4-11 01:04

{:1612:}老师出手不凡,一击即中
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 09:09 , Processed in 0.278613 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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