Я пытаюсь извлечь столбец буквенных кодов, используя 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):
Расширенные результирующие данные
Мне удалось массово отредактировать то, что мне было нужно. Надеюсь, это поможет лучше понять, что я собираюсь сделать.