【发布时间】:2016-06-17 04:30:45
【问题描述】:
我对 VBA 编程非常陌生,并试图在 excel 中编写 VBA 代码 此代码将按 Criteria1:="=*001" 过滤我的文件并将所有唯一值复制到名为 AV 的新工作簿并保存。现在,我还想将Criteria1:="<>*001" 的所有值复制到名为 LC 的新工作簿并保存。
这是我在这个网站上找到的代码并尝试对其进行修改,但不知道如何将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
感谢任何帮助。 谢谢
【问题讨论】:
-
您真的要遍历临时表 A 列中的所有行并在每次单元格 "" 时进行过滤吗?或者您是否只想过滤两次 - 一次用于
=*001和once for <>*001并创建两个工作簿?TempSheet是如何填充数据的?我在您的代码中看到的只是您添加了工作表,但它永远不会填充数据。 -
工作表“cal”中有什么?为什么要将 NRM_Homing_Upload.columns("H") 复制到 cal.columns("A"),然后从 cal.Columns("H") 中删除重复项?当您在 TempSheet 上运行 for 循环时,看起来您正在处理一张空工作表,因为您还没有在其中放入任何内容。如果您只有两组要查找的值,为什么要遍历 TempSheet 中的所有单元格?您的 with 语句的方式是自动过滤“NRM_Homing_Upload”,而不是临时表,这是您想要做的吗?
-
好的 - 但您只将 H 列从
NRM_Homing_Upload复制到TempSheet到 A 列。然后从 H 列中删除重复项?您的意思是从TempSheet的 A 列中删除欺骗。所以你的两个工作簿每个只有一列数据? -
嗨,斯科特,我想完全按照您的要求做,但我不知道该怎么做。此外,它不是“cal”它的模板。抱歉忘记改了。当我运行它时,它会填充数据并将其保存为 AV.xlsx。从工作表“NRM_Homing_Upload”中,它根据条件过滤列 H,并将所有列从 A 复制到 S 到具有过滤结果的新工作簿。
-
是的,它会从 TempSheet 的 A 列中删除重复项