针对CSV文件的查找功能问题

时间:2010-10-15 09:20:07

标签: excel-vba vba excel

我在尝试找到一个长度等于或大于9位数的数字时遇到了一些问题。

我写了这个,如果数字小于9,它会选择它,否则它不会。

数字的格式如下1013617518

Sub LoopThroughDirectory()

Application.DisplayAlerts = False
Dim Ifind As String, rngData As Range
Dim rngFound As Range
Dim r As Long

MyPath = "C:/"
activefile = Dir(MyPath & "*.csv")
r = 1

Start:
If Range("A" & r) = "" Then
Exit Sub
End If

Application.ScreenUpdating = False

Do While activefile <> ""
    Ifind = Range("A" & r).Value
    Workbooks.Open Filename:=MyPath & activefile
    Set rngData = ActiveSheet.Range("B:B")
    Set rngFound = rngData.Find(Ifind, LookIn:=xlValues)

    ActiveWorkbook.Close

    If Not rngFound Is Nothing Then
            Range("B" & r) = activefile
            r = r + 1
            GoTo Start
    Else: Range("B" & r) = "Not Found"
    End If

    activefile = Dir()
    Range("A" & r).Select
Loop

Application.ScreenUpdating = True

r = r + 1
activefile = Dir(MyPath & "*.csv")
GoTo Start

Application.Display Alerts = True

End Sub

任何想法为什么它不能捡起它们并选择较短的数字将是很好的

1 个答案:

答案 0 :(得分:1)

将您的查找语句更改为

Set rngFound = rngData.Find(Ifind, LookIn:=xlFormulas)

由于9位数以上的数字通常以xEy表示法显示,除非您采取其他预防措施。在导入不包含“真实”公式的CSV时,这是安全的。

提示: 您是否在编码之前模拟了手工查找(即Ctrl-F)?它也不起作用,当CSV被正确地分成行并且你去“按值”搜索你的10位数字时,它确实可以“按公式”工作

祝你好运 拾音