Excel精英培训网

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

[已解决]分类过滤问题

[复制链接]
发表于 2017-7-18 13:43 | 显示全部楼层 |阅读模式
本帖最后由 mate33 于 2017-7-18 22:41 编辑

分类过滤问题
最佳答案
2017-7-19 11:04
以字为单位写的:
Sub test()
Dim ar1(), ar2()
s$ = [d1].Value
ar1 = [f1:f24].Value
ReDim ar2(1 To UBound(ar1), 1 To 1)
For Each stmp In ar1
    stmp2$ = Replace(stmp, " ", "")
    t% = 1
    Do While Len(stmp2)
        If InStr(s, Left(stmp2, 1)) < 1 Then
           t = 0
           stmp2 = ""
        Else
           stmp2 = Replace(stmp2, Left(stmp2, 1), "")
        End If
    Loop
    If t Then
       r = r% + 1
       ar2(r, 1) = stmp
    End If
Next
If r Then [l1].Resize(r, 1) = ar2
End Sub

分类过滤2.rar

8.67 KB, 下载次数: 5

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-7-19 09:24 | 显示全部楼层
是以词为单位还是以字为单位?你说的是字,可例好象是以词
回复

使用道具 举报

发表于 2017-7-19 11:04 | 显示全部楼层    本楼为最佳答案   
以字为单位写的:
Sub test()
Dim ar1(), ar2()
s$ = [d1].Value
ar1 = [f1:f24].Value
ReDim ar2(1 To UBound(ar1), 1 To 1)
For Each stmp In ar1
    stmp2$ = Replace(stmp, " ", "")
    t% = 1
    Do While Len(stmp2)
        If InStr(s, Left(stmp2, 1)) < 1 Then
           t = 0
           stmp2 = ""
        Else
           stmp2 = Replace(stmp2, Left(stmp2, 1), "")
        End If
    Loop
    If t Then
       r = r% + 1
       ar2(r, 1) = stmp
    End If
Next
If r Then [l1].Resize(r, 1) = ar2
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-1 07:08 , Processed in 0.134604 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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