Следующий код открывает CSV-файл, находит «Trimmed Mean» в col B, использует строку «Trimmed Mean» в качестве отправной точки для поиска следующего «NC», значение в столбце B и копирует значение одной ячейки справа от «NC» в рабочую книгу, из которой выполняется код (лист 1 col A).Копирование значений в другую книгу, если найден соответствующий текст
Проблема в том, что код работает, но значение не копируется на лист1. Это, наверное, только незначительная вещь, но я не могу понять, что это. Спасибо за вашу помощь.
Const delim = vbTab 'for TAB delimited text files
Sub ImportMultipleTextFiles()
Dim wb As Workbook
Dim sFile As Variant
Dim LastRow As Long
Dim rngCell As Range
Dim varMyItem As String
varMyItem = "NC"
sFile = Application.GetOpenFilename("Text Files (*.csv),*.csv", , "Please select text file...")
Set wb = Workbooks.Open(Filename:=sFile)
Application.ScreenUpdating = False
wb.Sheets(1).Select
LastRow = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row
Debug.Print "LastRow = " & LastRow
Set aCell = ActiveSheet.Range("B1:B" & LastRow).Find(What:="Trimmed Mean", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
Debug.Print "Trimmed Mean can be found in Row # " & aCell.Row
'wb.Sheets(1).Select
For Each rngCell In ActiveSheet.Range("B" & aCell.Row & ":B" & LastRow)
' Debug.Print ActiveSheet.Range("B" & aCell.Row & ":B" & LastRow)
If InStr(rngCell, "NC") > 0 Then
Debug.Print rngCell.Row
'
rngCell.Offset(0, 1).Copy Destination:=ThisWorkbook.ActiveSheet.Range("A" & ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row + 1)
Exit For
End If
Next rngCell
wb.Close SaveChanges:=False
Set wb = Nothing
Application.ScreenUpdating = True
End Sub
пребывания ** ** вдали от 'Select' и' ActiveSheet' в коде как можно больше (см [это] (http://stackoverflow.com/questions/10714251/how-to-avoid -при-выбрать-в-Excel-VBA-макросы)). Квалифицируйте все свои «Рабочие книги/Таблицы/Диапазоны», и ваш код, скорее всего, будет работать так гладко, как вам хочется. Эта строка, в частности, является реальной проблемой: 'ThisWorkbook.ActiveSheet.Range (« A »& ActiveSheet.Range (« A »& Rows.Count) .End (xlUp) .Row + 1)' –