Excel精英培训网

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

[已解决]求助/VB数据提取合并过滤

[复制链接]
发表于 2012-8-19 13:14 | 显示全部楼层 |阅读模式


                                            求助/VB数据提取合并过滤

                                             数据提取.zip (9.08 KB, 下载次数: 30)
发表于 2012-8-19 13:50 | 显示全部楼层
这个网站上还有好多问题没有人回答,其主要原因就是别人看不懂提问者的意图,话只说半句。
回复

使用道具 举报

 楼主| 发表于 2012-8-19 15:00 | 显示全部楼层
happym8888 发表于 2012-8-19 13:50
这个网站上还有好多问题没有人回答,其主要原因就是别人看不懂提问者的意图,话只说半句。

                                          happym8888 你好,麻烦帮解决下

               比如  A1是    ABCDEFG开心         提取/ 乐 前面3个数据 : 开心快
                        A2是    快乐happym8888   提取/ 乐 后面6个数据 : happym    合并成/ 开心快乐happym    过滤/相近的数据

回复

使用道具 举报

发表于 2012-8-19 15:00 | 显示全部楼层
怎么过滤的看不懂!!
回复

使用道具 举报

 楼主| 发表于 2012-8-19 15:27 | 显示全部楼层
zjdh 发表于 2012-8-19 15:00
怎么过滤的看不懂!!



                    喔,zjdh 你好:

                   过滤是 如果前面已经有        开心快乐happym     
                                     后面如果有        S apym 开EXCEL快乐心  !
   
                                     假如过滤条件输入是     7            就可以过滤         S apym 开EXCEL快乐心  !
                                    
                                      因为两者有8个相同的字符
回复

使用道具 举报

发表于 2012-8-19 16:21 | 显示全部楼层
  1. Sub 取值()
  2.     Dim arr, i&, j&, k$, arb, arc, l&, m&, n&, ard(1 To 10000, 1 To 1)
  3.     arr = Sheet1.Range("A1").CurrentRegion
  4.     For i = 1 To UBound(arr, 2)
  5.         For j = 1 To UBound(arr)
  6.             k = k & arr(j, i)
  7.         Next j
  8.     Next i
  9.     arb = (Len(k) - Len(Replace(k, "201S", ""))) / 4
  10.     arc = Split(k, "201S")
  11.     l = IIf(UBound(arc) > arb, arb, UBound(arc))
  12.     For m = 0 To l
  13.         n = n + 1
  14.         ard(n, 1) = Right(arc(m), 2)
  15.     Next m
  16.     With Sheets("提取")
  17.         .Range("B5:B10000").ClearContents
  18.         .Range("B5").Resize(n) = ard
  19.     End With
  20. End Sub
复制代码
数据提取.zip (19.25 KB, 下载次数: 27)

评分

参与人数 1 +1 收起 理由
L0VEEP + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-8-19 16:52 | 显示全部楼层
周义坤 发表于 2012-8-19 16:21



              版主/你好,不知为什么 201S  后面的数据没成功提取到F列  
回复

使用道具 举报

发表于 2012-8-19 16:53 | 显示全部楼层
                                 
回复

使用道具 举报

发表于 2012-8-19 17:10 | 显示全部楼层    本楼为最佳答案   
再试试:
  1. Sub 取值()
  2.     Dim arr, i&, j&, k$, arb, arc, l&, m&, n&, ard(1 To 10000, 1 To 2), are, V&, P&
  3.     arr = Sheet1.Range("A1").CurrentRegion
  4.     For i = 1 To UBound(arr, 2)
  5.         For j = 1 To UBound(arr)
  6.             k = k & arr(j, i)
  7.         Next j
  8.     Next i
  9.     arb = (Len(k) - Len(Replace(k, "201S", ""))) / 4
  10.     arc = Split(k, "201S")
  11.     l = IIf(UBound(arc) > arb, arb, UBound(arc))
  12.     For m = 0 To l
  13.         n = n + 1
  14.         ard(n, 1) = Right(arc(m), 2)
  15.     Next m
  16.     are = Split(Replace(k, "201S", "201S々"), "201S")
  17.     For V = 0 To UBound(are)
  18.         If InStr(are(V), "々") Then
  19.             P = P + 1
  20.             ard(P, 2) = Mid(are(V), 2, 3)
  21.         End If
  22.     Next V
  23.     With Sheets("提取")
  24.         .Range("B5:B10000").ClearContents
  25.         .Range("B5").Resize(n) = Application.Index(ard, 0, 1)
  26.         .Range("f5").Resize(n) = Application.Index(ard, 0, 2)
  27.     End With
  28. End Sub
复制代码
回复

使用道具 举报

发表于 2012-8-19 17:18 | 显示全部楼层
请看附件: 数据提取.zip (19.79 KB, 下载次数: 14)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 18:02 , Processed in 0.358414 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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