下面的代码为列表中的每个单元格(称为“ Splitcode”)制作了一个主表的副本,然后过滤了数据中的第一列(名为“ MasterData”)并删除了所有不包含“里面没有那个细胞。并循环直到为每个单元格创建一张图纸。
该代码可完美地用于column1和列表上的文本值。 但不适用于数值(例如帐号)。
有人告诉我应该添加一个CStr()函数,但是我以前从未使用过它,所以我不知道在哪里精确添加它。
Sub SplitandFilterSheet()
Dim Splitcode As Range
Sheets("Master").Select
Set Splitcode = Range("Splitcode")
For Each Cell In Splitcode
Sheets("Master").Copy After:=Worksheets(Sheets.Count)
ActiveSheet.Name = Cell.Value
With ActiveWorkbook.Sheets(Cell.Value).Range("MasterData")
.AutoFilter Field:=1, Criteria1:="<>" & Cell.Value,Operator:=xlFilterValues
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
ActiveSheet.AutoFilter.ShowAllData
Next Cell
End Sub
答案 0 :(得分:0)
考虑一下:CStr( expression )
Dim LValue As String
LValue = CStr(8)
LValue变量现在将包含字符串值“ 8”
我看到您在3个地方有Cell.Value
。另外,请查看此链接。
https://www.excel-easy.com/examples/number-text-filters.html
最后,您可能需要简化一些事情。如果您不想删除范围内的标题行,请在该范围内添加一个偏移量以排除该行:
ActiveSheet.Range("$A$1:$I$" & lines).Offset(1, 0).SpecialCells _
(xlCellTypeVisible).EntireRow.Delete