假设我有工作簿(Report.xlsx),并且在该工作簿中我有不同的工作表。在每个工作表中我都有一个列名 B_Code。使用 B_Code 中的过滤器,我想要一个包含每个工作表的单独工作簿。
正如在图片 1 中您可以看到 Sheet 1 有 B_Code。
现在我想要同一工作簿中工作表 1 和工作表 2 中 001 即 Ram 的数据作为文件名 001,以及另一个工作簿中工作表 1 和工作表 2 中 002 即 Hari 的数据作为文件名 002,依此类推。
有人能帮助我使用 VBA 解决这个问题吗?
答案1
rngCell
在开始删除之前,请保存文件的副本。然后,您可以使用 VBA 代码,当单元格 ( ) 的值不同于 001 或 B_Code 或为空白时,删除一行。
If rngCell.Value <> "001" _
And rngCell.Value <> "B_Code" _
And rngCell.Value <> "" _
Then
rngCell.EntireRow.Delete
End If
将该代码放入For
循环中以检查 A 列中的所有单元格。由于您要删除行,因此从最后一行开始循环,然后使用 向上移动Step -1
。查找最后一行 ( ) 的代码lngLastRowNumber
的解释如下查找范围内最后使用的单元格。
lngLastRowNumber = Cells(Rows.Count, "A").End(xlUp).row
For lngRowNumber = lngLastRowNumber To 1 Step -1
Set rngCell = Columns("A").Rows(lngRowNumber)
If rngCell.Value <> "001" _
And rngCell.Value <> "B_Code" _
And rngCell.Value <> "" _
Then
rngCell.EntireRow.Delete
End If
Next lngRowNumber
要删除每个工作表上的行,请将循环放在另一个For Each
工作表循环内。
发布您在编写和测试代码时遇到的任何问题。