VBA Точное совпадение текста - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь извлечь столбец буквенных кодов, используя InStr из существующих текстовых файлов. Я бы хотел, чтобы этот макрос был достаточно гибким, чтобы можно было вручную вводить искомый буквенный код.

Я сталкиваюсь с проблемой, когда в числовом коде есть общие цифры (т. Е. C4 и C45). Первоначально код был написан для поиска двух конкретных буквенных кодов, и я надеялся, что смогу заменить эти два идентификатора ссылкой на 2 ячейки.

Не повезло, я продолжаю получать ответы, которые не являются точными. Пожалуйста, смотрите код ниже:

Private Sub CmdLettersGetfile_Click()

Dim objFSO As Object
Dim myDir As String, myList()
Dim objFolder As Object
Dim objFile As Object
Dim i As Integer
Dim sFolder As String
Dim fd As Office.FileDialog

Dim row As Long
Dim row1 As Long
Dim FCount As Integer
Dim FCount1 As Integer
Dim Val As String

Dim Pos As Integer
Dim Last1 As Long  'Mark the last row
Dim Start2 As Long
Dim Last2 As Long  'Mark the last row
Set fd = Application.FileDialog(msoFileDialogFilePicker)

       For Each cn In ThisWorkbook.Connections
cn.Delete
Next cn


 With ActiveSheet
     Lastrow = Sheets("MAIN").Cells(.Rows.Count, "E").End(xlUp).row
End With
'
Worksheets("REPORT").Range("A6:AA1000000").ClearContents
Worksheets("REPORT").Range("A6:AA1000000").ClearFormats
row1 = 6  'Start of REPORT ROW

For row = 12 To Lastrow
sFile = Worksheets("MAIN").Cells(row, "E").Value


 Pos = InStr(1, sFile, "org")

 If Pos = 0 Then
 Val = Worksheets("MAIN").Cells(9, "H")
 Else
 Val = Worksheets("MAIN").Cells(10, "H")
 End If

 Pos = 0



Dim strFilename As String
Dim strTextLine As String
Dim iFile As Integer

iFile = FreeFile
strFilename = folderName & "\" & sFile
Open strFilename For Input As #iFile


Last1 = 0
Last2 = 0

Do Until EOF(1)
    Line Input #1, strTextLine
    FCount = FCount
    Pos = InStr(1, strTextLine, Val)

Я убрал часть ненужного кода, пытаясь сэкономить место и сосредоточиться на строках, где у меня возникла проблема.

******** Обновление (26 апреля 2018 @ 18:12 EST): Когда я попытался отформатировать Val в одну заглавную букву и 2 цифры

Dim Val As String: Val = "([A-Z]{1})([0-9]{1})([0-9]{1})"

Я получаю следующее:

Результирующие данные

Столбец I - это буквенный код, который мне нужно сузить.

********* Обновление 2 (27 апреля 2018 г., 14:37 EST):

Расширенные результирующие данные

Мне удалось массово отредактировать то, что мне было нужно. Надеюсь, это поможет лучше понять, что я собираюсь сделать.

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