Excel精英培训网

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

[已解决]求助:模糊查找有个问题要解决

[复制链接]
发表于 2010-2-22 13:00 | 显示全部楼层 |阅读模式
FCpcKlC3.rar (49.77 KB, 下载次数: 16)
发表于 2010-2-22 13:18 | 显示全部楼层    本楼为最佳答案   

猜了一个你的意思,估计是:

Sub 模糊查找()    '薄内快速模糊查找
    On Error Resume Next
    Dim Flag As Boolean, arr, I&, J&
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    With Sheets("基本信息输入")
        arr = .Range("A11:R" & .[A65536].End(xlUp).Row)
   End With
    With Sheets("电话簿")
            For I = LBound(arr) To UBound(arr)
            If arr(I, 1) = "" Then arr(I, 1) = arr(I - 1, 1)
            For J = 2 To UBound(arr, 2)
                If arr(I, J) Like "*" & .[E6].Value & "*" Then
                    Flag = True
                    Exit For
                Else
                    Flag = False
                End If
            Next
            If Not Flag Then arr(I, 1) = "=1/0"
        Next
        .[B9:M65536] = ""
        .[B9].Resize(UBound(arr), UBound(arr, 2)) = arr
        .[B9].Resize(UBound(arr), 1).SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Delete
    End With
    Application.EnableEvents = True
End Sub

PS:但我不认为这个是最好的

回复

使用道具 举报

发表于 2010-2-22 13:48 | 显示全部楼层

稍微简化了一下代码


Sub 模糊查找()    '薄内快速模糊查找
    On Error Resume Next
    Dim arr, I&, J&, N&
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    With Sheets("基本信息输入")
        arr = .Range("A11:R" & .[A65536].End(xlUp).Row)
    End With
    N = 9
    With Sheets("电话簿")
        .[B9:M65536].Clear
        For I = LBound(arr) To UBound(arr)
            If arr(I, 1) = "" Then arr(I, 1) = arr(I - 1, 1)
            For J = 2 To UBound(arr, 2)
                If arr(I, J) Like "*" & .[E6].Value & "*" Then
                    .Range("B" & N).Resize(1, UBound(arr, 2)) = WorksheetFunction.Index(arr, I, 0)
                    N = N + 1
                    Exit For
                End If
            Next
        Next
    End With
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub
回复

使用道具 举报

发表于 2010-2-22 14:37 | 显示全部楼层

应该是代码,我看不明白来学习
回复

使用道具 举报

发表于 2010-2-22 14:43 | 显示全部楼层

QUOTE:
以下是引用amulee在2010-2-22 13:48:00的发言:

稍微简化了一下代码


Sub 模糊查找()    '薄内快速模糊查找
    On
  Error
  Resume
  Next
    Dim arr, I&, J&, N&
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    With Sheets("基本信息输入")
        arr = .Range("A11:R" & .[A65536].End(xlUp).Row)
    End
  With
    N = 9
    With Sheets("电话簿")
        .[B9:M65536].Clear
        For I = LBound(arr) To
  UBound(arr)
            If arr(I, 1) = "" Then arr(I, 1) = arr(I - 1, 1)
            For J = 2 To
  UBound(arr, 2)
                If arr(I, J) Like "*" & .[E6].Value & "*" Then
                    .Range("B" & N).Resize(1, UBound(arr, 2)) = WorksheetFunction.Index(arr, I, 0)
                    N = N + 1
                    Exit
  For
                End
  If
            Next
        Next
    End
  With
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub

我把这代码替换原来的代码后,查询后,我把电话簿里的内容都清除了,再查应该是没有数据的,可单位地址后面的几个项目的数据不动了,前面查过的,一直保留下来了,何故?

[此贴子已经被作者于2010-2-22 14:47:11编辑过]
回复

使用道具 举报

发表于 2010-2-22 14:49 | 显示全部楼层

二楼的试过了,应该是楼主想要的吧?
回复

使用道具 举报

 楼主| 发表于 2010-2-23 07:17 | 显示全部楼层

QUOTE:
以下是引用fjmxwrs在2010-2-22 14:43:00的发言:

我把这代码替换原来的代码后,查询后,我把电话簿里的内容都清除了,再查应该是没有数据的,可单位地址后面的几个项目的数据不动了,前面查过的,一直保留下来了,何故?


把[B9:M65536].Clear改成[B9:S65536].Clear就可以了

回复

使用道具 举报

 楼主| 发表于 2010-2-23 07:21 | 显示全部楼层

QUOTE:
以下是引用amulee在2010-2-22 13:48:00的发言:

稍微简化了一下代码


Sub 模糊查找()    '薄内快速模糊查找
    On
  Error
  Resume
  Next
    Dim arr, I&, J&, N&
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    With Sheets("基本信息输入")
        arr = .Range("A11:R" & .[A65536].End(xlUp).Row)
    End
  With
    N = 9
    With Sheets("电话簿")
        .[B9:M65536].Clear
        For I = LBound(arr) To
  UBound(arr)
            If arr(I, 1) = "" Then arr(I, 1) = arr(I - 1, 1)
            For J = 2 To
  UBound(arr, 2)
                If arr(I, J) Like "*" & .[E6].Value & "*" Then
                    .Range("B" & N).Resize(1, UBound(arr, 2)) = WorksheetFunction.Index(arr, I, 0)
                    N = N + 1
                    Exit
  For
                End
  If
            Next
        Next
    End
  With
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub

谢谢!帮我简化代码。
回复

使用道具 举报

发表于 2010-2-24 04:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 18:01 , Processed in 0.278464 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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