Проблема с функцией поиска по файлам CSV - PullRequest
0 голосов
/ 15 октября 2010

У меня есть несколько проблем с попыткой найти число, длина которого равна или больше, чем длина 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 Ответ

1 голос
/ 18 октября 2010

Измените оператор поиска на

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

, так как числа выше 9 цифр обычно отображаются в записи xEy, если вы не примете дополнительные меры предосторожности.Здесь это безопасно, поскольку вы импортируете CSV, который не содержит «настоящих» формул.

подсказка: моделировали ли вы Find вручную (т.е. Ctrl-F) перед кодированием?Это также не работает, когда CSV правильно разделен на строки и вы ищете свой 10-значный номер «по значению», но он работает «по формуле»

Удачи MikeD

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...