Я очень новичок в программировании VBA и пытаюсь написать код VBA в excel. Этот код будет фильтровать мой файл на Criteria1:="=*001"
и скопировать все уникальное значение в новую книгу с именем AV и сохранить его. Теперь я также хочу скопировать все значения, где Criteria1:="<>*001"
в новую книгу с именем LC и сохранить ее.Excel VBA Macro, чтобы отфильтровать файл и скопировать его на новую книгу
Вот код, который я нашел на этом сайте, и попытался его изменить, но не уверен, как использовать ELSE
для Criteria1:="<>*001"
.
Sub sort()
On Error Resume Next
Application.DisplayAlerts = False
Dim new_book As Workbook
Dim newsheet As Worksheet
With ThisWorkbook.Sheets("NRM_Homing_Upload") 'Replace the sheet name with the raw data sheet name
Set newsheet = ThisWorkbook.Sheets("TempSheet")
If newsheet Is Nothing Then
Worksheets.Add.Name = "TempSheet"
Else
ThisWorkbook.Sheets("TempSheet").Delete
Worksheets.Add.Name = "TempSheet"
End If
.Columns("H").Copy
With ThisWorkbook.Sheets("cal")
.Range("A1").PasteSpecial (xlPasteAll)
.Columns("H").RemoveDuplicates Columns:=1, Header:=xlYes
End With
For Each cell In ThisWorkbook.Sheets("TempSheet").Columns("a").Cells
i = i + 1
If i <> 1 And cell.Value <> "" Then
.AutoFilterMode = False
.Rows(1).AutoFilter field:=8, Criteria1:="=*001"
Set new_book = Workbooks.Add
.UsedRange.Copy
new_book.Sheets(1).Range("a1").PasteSpecial (xlPasteAll)
'new_book.SaveAs Filename:=ThisWorkbook.Path & "\" & cell.Value & ".xlsx"
new_book.SaveAs Filename:="C:\Desktop\excel\test\AV.xlsx"
new_book.Sheets(1).UsedRange.Columns.AutoFit
new_book.Save
new_book.Close
End If
Next cell
ThisWorkbook.Sheets("TempSheet").Delete
End With
End Sub
Любая помощь приветствуется. Благодаря
Вы действительно хотите, чтобы перебрать все строки в колонке А темп листа и фильтровать каждый раз, когда клетка <> «»? Или вы просто хотите отфильтровать дважды - один раз для '= * 001' и' once for <> * 001' и создать две книги? И как «TempSheet» заполняется данными? Все, что я вижу в вашем коде, это то, что вы добавляете лист, но он никогда не заполняет данные. –
Что находится на листе «cal»? почему вы копируете NRM_Homing_Upload.columns («H») в cal.columns («A»), а затем удаляете дубликаты из cal.Columns («H»)? когда вы запускаете цикл for по TempSheet, похоже, что вы работаете с пустым листом, так как вы еще ничего не вкладывали в него. Почему вы зацикливаете все ячейки в TempSheet, если у вас есть только два набора значений, которые вы ищете? Как вы с заявлениями, вы autofiltering «NRM_Homing_Upload», а не tempsheet, это то, что вы пытаетесь сделать? – neuralgroove
okay - но вы только скопируете столбец H из 'NRM_Homing_Upload' в' TempSheet' в столбец A. Затем вы удаляете дубликаты из столбца H? Вы хотите удалить обманы из столбца A в 'TempSheet'. Итак, ваши две книги будут иметь только один столбец данных? –