2010-10-15 1 views
0

У меня есть несколько проблем с попыткой найти число, которое имеет длину, равную или большую, длиной 9 цифр.Проблема с функцией поиска против файлов CSV

Я написал это, и если число меньше 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 

Любые идеи, почему оно не поднимая их вверх и pickign вверх короткие номера было бы здорово

+0

есть вы использовали отладчик для выполнения кода? – bugtussle

+0

Удалите приложение.DisplayAlerts = False и посмотрите, есть ли скрытое сообщение –

+0

. Ошибок пока нет. что происходит, если число, которое он ищет, составляет менее 9 цифр, поэтому 1029282, то оно найдет его (если оно находится в filse), но оно больше, чем 9, даже если оно находится в файле, который он говорит, не найден –

ответ

1

Измени найти заявление

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

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

Подсказка: Вы моделировали свой поиск вручную (т. Е. Ctrl-F) перед кодированием? Она не работает, либо, когда CSV правильно разбить на строки, и вы идете искать для вашего 10-значного номера «по значению», но это действительно работает «Формула»

Удачи MikeD

Смежные вопросы